乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 111|回复: 7

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

[复制链接]

14

主题

39

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 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
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 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
回复

使用道具 举报

14

主题

39

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2004-5-14 11:23:00 | 显示全部楼层
谢谢呵呵
这个 Set objDim = objEnt
我还不太明白
Dim objEnt As AcadEntity
Dim objDim As AcadDimension                                                                                                                 不一样的东西啊 怎么就=了。
有什么特别的作用是吧?
第一个子程序中还有这个类似的 Set objDimText = objEnt
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-14 11:32:00 | 显示全部楼层
因为SelfOverRide的入口参数为AcadDimension
如果定义为Public Sub SelfOverRide(objDim As         AcadEntity)
可以不要这一句
回复

使用道具 举报

14

主题

39

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2004-5-14 12:36:00 | 显示全部楼层
那这段代码中哪里能体现出:更改标注尺寸值的为真实值
真实值??
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-14 12:39:00 | 显示全部楼层
这里:
objDim.TextOverride = objDimText.TextString
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-5-14 21:06:00 | 显示全部楼层
Set objDim = objEnt
这样做是一种正规的作法,对于编程者可以利用VBA的智能提示来显示标注对象特有的智能提示。对于使用者看程序时也好明白。
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-14 11:25:00 | 显示全部楼层
很久的帖子啊,不过学了很多~
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 03:18 , Processed in 1.928635 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表