乐筑天下

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

[编程交流] 将块与属性合并

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 20:40:12 | 显示全部楼层 |阅读模式
大家好,
 
我喜欢将三个块属性合并为一个具有属性的块。我不擅长VBA。我希望有人为我更正以下代码。谢谢
 
  1. Public Sub Merge_LnBLk()
  2. Dim ss As ZcadSelectionSet
  3. Dim UNode As ZcadText
  4. Dim UGL As ZcadText
  5. Dim UIL As ZcadText
  6. Dim DNode As ZcadText
  7. Dim DGL As ZcadText
  8. Dim DIL As ZcadText
  9. Dim LnLen As ZcadText
  10. Dim Size As ZcadText
  11. Dim GetPt As Variant
  12. Dim BlkName As String
  13. Dim NodeBlk As ZcadBlockReference
  14. Dim FromBlk As ZcadBlockReference
  15. Dim ToBlk As ZcadBlockReference
  16. Dim SizeBlk As ZcadBlockReference
  17. Dim objAttribs As Variant
  18. Dim FromobjAttribs As Variant
  19. Dim ToobjAttribs As Variant
  20. Dim SizeobjAttribs As Variant
  21. On Error Resume Next
  22. ThisDrawing.SelectionSets("s").Delete
  23. On Error GoTo 0
  24. Set ss = ThisDrawing.SelectionSets.Add("s")
  25. ss.SelectOnScreen
  26. Set FromBlk = ss.Item(0)
  27. Set ToBlk = ss.Item(1)
  28. Set SizeBlk = ss.Item(2)
  29. GetPt = ActiveDocument.Utility.GetPoint(, "Pick where the block to be inserted")
  30. BlkName = "LNNode"
  31. Set NodeBlk = ActiveDocument.ModelSpace.InsertBlock(GetPt, BlkName, 1, 1, 1, 0)
  32. FromobjAttribs = FromBlk.GetAttributes()
  33. UNode.TextString = FromobjAttribs(0)
  34. UGL.TextString = FromobjAttribs(1)
  35. UIL.TextString = FromobjAttribs(2)
  36. ToobjAttribs = ToBlk.GetAttributes()
  37. DNode.TextString = ToobjAttribs(0)
  38. DGL.TextString = ToobjAttribs(1)
  39. DIL.TextString = ToobjAttribs(2)
  40. SizeobjAttribs = SizeBlk.GetAttributes()
  41. LnLen.TextString = SizeobjAttribs(0)
  42. Size.TextString = SizeobjAttribs(1)
  43. objAttribs = NodeBlk.GetAttributes()
  44. objAttribs(0).TextString = UNode
  45. objAttribs(1).TextString = UGL
  46. objAttribs(2).TextString = UIL
  47. objAttribs(3).TextString = DNode
  48. objAttribs(4).TextString = DGL
  49. objAttribs(5).TextString = DIL
  50. objAttribs(6).TextString = LnLen
  51. objAttribs(7).TextString = Size
  52. NodeBlk.Update
  53. End Sub
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 21:29:11 | 显示全部楼层
214014p22d1dsoo3i2ooyr.png
 
此处修订代码:
必须将存储在Textstring数组属性中的属性值赋给变量,然后将新块属性值赋给变量。
 
  1. Public Sub Merge_LnBLk()
  2. Dim ss As AcadSelectionSet
  3. Dim UNode As Variant 'AcadText
  4. Dim UGL As Variant 'AcadText
  5. Dim UIL As Variant 'AcadText
  6. Dim DNode As Variant 'AcadText
  7. Dim DGL As Variant 'AcadText
  8. Dim DIL As Variant 'AcadText
  9. Dim LnLen As Variant 'AcadText
  10. Dim Size As Variant 'AcadText
  11. Dim GetPt As Variant
  12. Dim BlkName As String
  13. Dim NodeBlk As AcadBlockReference
  14. Dim FromBlk As AcadBlockReference
  15. Dim ToBlk As AcadBlockReference
  16. Dim SizeBlk As AcadBlockReference
  17. Dim objAttribs As Variant
  18. Dim FromobjAttribs As Variant
  19. Dim ToobjAttribs As Variant
  20. Dim SizeobjAttribs As Variant
  21. On Error Resume Next
  22. ThisDrawing.SelectionSets("s").Delete
  23. On Error GoTo 0
  24. Set ss = ThisDrawing.SelectionSets.Add("s")
  25. ss.SelectOnScreen
  26. Set FromBlk = ss.Item(0)
  27. Set ToBlk = ss.Item(1)
  28. Set SizeBlk = ss.Item(2)
  29. GetPt = ActiveDocument.Utility.GetPoint(, "Pick where the block to be inserted")
  30. BlkName = "LNNode"
  31. Set NodeBlk = ActiveDocument.ModelSpace.InsertBlock(GetPt, BlkName, 1, 1, 1, 0)
  32. FromobjAttribs = FromBlk.GetAttributes()
  33. UNode = FromobjAttribs(0).TextString
  34. UGL = FromobjAttribs(1).TextString
  35. UIL = FromobjAttribs(2).TextString
  36. ToobjAttribs = ToBlk.GetAttributes()
  37. DNode = ToobjAttribs(0).TextString
  38. DGL = ToobjAttribs(1).TextString
  39. DIL = ToobjAttribs(2).TextString
  40. SizeobjAttribs = SizeBlk.GetAttributes()
  41. LnLen = SizeobjAttribs(0).TextString
  42. Size = SizeobjAttribs(1).TextString
  43. objAttribs = NodeBlk.GetAttributes()
  44. objAttribs(0).TextString = UNode
  45. objAttribs(1).TextString = UGL
  46. objAttribs(2).TextString = UIL
  47. objAttribs(3).TextString = DNode
  48. objAttribs(4).TextString = DGL
  49. objAttribs(5).TextString = DIL
  50. objAttribs(6).TextString = LnLen
  51. objAttribs(7).TextString = Size
  52. NodeBlk.Update
  53. End Sub
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 21:44:16 | 显示全部楼层
@彼得·潘9720நன்றிகள் பல 非常感谢你,兄弟。它成功了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 11:09 , Processed in 1.242487 second(s), 61 queries .

© 2020-2025 乐筑天下

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