[ARX]再问一个ARX选择集操做的问题
AUTOCAD中执行一些命令时(如MOVE)时键入关键字“P”可获取最近操作的选择集,如果我预存一个选择集S1,当执行这些命令时键入关键字“S1”时,把选择集S1加入到当前选择集是该如何做。回复
在ARX中这就属于处理两个选择集, 将选择集S1中的实体加到选择集S2中, 查一下acedSSAdd()函数的用法. 我的困难在于执行move命令时怎样通过关键字”S1“来调用函数,还有在有AUTOCAD命令在执行的时候怎样把选择集S1加入到当前选择集中。回复
如果你想通过acedCommand调用AutoCAD命令来处理选择集,那是否用LISP程序更方便一些? 那用LISP又该如何解决呢,LISP可以做ARX也应可以做,我要得是效果,能解决问题就行。关于”效果“ 我想再补充一下:
用过AUTOCAD的人,一定用过"move"、"rotate"、“mirror”等命令,用这些命令时也应该尝试过键入关键字“p”的方式将最近操做过的选择集加入到当前选择集中,我要做的无非是将“P”换成”S1“,将最近操作过的选择集替换成我保存的选择集(如S1) ssGet可以加p参数的
回复
当然lisp能做的arx也能做,只是你更熟悉哪种呢?如果用lisp不知道如何做,就先别考虑arx了.在arx上用很多的acedCommand执行AutoCAD命令,不如直接用lisp. 我说的是在AUTOCAD中执move等命令键入“S1”的效果,而并非有acedCommand执行AutoCAD命令,
好像AcEdSSGetKwordCallbackPtr和AcEdSSSetKwordCallbackPtr可实现类似功能,可惜没例子,能否给两个。
回复
你不是只看效果吗?在AutoCAD模型空间中画一些Circle, Line, Arc, 执行
(setq s1 (ssget "X" (list (cons 0 "circle"))))<BR>(setq s2 (ssget "X" (list (cons 0 "line"))))<BR>(setq s3 (ssget "X" (list (cons 0 "arc"))))
在Command Line输入: Move
Select objects: !S1
页:
[1]