谢谢你,李,为帮助我们这些新手所做的一切! 我在实现setdynpropvalue函数时遇到了一些问题。
(setq lastBlock (vlax-ename->vla-object (entlast)))
(setdynpropvalue ( lastBlock "Visibility1" "4")
是抛出错误:错误的参数类型lentyp nil
据我所知,这意味着它接收的是nil而不是vla对象,但为什么?
这行吗?
(LM:SetVisibilityState (vlax-ename->vla-object (entlast)) "4")
这也返回了相同的错误 我能看到完整的代码和代码块吗? 你确定entlast确实是动态块吗? 附属的。dwg为空白,其中包含一个块。代码如下
(defun C:tblk(); will have 5 parameters used to modify block attributes
(setq oattreq (getvar 'attreq))
(setvar 'attreq 0)
(command "_insert" "IO")
(command "S" "1" "R" "0")
(setvar 'attreq oattreq)
;(LM:setdynpropvalue ( (vlax-ename->vla-object (entlast)) "Visbility1" "4")
(LM:SetVisibilityState ( (vlax-ename->vla-object (entlast)) "4")
)
;; Set Dynamic Block Property Value-Lee Mac
;; Modifies the value of a Dynamic Block property (if present)
;; blk - VLA Dynamic Block Reference object
;; prp - Dynamic Block property name (case-insensitive)
;; val - New value for property
;; Returns: New value if successful, else nil
(defun LM:setdynpropvalue ( blk prp val )
(setq prp (strcase prp))
(vl-some
'(lambda ( x )
(if (= prp (strcase (vla-get-propertyname x)))
(progn
(vla-put-value x (vlax-make-variant val (vlax-variant-type (vla-get-value x))))
(cond (val) (t))
)
)
)
(vlax-invoke blk 'getdynamicblockproperties)
)
)
;; Set Dynamic Block Visibility State-Lee Mac
;; Sets the Visibility Parameter of a Dynamic Block (if present) to a specific value (if allowed)
;; blk - VLA Dynamic Block Reference object
;; val - Visibility State Parameter value
;; Returns: New value of Visibility Parameter, else nil
(defun LM:SetVisibilityState ( blk val / vis )
(if
(and
(setq vis (LM:getvisibilityparametername blk))
(member (strcase val) (mapcar 'strcase (LM:getdynpropallowedvalues blk vis)))
)
(LM:setdynpropvalue blk vis val)
)
)
LDT。图纸 7
我认为您只需要优雅地退出INSERT命令。我在那里添加了暂停,等待你的鼠标点击,然后用Lisp程序继续。
此外,在李-麦克通话中,你有一组太多的paren。
页:
1
[2]