pearldrumbum 发表于 2022-7-5 19:06:29

不,它们不是。它们只是几行文字

Lee Mac 发表于 2022-7-5 19:09:29

谢谢大家的推荐,我很高兴它能帮上忙。

pearldrumbum 发表于 2022-7-5 19:14:50

 
谢谢你,李,为帮助我们这些新手所做的一切!

pearldrumbum 发表于 2022-7-5 19:17:34

我在实现setdynpropvalue函数时遇到了一些问题。
 

(setq lastBlock (vlax-ename->vla-object (entlast)))
(setdynpropvalue ( lastBlock "Visibility1" "4")
是抛出错误:错误的参数类型lentyp nil
 
据我所知,这意味着它接收的是nil而不是vla对象,但为什么?

iconeo 发表于 2022-7-5 19:19:31

 
这行吗?
 
(LM:SetVisibilityState (vlax-ename->vla-object (entlast)) "4")

pearldrumbum 发表于 2022-7-5 19:23:37

 
这也返回了相同的错误

iconeo 发表于 2022-7-5 19:26:08

我能看到完整的代码和代码块吗?

iconeo 发表于 2022-7-5 19:27:44

你确定entlast确实是动态块吗?

pearldrumbum 发表于 2022-7-5 19:31:21

附属的。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。图纸

iconeo 发表于 2022-7-5 19:34:25

7
 
我认为您只需要优雅地退出INSERT命令。我在那里添加了暂停,等待你的鼠标点击,然后用Lisp程序继续。
 
此外,在李-麦克通话中,你有一组太多的paren。
页: 1 [2]
查看完整版本: 插入动态块并