乐筑天下

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

[编程交流] 仅选择块参照an

[复制链接]

14

主题

29

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 11:04:02 | 显示全部楼层 |阅读模式
大家好,
 
我创建了一个选择集,我只希望包含文本和块引用,以从中检索信息。我一直在使用以下代码
 
  1. For Each SOS In ThisDrawing.SelectionSets
  2.     If SOS.name = "MySS" Then
  3.        ThisDrawing.SelectionSets("MySS").Delete
  4.     Exit For
  5.     End If
  6. Next
  7. intCode(0) = 0: varData(0) = "BLOCK REFERENCE,TEXT"
  8. ThisDrawing.SelectionSets.add ("MySS")
  9. Set objSS = ThisDrawing.SelectionSets("MySS")
  10. objSS.SelectOnScreen intCode, varData
  11. If objSS.Count < 1 Then
  12.     MsgBox "Nothing Selected!"
  13. Exit Sub
  14. End If
  15. For Each objent In objSS
  16. Select Case objent.ObjectName
  17.    Case "AcDbBlockReference"
  18.    Set block = objent
  19.        x = block.insertionPoint(0)
  20.        y = block.insertionPoint(1)
  21. MsgBox "x: " & x & vbCrLf & "y: " & y
  22.    Case "AcDbText"
  23.    Set textobj = objent
  24.    MsgBox textobj.textstring
  25.    
  26. End Select
  27. Next

 
 
 
 
这将允许我选择文本,但不允许块引用。
我想知道块参照的确切名称,我可以在以下内容中使用:
 
intCode(0)=0:varData(0)=“块参考,文本”
 
仅选择块参照和文字的步骤
 
 
谢谢和问候,
普里扬卡
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 11:26:37 | 显示全部楼层
intCode(0)=0:varData(0)=“插入,文本”
 
你有没有研究过acSelectionSetCrossingPolygon中与该线程中的圆相交的实体?
 
http://www.cadtutor.net/forum/showthread.php?t=34980
回复

使用道具 举报

14

主题

29

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 11:38:48 | 显示全部楼层
嗨,肖特,
 
这个“insert”关键字按我希望的方式工作。谢谢
 
我尝试了circle代码,但对于我的编程技能来说,它实际上有点太复杂了。不幸的是,我对此无能为力。无论如何,非常感谢!
 
当做
普里扬卡
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 11:47:30 | 显示全部楼层
谢谢你的代码,
请你帮我在图纸中选择更多具有特定块名(X1-O-180)的块,并获取每个块的坐标,好吗?
 
我尝试了以下代码,但没有成功,我认为问题在选择范围内!。
 
IntCOde(0)=“0”:VarData(0)=“X1-O-180”
objSS。选择acSelectionSetAll、IntCOde、VarData
 
厚度
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:01:40 | 显示全部楼层
请参阅上述代码的修改。
 
  1. Sub getzInsPt()
  2. Dim intCode(1) As Integer
  3. Dim varData(1) As Variant
  4. Dim X As Double
  5. Dim Y As Double
  6. Dim Z As Double
  7. Dim Block As AcadBlockReference
  8. Dim SOS As AcadSelectionSet
  9. Dim objent As AcadEntity
  10. Dim strMsg As String
  11. For Each SOS In ThisDrawing.SelectionSets
  12.     If SOS.Name = "MySS" Then
  13.        ThisDrawing.SelectionSets("MySS").Delete
  14.     Exit For
  15.     End If
  16. Next
  17. intCode(0) = 0: varData(0) = "INSERT"
  18. intCode(1) = 2: varData(1) = "X1-O-180"
  19. ThisDrawing.SelectionSets.Add ("MySS")
  20. Set SOS = ThisDrawing.SelectionSets("MySS")
  21. SOS.Select acSelectionSetAll, , , intCode, varData
  22. If SOS.Count < 1 Then
  23.     MsgBox "Nothing Selected!"
  24. Exit Sub
  25. End If
  26.   For Each objent In SOS
  27.      Set Block = objent
  28.        X = Block.InsertionPoint(0)
  29.        Y = Block.InsertionPoint(1)
  30.        Z = Block.InsertionPoint(2)
  31.        strMsg = strMsg & "x: " & X & ", y: " & Y & ", z: " & Z & vbCrLf
  32.   Next
  33.   MsgBox strMsg
  34. End Sub
回复

使用道具 举报

18

主题

118

帖子

101

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2022-7-6 12:06:43 | 显示全部楼层
 
非常感谢你!现在它开始工作了。
 
我稍后会问你一些其他细节!。。。。。。
 
最终范围是在文本编辑器或excel操作后,将从“X1-O-180”块中提取的一些属性或从其自身中提取的属性转移到放置在图形上的新块中。
 
这是一项艰苦的工作?
 
所以我会再次努力。
 
谢谢你的耐心。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:38 , Processed in 0.427654 second(s), 64 queries .

© 2020-2025 乐筑天下

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