找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2947|回复: 12

[求助] [LISP函数]:块属性提取编程(求助)

[复制链接]
发表于 2008-5-7 11:55:47 | 显示全部楼层 |阅读模式

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

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

×
我现在正在编写一个快属性提取的程序,水平有限,用LISP的entnext命令提取。
但是当我的块属性改为固定值的时候就提取不上来了。怎么回事?
(defun test()
  (setq ss1 (ssadd))
  (setq ss1 (ssget))
  (setq en (ssname ss1 0)
        x (entget en))
  (setq a (entget (setq en (entnext en))))
  (setq b (entget (setq en (entnext en))))
  (setq c (entget (setq en (entnext en))))
  (setq d (entget (setq en (entnext en))))
;;;  (setq e (entget (setq en (entnext en))))
;;;  (setq f (entget (setq en (entnext en))))
  )
上面程序运行的对象是四个属性的块,其中一个是固定的块属性,怎么读上来的是三个?
第四个d就已经是(0 . "SEQEND")了。

求助:
1、有什么方法可以提取固定的块属性?
2、块中块的属性在编程的时候怎么提取?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-5-9 08:11:54 | 显示全部楼层
(defun C:TEST (/ EN ENN)
  (setq EN (car (entsel "\n選屬性塊: ")))
  (setq ENN EN)
  (while (and (setq EN (entnext EN))
              (not (equal (cdr (assoc 0 (entget EN))) "SEQEND"))
         )
    (print (entget EN))
  )
  (TEST ENN)
  (princ)
)


(defun TEST (ENN / NAME)
  (setq NAME (cdr (assoc 2 (entget ENN))))
  (setq ENN (cdr (assoc -2 (tblsearch "block" NAME))))
  (while ENN
    (if        (or (= 2 (cdr (assoc 70 (entget ENN))))
            (= "ATTRIB" (cdr (assoc 0 (entget ENN))))
        )
      (print (entget ENN))
    )
    (if        (= "INSERT" (cdr (assoc 0 (entget ENN))))
      (TEST ENN)
    )
    (setq ENN (entnext ENN))
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-5-15 23:18:23 | 显示全部楼层
龙版主的代码好像只是显示而已,没有修改哦

点评

修改需要另外的函数,楼主只是要提取函数~  详情 回复 发表于 2014-2-24 12:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2008-6-17 23:13:24 | 显示全部楼层
不放过任何一个感兴趣的小片段。学习学习再学习。积少成多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 205个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-15 09:11:51 | 显示全部楼层
还可以这样写
  1. (defun Insert:GetAttributes (obj)
  2.   (if (= (vlax-get obj 'hasattributes) -1)
  3.     (mapcar '(lambda (x)
  4.                (list x
  5.                      (vlax-get x 'Tagstring)
  6.                      (vlax-get x 'Textstring)
  7.                )
  8.              )
  9.             (vlax-invoke obj 'getattributes)
  10.     )
  11.   )
  12. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-2-24 12:47:12 | 显示全部楼层
leeyuan 发表于 2008-5-15 23:18
龙版主的代码好像只是显示而已,没有修改哦

修改需要另外的函数,楼主只是要提取函数~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 11:25 , Processed in 0.204499 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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