明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1623|回复: 13

[提问] 判断为动态块

[复制链接]
发表于 2021-5-31 11:49:35 | 显示全部楼层 |阅读模式
请问一下,怎么判断一个块是动态块?
发表于 2021-6-2 15:25:57 | 显示全部楼层
(if (setq ent (car (entsel "\n请选择块:")))
    (if (= (vlax-get-property
                (setq obj (vlax-ename->vla-object ent))
                "ObjectName"
           )
           "AcDbBlockReference"
        )
        (If (= (vlax-get-property obj "IsDynamicBlock") 0)
            (princ "\n选取的是动态块!")
            (princ "\n选取的是非动态块!")
        )
        (princ "\n选取的不是块!")
    )
    (princ "\n没有选取图元!")
)
发表于 2021-6-2 19:34:40 | 显示全部楼层
(setq
;;常用VLA对象、集合
*ACAD*  (vlax-get-acad-object)
*DOC*   (vla-get-ActiveDocument *ACAD*)
*DOCS*  (vla-get-Documents *ACAD*)
*MS*    (vla-get-modelSpace *DOC*)
*PS*    (vla-get-paperSpace *DOC*)
*BLKS*  (vla-get-Blocks *DOC*)
*LAYS*  (vla-get-Layers *DOC*)
*LTS*   (vla-get-Linetypes *DOC*)
*STS*   (vla-get-TextStyles *DOC*)
*GRPS*  (vla-get-groups *DOC*)
*DIMS*  (vla-get-DimStyles *DOC*)
*LOUTS* (vla-get-Layouts *DOC*)
*VPS*   (vla-get-Viewports *DOC*)
*VS*    (vla-get-Views *DOC*)
*DICS*  (vla-get-Dictionaries *DOC*)
*Layouts* (vla-get-Layouts *doc*)
)

(vla-get-isdynamicblock (vla-item *BLKS* "你的块名"))
发表于 2021-5-31 15:05:18 | 显示全部楼层
IsDynamicBlock
指定块是否为动态块。
语法

object.IsDynamicBlock

object

Block, BlockRef, MInsertBlock
使用该属性的对象。

IsDynamicBlock

Boolean[布尔值]; 只读

TRUE: 块为动态块。

FALSE: 块不是动态块。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2021-5-31 15:03:01 | 显示全部楼层

 楼主| 发表于 2021-5-31 15:54:23 | 显示全部楼层
叮咚 发表于 2021-5-31 15:05
IsDynamicBlock
指定块是否为动态块。
语法

请问,这个用lisp怎么写。我找到一个参数(102 . {ACAD_XDICTIONARY),不知道是不是这个
发表于 2021-5-31 18:52:47 | 显示全部楼层
(setq en (car (entsel "\n请选择块:")))
              (= (vla-get-objectname (vlax-ename->vla-object en))
                 "AcDbBlockReference"
              )
是不是这么判断呀?
发表于 2021-5-31 20:43:05 | 显示全部楼层
命令: (vla-get-isdynamicblock (e2o (car (entsel))))
选择对象: :vlax-true 真,为动态块
 楼主| 发表于 2021-6-1 10:30:04 | 显示全部楼层
vitalgg 发表于 2021-5-31 20:43
命令: (vla-get-isdynamicblock (e2o (car (entsel))))
选择对象: :vlax-true 真,为动态块

vla-get-isdynamicblock这个函数好像没有的,
另外,我可能没说清楚,我不是要查具体某个对象是否是动态块
我要查某一个块的定义,是否是动态块
发表于 2021-6-1 21:31:19 | 显示全部楼层
54256 发表于 2021-6-1 10:30
vla-get-isdynamicblock这个函数好像没有的,
另外,我可能没说清楚,我不是要查具体某个对象是否是动态 ...

你没有试,怎么知道没有。 (vl-load-com) (type vla-get-isdynamicblock) 看是不是返回 SUBR
具体来说,这不是函数,是block对象的属性(不是块属性,是activeX object 的属性)。
 楼主| 发表于 2021-6-2 10:54:45 | 显示全部楼层
vitalgg 发表于 2021-6-1 21:31
你没有试,怎么知道没有。 (vl-load-com) (type vla-get-isdynamicblock) 看是不是返回 SUBR
具体来说 ...

e2o应该是你的函数,我这里没定义,在明经的函数手册里我查不到vla-get-isdynamicblock,所以我不知道这个函数的参数应该怎么写。
我要的是比如说块名“1234”的块是不是动态块
谢谢指教
发表于 2021-6-2 11:28:25 | 显示全部楼层
e2o 相当于 vlax-ename->vla-object
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 00:54 , Processed in 0.190277 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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