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

在ACAD中使用一次选择集?


,我在VBA中创建了一个名为“Im”的选择集,但我的问题曾经在ACAD中,我还能引用该Sset名称吗?
换句话说,在ACAD中,如果我键入“选择”,我意识到我可以为“上一个”键入P,但是无论如何都可以键入
“选择然后Im”并在ACAD中识别该选择集吗?
谢谢!
马克
**** Hidden Message *****

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


哎呀!听起来很可怕
这在ACAD是完全没有意义的事情之一。
我们可以创建所有这些选择集和过滤器等。然而在VBA,一旦我们到了ACAD,我们就不能再直呼其名了?那是愚蠢的。
我想知道小组方法?我还没仔细看过。
此外,在ACAD,我们可以创建过滤器并按名称引用它们,但我不确定我们能否在VBA创建一个过滤器,然后在ACAD引用它。
有些事情我“可能”能够做,但不应该做。
我可以(使用我的函数)将ACAD变量Sset发送到LISP,然后“可能”它(选择集)将至少通过使用!在ACAD,嗯。必须有一种方法来引用ACAD标记中的命名sset

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


我的意思是说VBA变量Sset到LISP
OMG!
马克

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


正如我和其他人在帖子中所说的那样,无论出于何种意图和目的,都没有。

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

虽然用一点点lisp就可以做到.....
下面是lisp:
(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是区分大小写的。

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


嗨杰夫,
再次感谢!当然,你可以问我;你可以问任何事情。
如果有人只是说不要这样做,那么没有给出一些例子就太疯狂了,那么它并不总是能阻止他们。
至于那个VLAX类,我没有使用它,我也不会使用它
,但是,我发布的2个缩小范围的函数对我来说效果很好。
我能够将getfiled和setq方法与LISP以及我的VBA代码一起使用,并且我遇到了绝对0个问题。
是的!我确实有一个使用“打开FIle对话框”方法的版本,但是对于如此小的返回(例如,使用对话框提示用户选择一个文件)需要很多代码。当然,如果可能的话,我宁愿在VBA中完成所有操作,这是有道理的。出于其他原因,我也经常使用VBScripting代码,但“可能”是可以的;它似乎工作正常。
再次感谢您的代码;我会按照你的建议去做;我将创建一个单独的例程,并将其与 VBA 项目一起加载。
我打算今天早上来尝试一下,然后做这一切。天哪!
杰夫,我不是最有经验的程序员,我只是问它是否可以合并,我确实很期待你的答案,这将是太难了,没有意义。我只是因为我们可以连接到VLISP类型库,所以这可能是可能的;我没有意识到我问这个问题是疯子,所以我道歉。 因此,我不会尝试它,我会去尝试你.lsp例程。
谢谢
马克

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


Jeff
我刚刚尝试了lisp例程;它工作得很好!
再次感谢您!
标记

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

标记,
虽然它与选择集无关,但它与您尝试在2之间来回传递lisp和VBA变量的事实有关。同样,他试图引导您远离不可避免的头部撞击,这将发生(正在发生?)。
在Glenn提到的那个线程中,您说您不喜欢FileOpenDialog代码,因为它太长了。问题是,它已经编写好,所以您不必每次使用它都重写它。当您使用VL.Application.时,同样的、精确的事情也是如此,该代码可能比您尝试不使用的代码大得多。不,你看不到它,但它还是在那里。所以你没有在你的宏中添加一点点代码,而是引用了一个更大的代码。
这有意义吗?请注意,我不是想痛斥你的做法。我只是想解释为什么其他人试图将你引向其他方向。他们中的许多人,包括我自己,都走过你走的路。
以下内容应该放在另一个线程中,但我现在正在输入,所以就在这里了。
而且,FWIW,我确实使用了VLAX.CLS的丑陋之处,与Frank O组合的另一个CURVE.CLS相关联,它向VBA公开了(vlax-curve-*)lisp函数。当然它们很丑,但它们是无需重新发明轮子即可完成工作的工具。然而,如果有VBA特定的方法可以在没有VLAX.CLS和CURVE.CLS的情况下获取曲线数据,我肯定会抓住机会使用它。

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


我做了一些“打扫房子”,怎么样?
页: [1]
查看完整版本: 在ACAD中使用一次选择集?