handent 模拟尺寸关联标注操作.
本帖最后由 作者 于 2009-9-4 14:56:23 编辑 <br /><br /> <p>命令: dimreassociate<br/>选择要重新关联的标注 ...<br/>选择对象: (handent "180c") (---- 操作成立 )<br/><图元名: 7ed77720><br/>找到 1 个</p><p>选择对象:</p><p>选择弧或圆<下一个>: (handent "180b") (------操作不成立)<br/><图元名: 7ed77718></p><p>这关不过,无法编lisp程序.</p><p>问选择弧或圆,是否不能用HandEnt ,只能用鼠标来操作.谢谢.</p> <p>你可能还要用圆弧上的一点来组成一个表,就像用(entsel)得到的表一样</p> 选择弧或圆<下一个>: 这不是一个图元.应选择为点(list 2 3 4)这也就是圆上的一点.
参考一个VBA程序
Sub LS()
Dim Ent1 As AcadEntity, Ent2 As AcadEntity
Dim objCircle As AcadCircle
Dim objDia As AcadDimDiametric
Dim DegToRad, ss As String
DegToRad = Atn(1) * 4 / 180
DD = 100
With ThisDrawing
Debug.Print tt
Dim pp(2) As Double, pp1(2) As Double, pp2(2) As Double
pp2(0) = 10 * Cos(45 * DegToRad) / 2
pp2(1) = 10 * Sin(45 * DegToRad) / 2
ss = "(LIST " & Str(DD / 2) & " 00)"
ss = Left(ss, Len(ss) - 1) & ")"
Set objCircle = .ModelSpace.AddCircle(pp, DD / 2)
Set objDia = .ModelSpace.AddDimDiametric(pp, pp2, 10)
tt = "(handent " & Chr(34) & objDia.Handle & Chr(34) & ")" & vbCr & vbCr
tt = tt & ss & vbCr
.SendCommand "Dimreassociate" & vbCr & tt
End With
End Sub
双元表。<div>(图元名 坐标)</div> 模拟Dimlinear和Diameter理解一下选择弧或圆或选择点的函义吧。
Sub LL()
Dim objLine As AcadLine
With ThisDrawing
.SendCommand "E" & vbCr & "All" & vbCr & vbCr
Dim DwgToRad
DegToRad = Atn(1) * 4 / 180
''
Dim objCircle As AcadCircle, Dd, Ss, Tt, Alfa
Dd = 20
Alfa = 40
''
Dim P1(2) As Double, P2(2) As Double, P3(2) As Double, Pp(2) As Double
P2(0) = 10
P3(0) = 5: P3(1) = 5
Pp(0) = Dd * Cos(Alfa * DegToRad) / 2
Pp(1) = Dd * Sin(Alfa * DegToRad) / 2
Set objLine = .ModelSpace.AddLine(P1, P2)
Dim S1 As String, S2 As String, S3 As String
S1 = "(list "
S2 = "(list "
S3 = "(list "
Tt = "(list "
For ii = 0 To 2
S1 = S1 & P1(ii) & " "
S2 = S2 & P2(ii) & " "
S3 = S3 & P3(ii) & " "
Tt = Tt & Pp(ii) & " "
Next ii
S1 = S1 & ")": S2 = S2 & ")": S3 = S3 & ")": Tt = Tt & ")"
Debug.Print Tt
.SendCommand "Dimlinear" & vbCr & S1 & vbCr & S2 & vbCr & S3 & vbCr
Set objCircle = .ModelSpace.AddCircle(P1, Dd / 2)
Ss = "(List " & Dd / 2 & " 0 0)"
Debug.Print Ss
'Tt = "A" & vbCr & "20" & vbCr & Ss & vbCr
'Tt = Ss & vbCr
.SendCommand "DimDiameter" & vbCr & Ss & vbCr & Tt & vbCr
End With
ZoomExtents
End Sub
页:
[1]