在ACAD中使用一次选择集?
我在VBA中创建了一个选择集,名为;Im“;但我的问题是,在ACAD中,我仍然可以引用Sset的名称吗换句话说,在ACAD中,如果我键入Select,我意识到我可以为上一个键入p,但是否仍然需要键入Im,然后在ACAD中将该选择集识别出来
谢谢
标记
我不知道';我不这么认为
I';我写了一个hack(很难看),能够使用例程中的选择集作为';先前#039;在例程完成写作后。我不知道';我不能把它脱掉,它可能在某个地方的交换处。它涉及到向对象写入虚假扩展数据。
哎呀!听起来很可怕,这是ACAD中完全没有意义的事情之一
我们可以在VBA中创建所有这些选择集和过滤器等。然而,一旦我们进入ACAD,我们就不能再按名称引用它们了?这太傻了
我想知道分组法?我没有#039;t仔细看了看
同样,在ACAD中,我们可以创建过滤器并按名称引用它们,但我不确定我们是否可以在VBA中创建一个过滤器,然后在ACAD中将其引用
有件事我;五月“;我可以(使用我拥有的函数)将ACAD变量Sset发送到LISP,然后;可以是“;它(选择集)将至少通过使用!ACAD中的Sset,HUMMM
必须有一种方法来引用ACAD中的命名sset
我的意思是说VBA变量Sset到LISP 
标记
正如我和其他人在帖子中所说的,出于所有的意图和目的,不。 虽然只需要一点点lisp,但它可以在这里完成;s口齿不清:
(defun getVBss (name / ss ssnew)
(if (not (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda ()
(setq ss (vla-item
(vla-get-selectionsets
(vla-get-activedocument
(vlax-get-acad-object)
)
)
name
)
)
)
)
)
)
(progn
(setq ssnew (ssadd))
(vlax-for ent ss
(ssadd (vlax-vla-object->ename ent) ssnew)
)
)
)
ssnew
)
记住名为SS#039;s区分大小写。
杰夫谢谢你的代码
我仍然需要查看它,我必须将其放入VLISP并将其保存到特定的文件类型吗
嘿,你认为有可能把代码直接放到VBA中吗
参考VLISPSet VL = CreateObject(VL.Application.16)
I和#039;我会说,是的,我们可以
实际上,这甚至可以作为VBA中的一个函数很好地工作,你认为呢
标记 首先,欢迎您
然而,我认为混合lisp和VBA是一种边界nutzoid…..VLAX。CLS sortof就是一个例子
是的,我展示了一种将ActiveX SS转换为基于ename的SS的方法,但这也意味着Glenn是对的&引用;就所有意图和目的而言,编号”;你不能像你要求的那样在Acad中获得它,你需要一些lisp技巧来做到这一点
我只想把它另存为“;getVBss。lsp“;并通过VBA宏或启动宏时使用的工具栏按钮或I'之前的任意数量的东西加载它;d将lisp代码添加到DVB中
我敢问这一切的最终结果是什么?哎呀,为什么不把代码保存在VBA中呢?(顺便说一句,这就是格伦试图引导你的方向。)
嗨,杰夫,再次谢谢你!当然你可以问我;你可以问任何问题
如果有人说don#039;t做它,它';如果没有举一些例子,那就太疯狂了,那么这并不总是能阻止他们
至于VLAX类,我没有使用它,我也不会使用它。然而,我发布的两个缩小的函数对我来说非常好。我能够将getfield和setq方法与LISP以及VBA代码一起使用,并且我遇到了绝对零的问题
是的!我确实有一个使用“打开文件”对话框方法的版本,但对于如此少的返回,例如用对话框提示用户选择一个文件,这需要很多代码。当然,我';如果可能的话,我宁愿在VBA中完成这一切,这是有意义的。出于其他原因,我也经常使用VBScripting代码;可以是“;这没关系;看起来效果不错
再次感谢您的代码;我会照你的建议去做;我将制作一个单独的例程,并用VBA项目加载它
我本来打算今天早上来试试,然后就是这一切。天哪
杰夫,我不是最有经验的程序员,我只是问它是否可以合并,我很欣赏你的回答,那太难了,没有意义。我只是认为,因为我们可以连接到VLISP类型库,这是可能的;我没有意识到我这样问是疯了,所以我道歉 ;因此,我不会尝试它,我会去尝试你。lsp例程
谢谢你,马克
杰夫,我刚刚试过lisp程序;它工作得很好
再次感谢您
标记
页:
[1]
2