马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天帮一位坛友测试一个动态块,发现 xdrx_dynblock_getproperty 有漏项,附上完整的 vla 方法及测试 Dwg
- ;;获取动态块的全部参数 by eachy 2013.9.24
- (defun c:GetallDynBlkProperties (/ lisp-value e blkref Properties)
- (defun lisp-value (v)
- (cond
- ((= (type v) 'variant)
- (lisp-value (variant-value v))
- )
- ((= (type v) 'safearray)
- (list (mapcar 'lisp-value (safearray-value v))) ;_Modify by eachy
- )
- (t v)
- )
- )
- (if
- (and (setq e (car (entsel "\nPick Insert: ")))
- (setq blkref (vlax-ename->vla-object e))
- (if (and (= (vla-get-objectname blkref) "AcDbBlockReference")
- (= (vla-get-isdynamicblock blkref) :vlax-true)
- )
- t
- (progn
- (princ "\nNot DynmicBlock!")
- nil
- )
- )
- )
- (progn
- (setq Properties
- (mapcar
- '(lambda (x)
- (list (cons "AllowedValues"
- (lisp-value (vla-get-allowedvalues x))
- )
- (cons "Description" (vla-get-description x))
- (cons "PropertyName" (vla-get-propertyname x))
- (cons "ReadOnly" (vla-get-readonly x))
- (cons "Show" (vla-get-show x))
- (cons "UnitsType" (lisp-value (vla-get-unitstype x)))
- (cons "Value" (lisp-value (vla-get-value x)))
- )
- )
- (safearray-value
- (variant-value
- (vla-getdynamicblockproperties blkref)
- )
- )
- )
- )
- (foreach x Properties
- (princ "\n(")
- (foreach y x
- (princ "\n\t ")
- (princ y)
- )
- (princ "\n)")
- )
- )
- )
- (princ)
- )
有了这些属性就可以用 Vlisp 控制动态块的各个参数状态了!
|