[vb]弧长自动标注程序
yfy2003
yfy2003 Lv.11
2004年09月13日 20:06:07
只看楼主

运用圆弧的4个属性,弧长、起点、中点、终点,通过改变3点法标注圆弧角度对象的TextOverride属性值,用弧长值代替角度值来实现弧长的自动标注。Public AcadUtil As ObjectPublic Mospace As ObjectPublic AcadDoc As ObjectDim acadApp As AcadApplicationPrivate Sub fcbz_Click()

运用圆弧的4个属性,弧长、起点、中点、终点,通过改变3点法标注圆弧角度对象的TextOverride属性值,用弧长值代替角度值来实现弧长的自动标注。


Public AcadUtil As Object
Public Mospace As Object
Public AcadDoc As Object
Dim acadApp As AcadApplication

Private Sub fcbz_Click()
Dim Arc As AcadArc
Dim BasePnt As Variant
Dim returnObj As AcadEntity
Err.Clear
On Error Resume Next

’选择圆弧
AcadUtil.GetEntity returnObj, BasePnt, "选择需标注的圆弧:"
returnObj.color = acRed
returnObj.Update

Do Until returnObj.ObjectName = "AcDbArc"

Err.Clear

MsgBox "你选择的对象是:" & returnObj.EntityName & "请继续选择", , "圆弧标注"
returnObj.coloc = rcByLayer
returnObj.Update

AcadUtil.GetEntity returnObj, BasePnt, "选择需标注的圆弧:"
returnObj.color = acRed
returnObj.Update
Loop

’获取圆弧的属性
Dim Leng As Double
Dim Spnt As Variant
Dim Epet As Variant
Dim Cpnt As Variant

Leng = returnObj.ArcLength
Spnt = returnObj.StartPoint
Epnt = returnObj.EndPoint
Cpnt = returnObj.Center

’选择标注位置
Dim PentforDim As Variant

PentforDim = AcadUtil.GetPoint(, "选择标注位置:")

’对圆弧进行角度标注
Dim dimAng As AcadDim3PointAngular
Set dimAng = Mospace.AddDim3PointAngular(Cpnt, Spnt, Epnt, PentforDim)
dimAng.TextHeight = 2

’更改角度标注的文字为弧长
dimAng.TextOverride = Format(Leng, "0.000")
returnObj.coloc = rcByLayer
returnObj.Update
Set acadApp = Nothing
Set aAcadDoc = Nothing
End Sub





’连接cad
Private Sub Form_Load()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
End If
Set AcadDoc = acadApp.ActiveDocument
Set Mospace = AcadDoc.ModelSpace
Set AcadUtil = AcadDoc.Utility
acadApp.Visible = acTrue
End Sub

免费打赏
zhishuixin
2004年10月27日 19:08:00
2楼
可惜我对编程一窍不通!
:(:(
否则我就可以把弧长标注在图上了!
很感激你,我会努力去学的!
回复
bt
2004年11月08日 15:10:57
3楼
yfy2003真的是vba、lisp、arx兼修啊,这种标注是由手动标注弧长转变来的吧,呵呵
好东西,收藏了
回复
风车车
2004年11月10日 22:50:28
4楼
不知道楼主的东西该怎么掉用呢,偶对vb点都不懂,但想用楼主的好东东,help
回复
bt
2004年11月11日 08:45:44
5楼
这是mjtd的作品,直接在vba运行,思路是一样的
Sub DimArcLeng()
Dim Arc As AcadArc
Dim Pnt As Variant
Err.Clear
On Error Resume Next

’选择圆弧
ThisDrawing.Utility.GetEntity Arc, Pnt, "请选择圆弧:"
If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub

Do Until Arc.ObjectName = "AcDbArc"
Err.Clear
ThisDrawing.Utility.GetEntity Arc, Pnt, "你所选的不是圆弧,请重新选择圆弧:"
If Err.Number <> 13 And Err.Number <> 0 Then Exit Sub
Loop

’获取圆弧各属性
Dim Leng As Double
Dim SPnt As Variant
Dim EPnt As Variant
Dim CPnt As Variant
Leng = Arc.ArcLength
SPnt = Arc.StartPoint
EPnt = Arc.EndPoint
CPnt = Arc.Center
’选择标注点
Dim PntforDim As Variant
PntforDim = ThisDrawing.Utility.GetPoint(, "选择标注点位置:")

’对圆弧进行角度标注
Dim DimAng As AcadDim3PointAngular
Set DimAng = ThisDrawing.ModelSpace.AddDim3PointAngular(CPnt, SPnt, EPnt, PntforDim)

’获取角度标注的精度控制(小数点位)
Dim FormatDot As Integer
Dim FormatTxt As String
FormatDot = DimAng.TextPrecision

’转换为精度控制格式
FormatTxt = "0.00"
Dim I As Integer
For I = 0 To FormatDot
If I > 0 Then
FormatTxt = FormatTxt & "0"
End If
Next

’更改角度标注的文字内容
DimAng.TextOverride = Format(Leng, FormatTxt)
End Sub
回复
hhzjxss
2005年12月11日 14:32:05
6楼

我也是,看了半天,看不懂,能否转化为可以直接外挂的菜单?
回复
hjc2cq
2005年12月13日 20:35:14
7楼
AutoCAD2006中已经有直接标注弧长的命令,不过两条尺寸界线有点与线性标注不一样的,它不是垂直于圆弧线,而是有一定的角度。
回复
dsslwjl
2005年12月20日 22:43:51
8楼
用上ZDM上面的圆弧标注就方便多了.
回复
ycl_126
2006年01月23日 13:32:14
9楼
哈,CAD2006里本身有这个功能呀
回复
yfy2003
2006年01月23日 13:50:44
10楼
是啊!2006里有了!很方便了!但2006以下就没有了哦!
回复
deewg
2006年01月24日 23:47:39
11楼
这个东西还是要好好的看看
回复

相关推荐

APP内打开