明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1400|回复: 9

[VBA]选择集

[复制链接]
发表于 2004-11-29 11:57:00 | 显示全部楼层 |阅读模式
我通过SelectAtPoint选择对象,可为什么选不到块. Sub test()
Dim sset1 As AcadSelectionSet
Dim sset2 As AcadSelectionSet
Dim i As Integer
Dim lineObj As AcadLine
Dim point As Variant
Dim sPoint As Variant
Dim ePoint As Variant

For i = 0 To ThisDrawing.SelectionSets.Count - 1
If ThisDrawing.SelectionSets(i).Name = "SS1" Or ThisDrawing.SelectionSets(i).Name = "SS2" Then
ThisDrawing.SelectionSets(i).Delete
End If
Next i
point = ThisDrawing.Utility.GetPoint(, "请选择")
Set sset1 = ThisDrawing.SelectionSets.Add("SS1")
sset1.SelectAtPoint point

Dim entry As AcadEntity
For Each entry In sset1
If entry.ObjectName = "AcDbLine" Then
Set lineObj = entry
sPoint = lineObj.StartPoint
ePoint = lineObj.EndPoint
End If
Next entry

Set sset2 = ThisDrawing.SelectionSets.Add("SS2")
sset2.SelectAtPoint sPoint
For Each entry In sset2
MsgBox entry.ObjectName
Next entry
End Sub 我是想选择通过一点的线,然后通过线的起点选择通过起点的块,可是确选不到块,谁能告诉我为什么? 调试图和程序都在附件里.
发表于 2004-11-29 12:43:00 | 显示全部楼层
SelectAtPoint只能返回一个对象,不管在那个点上的entity有多少。


从你的程序上看,第一次选择了直线,第二次通过直线的端点选择的还是那条直线,所有选不到块了。


我想你可以在端点取到以后,先把那条线删除,选到块以后再addline startpoint,endpoint
 楼主| 发表于 2004-11-29 13:36:00 | 显示全部楼层
tiger8888发表于2004-11-29 12:43:00SelectAtPoint只能返回一个对象,不管在那个点上的entity有多少。
  1. 我想你可以在端点取到以后,先把那条线删除,选到块以后再addline startpoint,endpoint
复制代码
删掉以后还是选不到块,真是郁闷.
发表于 2004-11-29 16:20:00 | 显示全部楼层
用窗口选择试试
 楼主| 发表于 2004-11-29 19:47:00 | 显示全部楼层
因为搞测量的点,点都比较密,用框选不太好.
发表于 2004-11-29 19:50:00 | 显示全部楼层
框选加过滤器,你要选的是块,而不是点呀
发表于 2004-11-29 22:57:00 | 显示全部楼层
是我搞错了,中午我只看了帖子,没作试验就贸然回答了。晚上刚才进cad一试,真的不行 ,也不知为什么就是选不上。


没办法,可能只好按4楼的方法来解决问题了。
发表于 2004-11-30 07:52:00 | 显示全部楼层
建议更改捕捉方式为只选最近点,然后用GetPoint取得一个点。
再用Select acSelectionSetCrossing , Pnt , Pnt
来选择对象。
 楼主| 发表于 2004-11-30 09:06:00 | 显示全部楼层
谢谢各位老师的帮忙,采用框选可以选到,尽管不那么理想,不过还行. TO lzh741206 老师,是我没说清楚,我所说的点,就是那个块,因为测量点号用CAD的点表示看不清,所以采用的是用作好的块代替点. TO mccad 老师 你所说的"建议更改捕捉方式为只选最近点",在哪改. 谢谢各位!
发表于 2004-11-30 12:28:00 | 显示全部楼层
8楼的办法很巧妙,我这里已经可以顺利选择到块了。


又学一招阿。


关于更改捕捉方式,我想应该在选直线前就改osmode为512,最后在出错代码和程序结束时再改回原始值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 23:31 , Processed in 0.196833 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表