明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: lazybug

怎样取得"DIMENSION"的子图元?

  [复制链接]
发表于 2006-3-8 09:14 | 显示全部楼层

试试这个法子:

选取物件: ((0 . "DIMENSION") (5 . "8A") (100 . "AcDbEntity") (67 . 0) (8 . "DIM") (100 . "AcDbDimension") (2 . "*D1") (10 19.0 23.0 0.0) (11 9.5 25.0 0.0) (12 0.0 0.0 0.0) (70 . 32) (1 . "") (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) (210 0.0 0.0 1.0) (3 . "STANDARD") (100 . "AcDbAlignedDimension") (13 0.0 0.0 0.0) (14 19.0 0.0 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 0.0) (50 . 0.0) (100 . "AcDbRotatedDimension"))

指令: (setq diment (car (entsel)))

选取物件: <图元名称: 3130710>

指令: (setq elst (entget diment '("ACAD")))
((-1 . <图元名称: 3130710>) (0 . "DIMENSION") (5 . "8A") (100 . "AcDbEntity") (67 . 0) (8 . "DIM") (100 . "AcDbDimension") (2 . "*D1") (10 19.0 23.0 0.0) (11 9.5 25.0 0.0) (12 0.0 0.0 0.0) (70 . 32) (1 . "") (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) (210 0.0 0.0 1.0) (3 . "STANDARD") (100 . "AcDbAlignedDimension") (13 0.0 0.0 0.0) (14 19.0 0.0 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 0.0) (50 . 0.0) (100 . "AcDbRotatedDimension") (-3 ("ACAD" (1000 . "DSTYLE") (1002 . "{") (1070 . 140) (1040 . 0.1) (1070 . 145) (1040 . 1.0) (1070 . 74) (1070 . 0) (1070 . 172) (1070 . 1) (1070 . 174) (1070 . 1) (1070 . 73) (1070 . 0) (1070 . 272) (1070 . 3) (1070 . 40) (1040 . 20.0) (1070 . 147) (1040 . 0.08) (1070 . 287) (1070 . 5) (1070 . 42) (1040 . 0.08) (1070 . 44) (1040 . 0.035) (1070 . 43) (1040 . 0.0) (1070 . 46) (1040 . 0.25) (1070 . 271) (1070 . 3) (1070 . 178) (1070 . 256) (1070 . 177) (1070 . 256) (1070 . 176) (1070 . 256) (1070 . 141) (1040 . 0.03) (1070 . 41) (1040 . 0.07) (1002 . "}"))))

Ref:  http://www.autodesk.com/techpubs/autocad/acad2000/dxf/dimension_style_overrides_dxf_06.htm

 楼主| 发表于 2006-3-8 16:07 | 显示全部楼层

谢谢诸位高手对本帖子的关注,本问题已经解决。

其实很简单,应该找的不是"DIMENSION"的子图元,而是其组码2中的块的子图元。使用块的遍历的程序就可以了,只是我一直没发现。

;关于块的遍历
(defun c:try ()
    (setq ent (car (entsel "\n选择一个块")))
    (setq blk (cdr (assoc 2 (entget ent))))
    (setq e1 (tblsearch "BLOCK" blk))
    (princ "\n")
    (princ e1)
    (setq e1 (cdr (assoc -2 e1)))
    (setq en_data (entget e1))   
    (princ "\n")
    (princ en_data)
    (while (setq e1 (entnext e1))
 (setq en_data (entget e1))
 (princ "\n")
 (princ en_data)
    )
    (princ)
)

 

发表于 2006-3-8 17:38 | 显示全部楼层
R14中用(nentsel)及(entnext)函数可以找到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 17:27 , Processed in 0.241969 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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