乐筑天下

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

选择集

[复制链接]

5

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
34
发表于 2004-2-20 14:47:15 | 显示全部楼层 |阅读模式
我试着在选集上工作。下面的代码是我用过的。但是它不显示选择窗口。它给了我一条从第一点到第二点的线。如何让用户看到选择窗口??Public Sub select Object()
Dim sset name As String
Dim objSet As acadselectonset
Dim int mode As Integer
Dim obj layer As acad layer
Dim Pt1,Pt2
Dim dblPt3(0到2)As Double
Dim obj ent As Object
sset name = " A1 "
出错时继续下一步
'删除现有sset A1(如果有)此绘图。SelectionSets("A1 ")。删除
Set objSet = ThisDrawing。selection sets . Add(sset name)
int mode = acSelectionSetCrossing
frmMain。隐藏Pt1 = ThisDrawing。Utility.GetPoint(,"选择窗口选择集的左下点:")
Pt2 = ThisDrawing。Utility.GetPoint(Pt1,"选择窗口选择集的右上角点:")
对象集。为objSet中的每个对象选择intMode,Pt1,Pt2
如果对象的类型是AcadEntity,则
Set ObjLayer = ThisDrawing。layers . Add(" ABC ")
obj layer . color = AC blue
objEnt。Layer = "ABC"
如果下一个对象是该绘图,则结束。SelectionSets.Item(ssetName)。删除应用程序。更新
结束订阅

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2004-2-20 23:33:43 | 显示全部楼层
您应该真正使用SelectOnScreen方法,而不是选择和传递点
试试这个
  1. Public Sub SelectObject()
  2. Dim ssetName As String
  3. Dim objSet As AcadSelectionSet
  4. Dim intMode As Integer
  5. Dim ObjLayer As AcadLayer
  6. Dim objEnt As Object
  7. ssetName = "A1"
  8. On Error Resume Next
  9. ' deleting existing sset A1 if any
  10. ThisDrawing.SelectionSets("A1").Delete
  11. Set objSet = ThisDrawing.SelectionSets.Add(ssetName)
  12. intMode = acSelectionSetCrossing
  13. frmMain.Hide
  14. objSet.SelectOnScreen
  15. For Each objEnt In objSet
  16. If TypeOf objEnt Is AcadEntity Then
  17. Set ObjLayer = ThisDrawing.Layers.Add("ABC")
  18. ObjLayer.color = acBlue
  19. objEnt.Layer = "ABC"
  20. End If
  21. Next objEnt
  22. ThisDrawing.SelectionSets.Item(ssetName).Delete
  23. Application.Update
  24. End Sub

我还没有测试它,但它应该可以正常工作
我可以补充一点,使用AcadApplication对象而不是应用程序始终是一种良好的做法。这可以防止在另一个启用VBA的程序(例如excel)中使用该程序时出错。
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2004-2-21 02:28:24 | 显示全部楼层
你应该尽量避免“下次出错时继续”。
回复

使用道具 举报

26

主题

78

帖子

14

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2004-2-21 09:00:50 | 显示全部楼层
这些有帮助吗
http://www.vbdesign.net/modules.php?s=&name=Code_Trout&cats=25
回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-16 11:14:47 | 显示全部楼层

  1. Public Sub SelectObject()
  2. Dim ssetName As String
  3. Dim objSet As AcadSelectionSet
  4. Dim intMode As Integer
  5. Dim ObjLayer As AcadLayer
  6. Dim objEnt As Object
  7. ssetName = "A1"
  8. On Error Resume Next
  9. ' deleting existing sset A1 if any
  10. ThisDrawing.SelectionSets("A1").Delete
  11. Set objSet = ThisDrawing.SelectionSets.Add(ssetName)
  12. intMode = acSelectionSetCrossing
  13. frmMain.Hide
  14. objSet.SelectOnScreen
  15. For Each objEnt In objSet
  16. If TypeOf objEnt Is AcadEntity Then
  17. Set ObjLayer = ThisDrawing.Layers.Add("ABC")
  18. ObjLayer.color = acBlue
  19. objEnt.Layer = "ABC"
  20. End If
  21. Next objEnt
  22. ThisDrawing.SelectionSets.Item(ssetName).Delete
  23. Application.Update
  24. End Sub

大家好;
如果您不介意,请从头解释如何运行visual basic编程代码
谢谢
Mohan
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-28 23:02 , Processed in 0.923516 second(s), 63 queries .

© 2020-2025 乐筑天下

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