乐筑天下

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

块清理和更新例程

[复制链接]

19

主题

35

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
111
发表于 2006-9-20 08:01:01 | 显示全部楼层 |阅读模式
大家好,Swarm的成员们:我继承了一堆乱七八糟的图纸,我需要进行大量的清理和重组,以使图纸上的块标准化为公司格式并具有可用的形状
我对VBA比较陌生,一直在尝试开发一个可用于选定图形组的例程,并提供具有以下选项的按钮:
1)重命名图形上的块
2)重新定义图形上的图块
3)替换图纸上的块(用新块替换现有块)
4)更新块并同步图形上的属性到目前为止,我在完成这项任务方面几乎没有成功……谁能提供一些帮助或给我指示,让我在哪里可以找到我正在寻找的子例程,或者做一些研究来开发它们
任何帮助都将不胜感激
问候,文斯
回复

使用道具 举报

12

主题

64

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2006-9-20 12:41:29 | 显示全部楼层
这可能在一定程度上对你有所帮助。这最初是为了将旧标题栏更改为新标题栏
下面的部分创建了块参照的选择集。本人'我使用一个块名数组作为我的列表。这使我能够以不同的方式处理不同的块。一旦我找到一个区块I'm查找时,插入点、比例和旋转角度存储在变量中以供以后使用。如果有属性,则将其存储在一个数组中,以便在删除块时不会破坏这些值
  1. Set objAcadSSet = ThisDrawing.SelectionSets.Add("sSet2")
  2. intTextCodes(0) = 0 'set code for entities
  3. varCodeValues(0) = "INSERT" 'set entity type to filter
  4. objAcadSSet.Select acSelectionSetAll, , , intTextCodes, varCodeValues   'create set
  5. For Each objOldBlk In objAcadSSet
  6.    BName = UCase(objOldBlk.Name)
  7.       Select Case BName
  8.       
  9.           Case arOldBlkNames(0)     'ctml0011
  10.               InsertPt(0) = objOldBlk.InsertionPoint(0)
  11.               InsertPt(1) = objOldBlk.InsertionPoint(1)
  12.               InsertPt(2) = objOldBlk.InsertionPoint(2)
  13.               xScale = objOldBlk.XScaleFactor
  14.               yScale = objOldBlk.YScaleFactor
  15.               zScale = objOldBlk.ZScaleFactor
  16.               Rot = objOldBlk.Rotation
  17.            If objOldBlk.HasAttributes Then
  18.               varOldAtt = objOldBlk.GetAttributes     'get block attributes
  19.             End If
  20.           For intOldCnt = LBound(varOldAtt) To UBound(varOldAtt)
  21.             Set objOldAttRef = varOldAtt(intOldCnt)
  22.           Next intOldCnt
  23.             NewBlkName = "CTML0013.dwg"
  24.       NewBlk
  25.       
这一块是返回的新块,其属性已反馈
  1. Case arOldBlkNames(0)         'CTMl0011
  2.    Set objNewBlk = ThisDrawing.ModelSpace.InsertBlock(InsertPt, NewBlkName, xScale, yScale, zScale, Rot) 'insert new tblock
  3.       
  4.    varNewAtt = objNewBlk.GetAttributes 'get attributes
  5.    For intOldCnt = LBound(varOldAtt) To UBound(varOldAtt)
  6.        For intNewCnt = LBound(varNewAtt) To UBound(varNewAtt)
  7.             If varNewAtt(intNewCnt).TagString = varOldAtt(intOldCnt).TagString Then
  8.                 varNewAtt(intNewCnt).TextString = varOldAtt(intOldCnt).TextString
  9.             End If
  10.       Next
  11.    Next
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2006-9-26 15:26:41 | 显示全部楼层

我将挑选一个简单的。这个绘图。块(“OldBlockName”)。名称=“”;NewBlockName“;
回复

使用道具 举报

12

主题

64

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2006-9-28 06:24:18 | 显示全部楼层
嗨,文斯,这是我为解决你的任务而做的拙劣的尝试,虽然胖子还没有完成;J#039~
回复

使用道具 举报

12

主题

64

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2006-9-28 06:33:50 | 显示全部楼层
所有这些任务都有在ACAD或express tools中为其编写的工具。只要看看你的菜单就可以了…
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 12:55 , Processed in 0.823869 second(s), 62 queries .

© 2020-2025 乐筑天下

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