Lt Dan's l 发表于 2022-7-6 09:00:01

是否将项目添加到翻转参数?

当你
(vlax-dump-object
(setq v (vlax-ename->vla-object (car (entsel)))
) t
)
 
得到的翻转参数
; IAcadBlockFlipActionEntity: IAcadBlockFlipActionEntity Interface
; Property values:
;   ActionType (RO) = "Flip"
; etc.
;   ObjectName (RO) = "AcDbBlockFlipActionEntity"
; etc.
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SelectionSet ()
;   SetSelectionSet (1)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
 
但是如果你尝试使用
(vla选择集v)

(vlax调用v’SelectionSet)
你会得到
; 错误:无函数定义:VLA-SELECTIONSET
 
如何在不使用命令调用的情况下将对象添加到flip参数?

Lt Dan's l 发表于 2022-7-6 10:42:49

我想出来了。
 
注意:使用编辑动态块(在块编辑器中)。
 
(defun c:test ( / ss->lst action ss )
(vl-load-com)
(defun ss->lst ( ss flag / id lst )
   (if (eq 'PICKSET (type ss))
   (repeat (setq id (sslength ss))
       (
         (lambda ( name )
         (setq lst
             (cons
               (if flag (vlax-ename->vla-object name)
               name
               )lst
             )
         )
         )(ssname ss (setq id (1- id)))
       )
   )
   )
)
(if
   (and (or (eq 1 (getvar 'blockeditor))(prompt "\n**Must be in block editor to use!**"))
   (setq action (car (entsel "\nSelect an Action Entity: ")))
   (setq action (vlax-ename->vla-object action))
   (setq ss (ss->lst (ssget) t))
   )
   (
   (lambda ( group )
       (vlax-invoke-method action 'SetSelectionSet
         (vlax-make-variant
         (vlax-safearray-fill
             (vlax-make-safearray vlax-vbobject
               (cons 0 (1- (length group)))
             ) group
         )
         )
       )
   )
   (append
       (vlax-safearray->list
         (vlax-variant-value
         (vlax-invoke-method action 'SelectionSet)
         )
       ) ss
   )
   )
) (princ)
)
页: [1]
查看完整版本: 是否将项目添加到翻转参数?