找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3454|回复: 10

[求助] [求助]:LISP程序中如何判断一个插入的图块中含有几个定义的属性

[复制链接]
发表于 2004-12-23 13:38:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
  LISP程序中如何判断一个插入的图块中含有几个定义的属性,主要是在插入时利用COMMAND命令给属性赋值,需要根据属性个数来写。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-23 13:56:01 | 显示全部楼层
vla方法:getattributs
vl:找到insert实体,while  entnext 为属性实体
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 14:12:14 | 显示全部楼层
一段小程序,cnt为插入的图块中含有的属性数。
(defun cal_number        (blk / dxf_search_blk ent)
        (setq dxf_search_blk (tblsearch "block" blk))
        (if        dxf_search_blk
                (progn
                        (setq cnt 0)
                        (setq ent (cdr (assoc '-2 dxf_search_blk)))
                        (while ent
                                (if        (= (cdr (assoc '0 (entget ent))) "ATTDEF")
                                        (setq cnt (1+ cnt))
                                )
                                (setq ent (entnext ent))
                        )
                )
        )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-23 16:12:28 | 显示全部楼层
  首先要感谢楼上的解答。
  也许我没说清楚,我的意思是如何判断一个“将要插入”的图块中含有几个属性值。而不是图中已有块的属性个数。
  比如我要插入本图的图形文件中设定了四个属性值。我的LISP命令为以下代码:
[php]
  (command ".insert" fn pt rqz_bj "" "" A B C D)
[/php]
如果只有三个,上述代码会出错。就需要写成以下的形式:
[php]
  (command ".insert" fn pt rqz_bj "" "" A B C)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 18:54:47 | 显示全部楼层
如何判断一个“将要插入”的图块中含有几个属性值,这个问题我以前编程时曾碰到过。
1.最初时是这样解决的,假如“将要插入”的图块名称为bk,该图块位于"D:\\PLOT\\bk.dwg"文件中,可以在我上传的函数cal_number 开始处输入以下判断
(if(null (tblsearch "block" "bk"))
(command "insert" "D:\\PLOT\\bk.dwg" ^ c)
)
然后利用cal_number函数计算出所含属性数cnt。最后在程序中使用purge命令将虚拟插入的块清除。
2.第二种办法为使用emtmake函数定义一公用模板,程序较复杂。在插入带属性值的块时不会出错。
3.第三种办法最简单,就是在插入图块前将系统变量"attreq"改为0,程序结束时再将"attreq"还原,这种方法在插入带属性值的块时也不会出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 21:53:59 | 显示全部楼层
好办法!又学了一招,不过我一直就认为编程使用属性块的人应该知道块中有几个属性和其顺序,否则使用属性块干吗呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-25 10:40:06 | 显示全部楼层
我觉得还可以监视cmdactive的值,这样就可以知道(command ".insert" fn pt rqz_bj "" "" A B C)是否执行完毕,否则可以继续赋值。直到cmdactive为0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-27 16:18:02 | 显示全部楼层
太简单了。插入时数一数不就知道了,至于那么麻烦吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-28 10:58:46 | 显示全部楼层
  谢谢各位了。我最初的想法是先虚拟插入块后再判断,这下有几个思路了。
  要求数一数的朋友可能没看清问题,如果能确定是几个当然就没这个问题了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-12-28 12:00:13 | 显示全部楼层
(vm-cmdf ".insert" blockname pt)
(command)
(length (vlax-invoke (vlax-ename->vla-object (entlast)) 'getattributes))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-29 20:56:54 | 显示全部楼层
为什么不用Vla-InsertBlock?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 19:25 , Processed in 0.184638 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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