Humanway 发表于 2020-9-26 18:41:23

高老师,请教Entmake创建动态块的问题

本帖最后由 highflybir 于 2020-9-26 19:37 编辑

对于有可见性的动态块,有两个问题,着实找不到办法
1、怎么获得有可见性动态块,当前的显示状态
2、用entmake创建有可见性的动态块,怎么在创建时,指定显示状态
谢谢

smartstar 发表于 2020-9-28 11:16:39

据说entmake不能创建动态块,可以插入动态块:
;;说明:获取动态块原始块名
;;参数:msg:拾取图元提示
;;返回:动态块原始块名
(defun ddk-name (msg / entity)
      (setq entity (vla-get-EffectiveName (vlax-ename->vla-object (car (while (not entity)
                                                                                                               (setq entity (entsel msg)))
                                                                                                             )
                                                            )
                         )
      )
)
;;[功能] Entmake插入块(插入属性块时,属性丢失) by自贡黄明儒整理
;;(EntmakeInsert "ccd1" (getpoint))
(defun EntmakeInsert(name pt)
(entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 pt)))
)
(defun c:tt()
(setq e (ddk-name"\n请选择动态块:"))
(setq pt (getpoint "\n请确定插入点:"))
(EntmakeInsert e pt)
(princ)
)
参考:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=177974&highlight=entmake%2B%B6%AF%CC%AC

Humanway 发表于 2020-9-29 10:27:08

smartstar 发表于 2020-9-28 11:16
据说entmake不能创建动态块,可以插入动态块:
;;说明:获取动态块原始块名
;;参数:msg:拾取图元提示


请问怎样列出动态块的可见性列表,并指定具体的可见性呢?

gaics 发表于 2020-9-29 12:15:04

本帖最后由 gaics 于 2020-9-29 16:25 编辑

Humanway 发表于 2020-9-29 10:27
请问怎样列出动态块的可见性列表,并指定具体的可见性呢?
[提问] 请教一下如何操作动态块
参考这篇帖子
;;;获取所有允许的可见性状态
(defun get-visibility-allowedvalues (obj / pros i pro values value lst)
(setq pros (vlax-invoke obj 'GetDynamicBlockProperties))
(setq i 0)
(while (< i (length pros))
    (setq pro (nth i pros))
    (if      (wcmatch (vla-get-propertyname pro) "可见性*,Visibility*")
      (setq values (vlax-safearray->list
                     (vlax-variant-value (vla-get-allowedvalues pro))
                   )
      )
    )
    (setq i (1+ i))
)
(setq i 0 lst '())
(repeat (length values)
    (setq value (vlax-variant-value (nth i values)))
    (setq lst(cons value lst))
    (setq i (1+ i))
)
lst
)
;;;获取当前可见性状态
(defun get-visibility-value (obj / pros i pro value)
(setq pros (vlax-invoke obj 'GetDynamicBlockProperties))
(setq i 0)
(while (< i (length pros))
    (setq pro (nth i pros))
    (if      (wcmatch (vla-get-propertyname pro) "可见性*,Visibility*")
      (setq value (vlax-variant-value (vla-get-value pro)))
    )
    (setq i (1+ i))
)
value
)
;;;设置可见性状态
(defun put-visibility-value (obj value / pros i pro)
(setq pros (vlax-invoke obj 'GetDynamicBlockProperties))
(setq i 0)
(while (< i (length pros))
    (setq pro (nth i pros))
    (if      (wcmatch (vla-get-propertyname pro) "可见性*,Visibility*")
      (vla-put-value pro value)
    )
    (setq i (1+ i))
)
)


页: [1]
查看完整版本: 高老师,请教Entmake创建动态块的问题