那位老大能解释解释着程序中的代码啊
更改标注尺寸值的为真实值不少地方看不懂.................
Public Sub SelfOverRide(objDim As AcadDimension)
Dim objBlk As AcadBlock
Dim objEnt As AcadEntity
Dim varPos As Variant
Dim varInsPnt As Variant
Dim objDimText As AcadMText
Dim objBlocks As AcadBlocks
Dim blnDone As Boolean
Set objBlocks = ThisDrawing.Blocks
varPos = objDim.TextPosition
For Each objBlk In objBlocks
If Not blnDone Then
If Left(objBlk.Name, 2) = "*D" Then
For Each objEnt In objBlk
If TypeOf objEnt Is AcadMText Then
Set objDimText = objEnt
varInsPnt = objDimText.InsertionPoint
If varInsPnt(0) = varPos(0) Then
If varInsPnt(1) = varPos(1) Then
objDim.TextOverride = objDimText.TextString
blnDone = True
Exit For
End If
End If
End If
Next objEnt
End If
Else
Exit For
End If
Next objBlk
End Sub Sub TEST_SelfOverRide()
Dim strPrmt As String
Dim objEnt As AcadEntity
Dim varPnt As Variant
Dim IsDimension As Boolean
Dim objDim As AcadDimension
On Error GoTo Err_Handler
strPrmt = vbCr & "选择标注对象:"
ThisDrawing.Utility.GetEntity objEnt, varPnt, strPrmt
Set objDim = objEnt
SelfOverRide objDim
Exit Sub
Err_Handler:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub If Left(objBlk.Name, 2) = "*D" Then
标注实际上是一个无名块,以 "*D" 开头
If TypeOf objEnt Is AcadMText Then
取得标注中的标注文字
Set objDim = objEnt
将获得的标注对象类型转换为标注,因为SelfOverRide的参数为AcadDimension 谢谢呵呵
这个 Set objDim = objEnt
我还不太明白
Dim objEnt As AcadEntity
Dim objDim As AcadDimension 不一样的东西啊 怎么就=了。
有什么特别的作用是吧?
第一个子程序中还有这个类似的 Set objDimText = objEnt 因为SelfOverRide的入口参数为AcadDimension
如果定义为Public Sub SelfOverRide(objDim As AcadEntity)
可以不要这一句 那这段代码中哪里能体现出:更改标注尺寸值的为真实值
真实值?? 这里:
objDim.TextOverride = objDimText.TextString Set objDim = objEnt
这样做是一种正规的作法,对于编程者可以利用VBA的智能提示来显示标注对象特有的智能提示。对于使用者看程序时也好明白。 很久的帖子啊,不过学了很多~
页:
[1]