fmfm 发表于 2004-5-14 11:01:00

那位老大能解释解释着程序中的代码啊

更改标注尺寸值的为真实值
不少地方看不懂.................
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

雪山飞狐_lzh 发表于 2004-5-14 11:15:00

If Left(objBlk.Name, 2) = "*D" Then
标注实际上是一个无名块,以 "*D" 开头
If TypeOf objEnt Is AcadMText Then
取得标注中的标注文字
Set objDim = objEnt
将获得的标注对象类型转换为标注,因为SelfOverRide的参数为AcadDimension

fmfm 发表于 2004-5-14 11:23:00

谢谢呵呵
这个 Set objDim = objEnt
我还不太明白
Dim objEnt As AcadEntity
Dim objDim As AcadDimension                                                                                                               不一样的东西啊 怎么就=了。
有什么特别的作用是吧?
第一个子程序中还有这个类似的 Set objDimText = objEnt

雪山飞狐_lzh 发表于 2004-5-14 11:32:00

因为SelfOverRide的入口参数为AcadDimension
如果定义为Public Sub SelfOverRide(objDim As       AcadEntity)
可以不要这一句

fmfm 发表于 2004-5-14 12:36:00

那这段代码中哪里能体现出:更改标注尺寸值的为真实值
真实值??

雪山飞狐_lzh 发表于 2004-5-14 12:39:00

这里:
objDim.TextOverride = objDimText.TextString

mccad 发表于 2004-5-14 21:06:00

Set objDim = objEnt
这样做是一种正规的作法,对于编程者可以利用VBA的智能提示来显示标注对象特有的智能提示。对于使用者看程序时也好明白。

紫罗兰 发表于 2010-12-14 11:25:00

很久的帖子啊,不过学了很多~
页: [1]
查看完整版本: 那位老大能解释解释着程序中的代码啊