找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 659|回复: 6

[求助] [求助]:怎样读取绘图文件里的块的名称?

[复制链接]
发表于 2005-7-19 14:21:37 | 显示全部楼层 |阅读模式

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

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

×
在绘图文件里有很多块,用什么办法可以读取它们的名称?请朋友们帮忙多谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-7-19 15:29:18 | 显示全部楼层
可以选中所有的块,然后读出他们的名称,应该是2的关联dxf值,如果名字重复就读下一个块,把他们做成一个点对表返回。不过这样只能读出图中使用的块名。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 208个

财富等级: 日进斗金

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

使用道具 举报

发表于 2005-7-20 21:25:54 | 显示全部楼层
3楼未考虑无名块(如标注实体)情况。
取无名块时,可使用ssget构造无名块选择集,然后利用ssname返回选择集中由索引号指定的元素的对象(图元)名称,从而取出由索引号指定的元素的对象(图元)组码,最后用assoc取出图块名。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-7-20 23:56:15 | 显示全部楼层
下面这个函数来自秋枫大侠的批打印程序,可以很好的解决楼主的要求:
[php]
       ;;有名图块列表函数
;;返回值:排序后的有名图块块名列表
  (defun GetBlockList (/ blist b)
    (setq blist nil)
    (if (tblnext "BLOCK" T)        ;测试图中是否含有图块
      (progn
        (setq blist (cons (cdr (assoc 2 (tblnext "BLOCK" T))) blist))
               ;获取第一个图块数据
        (while (setq b (tblNext "BLOCK"))        ;继续获取图块的定义数据
          (setq blist (cons (cdr (assoc 2 b)) blist))       ;构建块的列表
        );end while
      );end progn
    );end if
    (vl-remove-if '(lambda (s) (= "*" (substr s 1 1))) blist)        ;去除无名块
    (vl-sort blist '<)                        ;图块名排序
  )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-21 08:20:33 | 显示全部楼层
多謝fools,你轉貼的正是我想要的!另外什么樣可以讀取塊的中心點位置?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2005-7-21 10:30:08 | 显示全部楼层
楼上的问题所指不太清楚,因为块和中心点均可以有几种不同的理解。如果是指块图元的最小包围盒中心点:
[php]
;;图元包围盒中心点函数
;;参数值:图元名
;;返回值:图元包围盒中心点的UCS坐标
  (defun BoxCen (ent / ll ur llur cen)
    (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
               ;取包围盒左下及右上点
    (setq llur (mapcar 'vlax-safearray->list (list ll ur)))
               ;转换安全数组为点表
    (setq cen
       (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.0)) (car llur) (cadr llur))
     )           ;求中心点(WCS)
    (trans cen 0 1);转化为用户坐标系
  )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 09:39 , Processed in 0.225240 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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