乐筑天下

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

修改块中文字及块属性

[复制链接]

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2010-12-16 14:48:00 | 显示全部楼层 |阅读模式
需要修改图中所有块内的文字和块属性的大小,经过一番研究,结果如下,请大家指点:
1. 对于块内的文字,只需要修改一次就可以更新所有的同名块了。主要代码如下:
           Set BlockObj = ThisDrawing.Blocks(SsetObj.Item(I).Name)
           For Each AcadObj In BlockObj
               Select Case AcadObj.ObjectName
                      Case "AcDbText", "AcDbMText"
                           AcadObj.Height = 2.5
                      Case "AcDbAttributeDefinition"
                           AcadObj.Height = 2.5
                      Case Else
               End Select
           Next
这样之后,重新插入的“源”块就被修改了,新插入的块文字和属性都是2.5高。
2. 对于已经放好的块,文字部分可以由于上一步的“源”块被修改的原因自动更新,但是块属性部分不能更新,还得遍历块属性去修改。主要代码如下:
        If SsetObj.Item(I).HasAttributes Then
           varAttributes = SsetObj.Item(I).GetAttributes
           For J = LBound(varAttributes) To UBound(varAttributes)
               varAttributes(J).Height = 2.5
           Next J
        End If
不知道有没有更好的算法。不能直接赋值某个块给acadblockrefence,然后对其进行操作么?步骤1中的遍历块中元素,似乎只能对acadblock(即“源”块)进行操作,不能遍历已经画好了的块(acadblockrefence)么?
回复

使用道具 举报

0

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
37
发表于 2010-12-16 18:57:00 | 显示全部楼层
块定义里保存的是属性定义
块参照里保存的是属性参照
这两者实质上没有很严格的对应关系
所以也只有按你的方法遍历
回复

使用道具 举报

3

主题

42

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2010-12-16 19:14:00 | 显示全部楼层
好贴 收藏了
回复

使用道具 举报

8

主题

54

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
86
发表于 2010-12-26 14:43:00 | 显示全部楼层
看看,学习了,加油
回复

使用道具 举报

8

主题

28

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2011-1-27 22:17:00 | 显示全部楼层
学习学习,谢谢楼主
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 03:04 , Processed in 0.833501 second(s), 63 queries .

© 2020-2025 乐筑天下

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