klinsmen 发表于 2006-3-13 20:26:00

[在线求助]急!怎样将屏幕上已选中的实体加入到selectionset中??

小弟是cad开发的新手,现在想请教各位大哥一个比较弱智的问题
我的目的是想将屏幕上已经被选取的实体放到一个selectionset中,而不希望用SelectOnScreen,因为这个函数要提示用户再去到屏幕中去选择。比如说我已经在屏幕上选取了3条线,然后点击按钮,我希望是对包含这三条线的selectionset进行操作,而不要再提示用户去选择这三条线。
小弟实在对cad中各个对象和函数不大熟悉,已经被这个问题折磨几天了,希望有高人能帮我解决一下。

karl-chan 发表于 2006-3-13 20:54:00

On Error Resume Next
acaddoc.SelectionSets("sel").Delete
Set sl = acaddoc.SelectionSets.Add("sel")
Set sl = acaddoc.ActiveSelectionSet   '将屏幕上已经被选取的实体放到sl

klinsmen 发表于 2006-3-13 20:54:00

怎么没有高人来指点下啊!!小弟真的是很急啊。

klinsmen 发表于 2006-3-13 21:30:00

2楼的大哥,我按你的方法试过了,怎么就算我已经在屏幕上选中了实体再运行代码,最后用a = sl.count检验得到的始终是a = 0啊!!!??

雪山飞狐_lzh 发表于 2006-3-13 21:37:00

置顶的帖子就有

karl-chan 发表于 2006-3-13 21:58:00

在模块中
Option Explicit
Dim acadApp As Object
Dim Preference As Object
Dim acaddoc As Object
Dim Paspace As Object
Dim MoSpace As Object

在窗体中
Private Sub Form_Load()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
   Err.Clear
   Set acadApp = CreateObject("AutoCAD.Application")
   If Err Then
      MsgBox Err.Description
      Exit Sub
   End If
End If
acadApp.Visible = True
Set Preference = acadApp.Preference
Set acaddoc = acadApp.ActiveDocument
Set MoSpace = acaddoc.ModelSpace
Set Paspace = acaddoc.PaperSpace
On Error Resume Next
acaddoc.SelectionSets("sel").Delete
Set sl = acaddoc.SelectionSets.Add("sel")
Set sl = acaddoc.ActiveSelectionSet
Text1 = sl.Count

End Sub
我测试可以,,,好象函数是区分大小写的,

klinsmen 发表于 2006-3-14 09:54:00

楼上两位大哥,我按你们的方法都试过了,有点进展,但是还是有点小问题。我试的结果是无论是用pickfirstselection还是activeselection,当多次运行程序后,都只能将刚刚选中的第一个实体加入到选择集中,而后面的实体都无法进入,结果就是从第二次开始无论我选中多少实体,sl.Count始终为1,感觉好奇怪啊!希望各位大哥再出来指点下。
注:小弟用的是autocad2002(在线等待回复)!!!

klinsmen 发表于 2006-3-14 10:12:00

我又做了一下测试,是我自己代码的问题,现在问题已经完全解决了!!!
谢谢各位的帮忙,第一次来这里,感觉收获很大,希望以后好能多多交流哈!!!
页: [1]
查看完整版本: [在线求助]急!怎样将屏幕上已选中的实体加入到selectionset中??