- 积分
- 2145
- 明经币
- 个
- 注册时间
- 2003-4-3
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|

楼主 |
发表于 2004-3-24 19:25:00
|
显示全部楼层
我的程序如下:
Sub 半径标注() Dim myss As AcadSelectionSet Dim gpcode(0 To 1) As Integer Dim datavalue(0 To 1) As Variant Dim groupcode, datacode As Variant Dim dimObj As AcadDimRadial '用于创建半径标注 Dim center As Variant '用于设定圆心坐标 Dim chordPoint(0 To 2) As Double '用于设定标注点 Dim pickPoint As Variant '选择图元对象时的拾取点 Dim leaderLen As Double '设定引线的长度 Dim entObj As AcadArc Dim i As Integer Dim ag As Double Do While ThisDrawing.SelectionSets.Count <> 0 ThisDrawing.SelectionSets.Item(0).Delete Loop Scl = ThisDrawing.GetVariable("userr1") If Scl = 0 Then Scl = 500 gpcode(0) = 0: datavalue(0) = "Arc" gpcode(1) = 8: datavalue(1) = "ROAD1D" groupcode = gpcode: datacode = datavalue Set myss = ThisDrawing.SelectionSets.Add("ms6") ThisDrawing.Utility.Prompt "请选择要标注道路转角弧线:" & vbCrLf & _ "注意:本程序设定选择只对'ROAD1D'层上的道路有效!" '& vbCr Call myss.SelectOnScreen(groupcode, datacode) If myss.Count <> 0 Then For i = 0 To myss.Count - 1 Set entObj = myss.Item(i) If entObj.EndAngle < entObj.StartAngle Then ag = entObj.StartAngle + (entObj.EndAngle + 3.1415629 * 2 - entObj.StartAngle) / 2 Else ag = entObj.StartAngle + (entObj.EndAngle - entObj.StartAngle) / 2 End If pickPoint = ThisDrawing.Utility.PolarPoint(entObj.center, ag, entObj.Radius) chordPoint(0) = pickPoint(0): chordPoint(1) = pickPoint(1) leaderLen = -20*scl/500 'SCL :比例尺,规定比例尺=500时 leaderLen = -20 center = entObj.center Set dimObj = ThisDrawing.ModelSpace.AddDimRadial(center, chordPoint, leaderLen) dimObj.UnitsFormat = acDimLDecimal dimObj.DecimalSeparator = "." dimObj.TextHeight = 2 dimObj.Fit = acTextAndArrows
dimObj.CenterType = acCenterNone Next i End If End Sub |
|