明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6282|回复: 20

[已解答] 有没有懂动态块的大师啊,帮帮忙啊

[复制链接]
发表于 2015-9-28 16:16:21 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 伪书虫86 于 2015-9-28 16:55 编辑

动态块的一个“可见性”下一般有好几个“可见性状态”
我现在想获得其中某一个“可见性状态”下所包含的图元
我尝试了entnext和vlax-for两种方法,最后得到的都是整个动态块所包含的图元
请教下大师们,这个问题该怎么破呢
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

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

点评

楼主,你具体想干嘛? 你是想获取"单联单控开关" 或"三联单控开" 下的所有对象集合?  发表于 2015-9-28 19:12
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-9-28 16:16:22 | 显示全部楼层

,

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

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

点评

兄弟,高人啊。刚测试了下,的确有这个属性呢  发表于 2015-9-30 09:13
回复

使用道具 举报

发表于 2015-9-28 16:36:43 | 显示全部楼层
最好上传动态块
回复

使用道具 举报

 楼主| 发表于 2015-9-28 16:55:40 | 显示全部楼层
lucas_3333 发表于 2015-9-28 16:36
最好上传动态块

动态块已上传
回复

使用道具 举报

发表于 2015-9-28 17:37:31 | 显示全部楼层
  1. ;; Get Dynamic Block Visibility State  -  Lee Mac
  2. ;; Returns the value of the Visibility Parameter of a Dynamic Block (if present)
  3. ;; blk - [vla] VLA Dynamic Block Reference object
  4. ;; Returns: [str] Value of Visibility Parameter, else nil

  5. (defun LM:getvisibilitystate ( blk )
  6.     (LM:getdynpropvalue blk (LM:getvisibilityparametername blk))
  7. )

  8. ;; Get Visibility Parameter Name  -  Lee Mac
  9. ;; Returns the name of the Visibility Parameter of a Dynamic Block (if present)
  10. ;; blk - [vla] VLA Dynamic Block Reference object
  11. ;; Returns: [str] Name of Visibility Parameter, else nil

  12. (defun LM:getvisibilityparametername ( blk / vis )  
  13.     (if
  14.         (and
  15.             (vlax-property-available-p blk 'effectivename)
  16.             (setq blk
  17.                 (vla-item
  18.                     (vla-get-blocks (vla-get-document blk))
  19.                     (vla-get-effectivename blk)
  20.                 )
  21.             )
  22.             (= :vlax-true (vla-get-isdynamicblock blk))
  23.             (= :vlax-true (vla-get-hasextensiondictionary blk))
  24.             (setq vis
  25.                 (vl-some
  26.                    '(lambda ( pair )
  27.                         (if
  28.                             (and
  29.                                 (= 360 (car pair))
  30.                                 (= "BLOCKVISIBILITYPARAMETER" (cdr (assoc 0 (entget (cdr pair)))))
  31.                             )
  32.                             (cdr pair)
  33.                         )
  34.                     )
  35.                     (dictsearch
  36.                         (vlax-vla-object->ename (vla-getextensiondictionary blk))
  37.                         "ACAD_ENHANCEDBLOCK"
  38.                     )
  39.                 )
  40.             )
  41.         )
  42.         (cdr (assoc 301 (entget vis)))
  43.     )
  44. )


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

回复

使用道具 举报

发表于 2015-9-28 18:03:05 | 显示全部楼层
应该是有办法获得块定义对象中各个VS下的对象的,查下帮助看看?
回复

使用道具 举报

发表于 2015-9-28 20:10:14 | 显示全部楼层
e2002 发表于 2015-9-28 18:03
应该是有办法获得块定义对象中各个VS下的对象的,查下帮助看看?

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

使用道具 举报

 楼主| 发表于 2015-9-28 20:57:04 来自手机 | 显示全部楼层
lucas_3333 发表于 2015-9-28 20:10
1.插入动态块的一个临时的参考
2.设置可见性状态参数,如 "三联单控开"
3.检索临时参考的匿名块名称。

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

使用道具 举报

 楼主| 发表于 2015-9-28 20:59:49 来自手机 | 显示全部楼层
e2002 发表于 2015-9-28 18:03
应该是有办法获得块定义对象中各个VS下的对象的,查下帮助看看?

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

使用道具 举报

发表于 2015-9-28 21:02:15 | 显示全部楼层
伪书虫86 发表于 2015-9-28 20:57
没有用的,难道你试过成功了?

难道你试过?不成功? ,贴出你的代码。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 09:03 , Processed in 0.204437 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表