Humanway 发表于 2019-11-7 20:37:32

请问老师,如何提供动态块的可见性属性

本帖最后由 highflybir 于 2020-9-16 09:34 编辑

在论坛里找到一段可以提取动态块可见性属性的代码:
(defun c:TT ()
(setq OBJ(vlax-ename->vla-object (car (entsel))))
;;获取动态块的属性
(setq PROS (vlax-invoke OBJ 'getdynamicblockproperties))
;;;----------------------------------------------------------
;;获取属性名
(mapcar '(lambda (V) (vlax-get V 'propertyName)) PROS)
;;获取属性是否为只读
(mapcar 'vla-get-readOnly PROS)
;;获取属性是否显示
(mapcar 'vla-get-show PROS)
;;获取所有属性的允许值
(mapcar '(lambda (V) (vlax-get V 'allowedValues)) PROS)
;;获取所有属性的当前值
(mapcar '(lambda (V) (vlax-get V 'Value)) PROS)
)
但我想从例表中提取动态块的属性:
(setq OBJ(vlax-ename->vla-object (tblobjname "block" "IPC_-1")))
就无法提取,请问老师,这种情况,可以用什么方式提取,谢谢

edata 发表于 2019-11-8 10:48:56

block是块定义,你需要指定插入块的块参照(0 . Insert)对象

Humanway 发表于 2019-11-8 13:52:51

我需要获得列表中已定义好的指定动态块的所有属性的允许值,而不是图纸上已插入块的,需要针对不同可见性,赋不同的值;
1、我要列出出图纸中所有的块;
2、从列表中,选出我要处理的块名;
3、如果该块有可见性属性,需要拿到所有的属性值;
4、对不同的可见性属性,在指定的"ATTRIB“中赋不同的值;比如:型号
主要就是实现上述功能,1、2步都搞定了,第3步卡壳了:sleepy:

guankuiwu 发表于 2021-4-9 22:09:47

如果该块有可见性属性,需要拿到所有的属性值列表.

Humanway 发表于 2021-4-16 14:51:46

guankuiwu 发表于 2021-4-9 22:09
如果该块有可见性属性,需要拿到所有的属性值列表.

(defun c:getshow (/ ent obj AllowedValues ppts)
(setq        ent              (car (entsel))
        obj              (vlax-ename->vla-object ent)
        AllowedValues nil
)
(if (setq obj (vlax-invoke obj 'GetDynamicBlockProperties))
    (progn
      (setq ppts (car obj)
          obj       (cdr obj)
      )
      (while
        (and (not (if (= (type (vlax-get ppts 'Value)) 'STR)
                  (setq AllowedValues (vlax-get ppts 'allowedvalues))
                  )
             )
             obj
        )
       (setq ppts (car obj)
             obj(cdr obj)
       )
      )
    )
)
(if AllowedValues
        (print allowedvalues)
        (print "无可见性属性")
      )
(princ)
)

sunwei2009 发表于 2021-4-18 02:45:11

谢谢分享 学习了

guankuiwu 发表于 2021-4-18 10:51:21

Humanway 发表于 2021-4-16 14:51


太谢谢了!!
页: [1]
查看完整版本: 请问老师,如何提供动态块的可见性属性