明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4727|回复: 8

如何用VBA修改图块(block)的属性?

[复制链接]
发表于 2004-12-16 18:01:00 | 显示全部楼层 |阅读模式
在lisp中我可以用subst、entmod两个函数修改块的属性,比如块名什么的。但在VBA中该如何实现呢?请大家帮忙啊,十万火急。我这有用CASS成的图,但单位要把这些图改成自己开发的一套系统中,此系统与CASS系统图块名不一样,现在我要把他们改过来,该怎么办啊?
发表于 2004-12-16 20:55:00 | 显示全部楼层
如果块未插入,则可以直接用.Name属性来改名称。
 楼主| 发表于 2004-12-22 12:11:00 | 显示全部楼层
块都插入了,怎么修改啊?.NAME属性好象不能修改的。另外如何建立块选择集呢?建立好了如何一个个提起,查看单个块属性呢?(诸如插入点、缩放比例、块名等)有没有实例呢?谢谢了
发表于 2004-12-22 15:03:00 | 显示全部楼层
就是,如何选择已插入的块,然后再旋转、移动啊?
发表于 2004-12-22 20:59:00 | 显示全部楼层
俺也想知道包括如何读取块的属性。
发表于 2004-12-22 21:32:00 | 显示全部楼层
先读取所有得块参照的属性,存入数组,再更改块名,然后读取数组中的数据重生成
 楼主| 发表于 2004-12-24 12:34:00 | 显示全部楼层
说的容易,怎么操作呢?有具体的实例吗?我真的很急啊,谢谢了
发表于 2004-12-24 17:23:00 | 显示全部楼层
'========如果有属性修改任务=========
'===================================
'===================================
DoEvents
fileright = False
If Check7.Value = 1 Then
If dwgfile.ActiveSpace = acModelSpace Then
For Each obj In dwgfile.ModelSpace
cadmessage.Label7.Caption = "正在进行属性修改: 查找目标块块 " & mainblock & " 当前 " & obj.ObjectName

If obj.ObjectName = "AcDbBlockReference" Then
If obj.Name = mainblock Then
fileright = True
cadmessage.Label7.Caption = "正在进行属性修改: 已找到 " & mainblock & " 当前正属性修改中。。。"
objatts = obj.GetAttributes
For m = LBound(objatts) To UBound(objatts)
For n = 0 To Combo6.ListCount - 1
If objatts(m).TagString = Combo6.List(n) Then
If Combo8.List(n) <> "" Then
If Combo8.List(n) = "null" Or Combo8.List(n) = "NULL" Then
objatts(m).TextString = ""
Exit For
Else
objatts(m).TextString = Combo8.List(n)
Exit For
End If
End If
End If
Next n
Next m
End If
End If
Next obj
End If


If dwgfile.ActiveSpace = acPaperSpace Then
For Each obj In dwgfile.PaperSpace
cadmessage.Label7.Caption = "正在进行属性修改: 查找目标块块 " & mainblock & " 当前 " & obj.ObjectName
If obj.ObjectName = "AcDbBlockReference" Then
If obj.Name = mainblock Then
fileright = True
cadmessage.Label7.Caption = "正在进行属性修改: 已找到 " & mainblock & " 当前正属性修改中。。。"
objatts = obj.GetAttributes
For m = LBound(objatts) To UBound(objatts)
For n = 0 To Combo6.ListCount - 1
If objatts(m).TagString = Combo6.List(n) Then
If Combo8.List(n) <> "" Then
If Combo8.List(n) = "null" Or Combo8.List(n) = "NULL" Then
objatts(m).TextString = ""
Else
objatts(m).TextString = Combo8.List(n)
End If
End If
End If
Next n
Next m
End If
End If
Next obj
End If
End If
 楼主| 发表于 2004-12-27 16:34:00 | 显示全部楼层
谢谢先,我试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 17:23 , Processed in 0.199309 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表