伪书虫86 发表于 2015-9-28 16:16:21

有没有懂动态块的大师啊,帮帮忙啊

本帖最后由 伪书虫86 于 2015-9-28 16:55 编辑

动态块的一个“可见性”下一般有好几个“可见性状态”
我现在想获得其中某一个“可见性状态”下所包含的图元
我尝试了entnext和vlax-for两种方法,最后得到的都是整个动态块所包含的图元
请教下大师们,这个问题该怎么破呢

ivde 发表于 2015-9-28 16:16:22

,

本帖最后由 ivde 于 2015-9-30 08:11 编辑

可见性就是把其中一些图元的 visible 属性设为 :vlax-false (不可见),可见图元 visible 属性为 :vlax-true

lucas_3333 发表于 2015-9-28 16:36:43

最好上传动态块

伪书虫86 发表于 2015-9-28 16:55:40

lucas_3333 发表于 2015-9-28 16:36 static/image/common/back.gif
最好上传动态块

动态块已上传

lucas_3333 发表于 2015-9-28 17:37:31



;; Get Dynamic Block Visibility State-Lee Mac
;; Returns the value of the Visibility Parameter of a Dynamic Block (if present)
;; blk - VLA Dynamic Block Reference object
;; Returns: Value of Visibility Parameter, else nil

(defun LM:getvisibilitystate ( blk )
    (LM:getdynpropvalue blk (LM:getvisibilityparametername blk))
)

;; Get Visibility Parameter Name-Lee Mac
;; Returns the name of the Visibility Parameter of a Dynamic Block (if present)
;; blk - VLA Dynamic Block Reference object
;; Returns: Name of Visibility Parameter, else nil

(defun LM:getvisibilityparametername ( blk / vis )
    (if
      (and
            (vlax-property-available-p blk 'effectivename)
            (setq blk
                (vla-item
                  (vla-get-blocks (vla-get-document blk))
                  (vla-get-effectivename blk)
                )
            )
            (= :vlax-true (vla-get-isdynamicblock blk))
            (= :vlax-true (vla-get-hasextensiondictionary blk))
            (setq vis
                (vl-some
                   '(lambda ( pair )
                        (if
                            (and
                              (= 360 (car pair))
                              (= "BLOCKVISIBILITYPARAMETER" (cdr (assoc 0 (entget (cdr pair)))))
                            )
                            (cdr pair)
                        )
                  )
                  (dictsearch
                        (vlax-vla-object->ename (vla-getextensiondictionary blk))
                        "ACAD_ENHANCEDBLOCK"
                  )
                )
            )
      )
      (cdr (assoc 301 (entget vis)))
    )
)



(setq obj (vlax-ename->vla-object (car (entsel "\nSelect Block: "))))
(setq blk_vb (LM:getvisibilitystate obj))

e2002 发表于 2015-9-28 18:03:05

应该是有办法获得块定义对象中各个VS下的对象的,查下帮助看看?

lucas_3333 发表于 2015-9-28 20:10:14

e2002 发表于 2015-9-28 18:03 static/image/common/back.gif
应该是有办法获得块定义对象中各个VS下的对象的,查下帮助看看?

1.插入动态块的一个临时的参考
2.设置可见性状态参数,如 "三联单控开"
3.检索临时参考的匿名块名称。
4.遍历匿名块的定义

伪书虫86 发表于 2015-9-28 20:57:04

lucas_3333 发表于 2015-9-28 20:10
1.插入动态块的一个临时的参考
2.设置可见性状态参数,如 "三联单控开"
3.检索临时参考的匿名块名称。


没有用的,难道你试过成功了?

伪书虫86 发表于 2015-9-28 20:59:49

e2002 发表于 2015-9-28 18:03
应该是有办法获得块定义对象中各个VS下的对象的,查下帮助看看?

是的,按道理是应该有个参数或者什么是用来记录这个的,只是目前尝试的方法还没找到。。。

lucas_3333 发表于 2015-9-28 21:02:15

伪书虫86 发表于 2015-9-28 20:57 static/image/common/back.gif
没有用的,难道你试过成功了?

难道你试过?不成功? ,贴出你的代码。。。
页: [1] 2 3
查看完整版本: 有没有懂动态块的大师啊,帮帮忙啊