Atook 发表于 2007-12-20 11:01:43

在ACAD中使用一次选择集?

我在VBA中创建了一个选择集,名为;Im“;但我的问题是,在ACAD中,我仍然可以引用Sset的名称吗
换句话说,在ACAD中,如果我键入Select,我意识到我可以为上一个键入p,但是否仍然需要键入Im,然后在ACAD中将该选择集识别出来
谢谢
标记

Jeff_M 发表于 2007-12-20 11:22:44

我不知道'我不这么认为
I'我写了一个hack(很难看),能够使用例程中的选择集作为'先前#039;在例程完成写作后。我不知道'我不能把它脱掉,它可能在某个地方的交换处。它涉及到向对象写入虚假扩展数据。

Jeff_M 发表于 2007-12-20 11:30:15


哎呀!听起来很可怕,这是ACAD中完全没有意义的事情之一
我们可以在VBA中创建所有这些选择集和过滤器等。然而,一旦我们进入ACAD,我们就不能再按名称引用它们了?这太傻了
我想知道分组法?我没有#039;t仔细看了看
同样,在ACAD中,我们可以创建过滤器并按名称引用它们,但我不确定我们是否可以在VBA中创建一个过滤器,然后在ACAD中将其引用
有件事我;五月“;我可以(使用我拥有的函数)将ACAD变量Sset发送到LISP,然后;可以是“;它(选择集)将至少通过使用!ACAD中的Sset,HUMMM
必须有一种方法来引用ACAD中的命名sset

Jeff_M 发表于 2007-12-20 11:31:57


我的意思是说VBA变量Sset到LISP&nbsp
标记

Jeff_M 发表于 2007-12-20 17:14:59


正如我和其他人在帖子中所说的,出于所有的意图和目的,不。

mark 发表于 2007-12-20 18:05:46

虽然只需要一点点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区分大小写。

Jeff_M 发表于 2007-12-20 18:41:15


杰夫谢谢你的代码
我仍然需要查看它,我必须将其放入VLISP并将其保存到特定的文件类型吗
嘿,你认为有可能把代码直接放到VBA中吗
参考VLISPSet VL = CreateObject(VL.Application.16)

I和#039;我会说,是的,我们可以
实际上,这甚至可以作为VBA中的一个函数很好地工作,你认为呢
标记

Jeff_M 发表于 2007-12-20 19:30:57

首先,欢迎您
然而,我认为混合lisp和VBA是一种边界nutzoid…..VLAX。CLS sortof就是一个例子
是的,我展示了一种将ActiveX SS转换为基于ename的SS的方法,但这也意味着Glenn是对的&引用;就所有意图和目的而言,编号”;你不能像你要求的那样在Acad中获得它,你需要一些lisp技巧来做到这一点
我只想把它另存为“;getVBss。lsp“;并通过VBA宏或启动宏时使用的工具栏按钮或I&#039之前的任意数量的东西加载它;d将lisp代码添加到DVB中
我敢问这一切的最终结果是什么?哎呀,为什么不把代码保存在VBA中呢?(顺便说一句,这就是格伦试图引导你的方向。)

Jeff_M 发表于 2007-12-21 11:39:36


嗨,杰夫,再次谢谢你!当然你可以问我;你可以问任何问题
如果有人说don#039;t做它,它'如果没有举一些例子,那就太疯狂了,那么这并不总是能阻止他们
至于VLAX类,我没有使用它,我也不会使用它。然而,我发布的两个缩小的函数对我来说非常好。我能够将getfield和setq方法与LISP以及VBA代码一起使用,并且我遇到了绝对零的问题
是的!我确实有一个使用“打开文件”对话框方法的版本,但对于如此少的返回,例如用对话框提示用户选择一个文件,这需要很多代码。当然,我'如果可能的话,我宁愿在VBA中完成这一切,这是有意义的。出于其他原因,我也经常使用VBScripting代码;可以是“;这没关系;看起来效果不错
再次感谢您的代码;我会照你的建议去做;我将制作一个单独的例程,并用VBA项目加载它
我本来打算今天早上来试试,然后就是这一切。天哪
杰夫,我不是最有经验的程序员,我只是问它是否可以合并,我很欣赏你的回答,那太难了,没有意义。我只是认为,因为我们可以连接到VLISP类型库,这是可能的;我没有意识到我这样问是疯了,所以我道歉 因此,我不会尝试它,我会去尝试你。lsp例程
谢谢你,马克

mark 发表于 2007-12-21 12:13:30


杰夫,我刚刚试过lisp程序;它工作得很好
再次感谢您
标记
页: [1] 2
查看完整版本: 在ACAD中使用一次选择集?