翻转参数,动态块
有人知道使用auto-lisp-visual lisp切换指定翻转参数的干净方法吗?我使用getdynprops、getdynpropvalue、PutdynnPropValue[由Jeff Mishler根据Steve Doman、Herman Mayfarth和Tony Tanzillo的代码编写]来满足大多数动态块更改需求,但我无法实现,它们似乎不适用于flip参数。 考虑以下功能:
;; Toggle Flip State-Lee Mac
(defun toggleflipstate ( obj )
(if
(and
(= "AcDbBlockReference" (vla-get-objectname obj))
(= :vlax-true (vla-get-isdynamicblock obj))
)
(vl-some
(function
(lambda ( p )
(if (equal '(0 1) (vlax-get p 'allowedvalues)) ;; likely to be a flip parameter
(vla-put-value p (vlax-make-variant (- 1 (vlax-get p 'value)) vlax-vbinteger))
)
)
)
(vlax-invoke obj 'getdynamicblockproperties)
)
)
)
用法:
示例程序:
(defun c:flip ( / obj )
(if (setq obj (car (entsel)))
(toggleflipstate (vlax-ename->vla-object obj))
)
(princ)
)
(vl-load-com) (princ) 李·麦克,
我有多个翻转状态。有没有办法把我想设置的名称和参数传递给它?有些是用户可以访问的,有些不是,因为它们是由查找参数控制的。
当然,通常可以使用我的Set Dynamic Property Value函数。
对于您的情况:
(LM:SetDynamicPropValue <VLA-Object> "UB_FLIP" 1)
或:
(LM:SetDynamicPropValue <VLA-Object> "UB_FLIP" 0) 您好,我在设置翻转参数方面有一些问题。我使用了您的“设置动态属性值”代码:
运行脚本后出现错误:
6
我的翻转参数名称:
翻转状态0
翻转状态1
我的动态块名称:
F\u MOD\u DIP\u SW\u水平
我需要一些帮助。。。 第一个参数必须是有效的VLA对象——有关如何向函数提供VLA对象,请参阅我前面的示例程序。 李,
我知道这是一个老线程,但是,有没有办法让代码通过窗口选择来翻转多个块?
(defun c:flip ( / obj )
(if (setq obj (car (entsel)))
(toggleflipstate (vlax-ename->vla-object obj))
)
(princ)
)
(vl-load-com) (princ)
当然可以-请尝试以下操作:
从这里切换翻转状态功能。 李,
做翻转动作。lsp程序仅翻转遇到的第一个翻转参数?如果动态块中定义了多个翻转参数,该怎么办? 李,
非常感谢!!!!
布瑞恩
页:
[1]
2