xia_jxs 发表于 2009-7-29 20:52:00

关于创建选择集的问题

<p>各位高手帮帮忙,出点注意:</p><p>我用VB 编程二次开发CAD 在创建选择集时遇到问题 具体代码如下:</p><p>Public acadapp As Object&nbsp;&nbsp;&nbsp; '建立Application对象<br/>&nbsp;Public acaddoc As Object&nbsp;&nbsp;&nbsp; '建立Document对象<br/>&nbsp;Public acaddocs As Object<br/>Dim ssetObj As Variant<br/>On Error Resume Next<br/>&nbsp; get_statue = False<br/>&nbsp;Set acadapp = GetObject(, "autocad.application.16")&nbsp;&nbsp; '若AutoCad已启动 , 则直接得到一个 Application对象<br/>&nbsp;If Err Then<br/>&nbsp;Err.Clear<br/>&nbsp;Else<br/>&nbsp;get_statue = True<br/>&nbsp;Set acaddoc = acadapp.ActiveDocument&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '设acaddoc为当前图形文件<br/>&nbsp;Set acaddocs = acadapp.Documents<br/>&nbsp;End If<br/>Set ssetObj = module1.acaddoc.SelectionSets.Add("TEST_SSET1") '<br/>ssetObj.SelectOnScreen<br/>module1.acaddoc.SelectionSets.Item("TEST_SSET1").Delete</p><p>问题:当从CAD选择晚图形后 回到VB的本地窗口察看时,找不到所选择的对象,仔细看看发现创建的选择集ssetObj 只有Application,Name,cout属性 而没有ITEM属性,所以查不</p><p>到,请问怎样解决?</p><p><br/>而我在 CAD中的VBA编写的代码就可以看到</p><p><br/><font color="#ee3d11">VBA代码:</font><br/>Dim selsetCollection As AcadSelectionSets<br/>&nbsp; Dim selset1 As Variant<br/>&nbsp; Dim ent As Object<br/>&nbsp; Dim i, j As Integer</p><p>&nbsp;Set selset1 = ThisDrawing.SelectionSets.Add("SS4")</p><p>&nbsp;selset1 .SelectOnScreen</p>

雪山飞狐_lzh 发表于 2009-7-29 23:45:00

<p>module1.acaddoc.SelectionSets.Item("TEST_SSET1").Delete?</p><p>选完就删掉干嘛</p>

xia_jxs 发表于 2009-7-30 18:52:00

<p>楼上的大侠 能否把我的代码在你机子上给我看看</p><p>Set ssetObj =acaddoc.SelectionSets.Add("TEST_SSET1") '<br/><font color="#ff0000">ssetObj.SelectOnScreen&nbsp;&nbsp; 我在这里设置了断点,后面那句还没执行能 没有关系的</font></p>

雪山飞狐_lzh 发表于 2009-7-30 19:45:00

<p>你应该在下一句设置断点</p>

StartMe 发表于 2009-7-30 21:45:00

<p>module1是什么?应该是他的问题。把它去掉。</p>

xia_jxs 发表于 2009-7-31 08:31:00

<p>对不起,Module1是我上传时书写错误,实际程序里没有?</p><p>我再次声明这段程序的目的是想从CAD屏幕上选择对象后(比如:直线,文字)然后赋值给一个变量如:obj.这里的obj一定要是直线或者文字,应为我后面还要判断</p><p>if obj = line or obj = text then</p><p>........</p><p>else</p><p>.......</p><p>end if</p><p><font color="#ff3300">我琢磨了好几天,想不出解决的办法,希望斑主和各位高手帮帮我 谢谢</font></p><p></p>

雪山飞狐_lzh 发表于 2009-7-31 10:55:00

<p>if obj = line or obj = text then</p><p>?</p><p>应该比较obj.ObjectName</p><p>或者用过滤器就可以不用If语句</p><p></p>

xia_jxs 发表于 2009-7-31 17:26:00

<p>谢谢版主的指点</p><p>我用遍历选择集的对象实现了</p><p>Dim ent As Object<br/>&nbsp;For Each ent In ssetObj<br/>a = ent.ObjectName<br/>&nbsp;Next</p>
页: [1]
查看完整版本: 关于创建选择集的问题