VisualLisp研究,如何提取天正对象的特征参数
转自http://hi.baidu.com/tanglan/blog研究日志
1)提取墙体信息,得到墙的长、高、厚度、面积、体积,计算墙体自重。
--------------------------------------------------------------------------------
LIST
DXF名称: TCH_WALL
对象句柄: 174
图层: WALL
颜色: 随层
比例: 100
对象句柄: 174
对象类型: 直墙
内外特征: 内墙
左厚度: 100
右厚度: 100
长度: 9510
高度: 3000
底标高: 0
左壁面积: 28.05
右壁面积: 29.01
洞口粉刷面积: 0.00
体积: 5.706
材料: 砖墙
--------------------------------------------------------------------------------
(setq d (entget (car (entsel))))
((-1 . <图元名: 7ef612f0>) (0 . "TCH_WALL") (330 .<图元名:7ef5fc10>) (5 . "176") (100 . "AcDbEntity") (67 . 0) (410 ."Model") (8 ."WALL") (100 . "TDbCurveEntity") (46 . 0.0) (47 . 100.0)(68 . 0) (100 . "TDbWall") (38 . 0.0) (39 . 3000.0) (10 22158.7 12393.20.0) (11 33840.8 8502.24 0.0) (40 . 120.0) (41 . 120.0) (42 . 80.0)(148 . 0.0) (149 . 3000.0)
(50 . 0.0) (73 . 0) (74 . 40) (75 . 0) (90 . 0) (76 . 1) (330 .<图元名: 7ef618b8>) (411 . "PUB_HATCH") (412 . "0") (413 . "0") (414. "0") (1 . "") (2 . ""))
--------------------------------------------------------------------------------
墙体自重(纯墙)
混凝土空心砌块 5kN/m3
计算某面墙的重量
(1)选择这个墙,并提取特性参数,把参数赋予给变量D
(setq d (entget (car (entsel))))
(2)从变量d中提取高度信息,把参数赋予给变量DHIG
(setq dhi (assoc 39 d))
(setq dhig (/ (cdr dhi) 1000))
(3)从变量d中提取起点和端点坐标信息,赋予给DLOC1和DLOC2
(setq dlo1 (assoc 10 d))
(setq dloc1 (cdr dlo1))
(setq dlo2 (assoc 11 d))
(setq dloc2 (cdr dlo2))
(3)计算墙体长度,赋予给DLEN
(setq dlen (/ (distance dloc1 dloc2) 1000))
(4)从变量中提取墙厚,赋予给DHOU1和DHOU2,并计算墙厚度DHOU
(setq dhou1 (cdr (assoc 40 d)))
(setq dhou2 (cdr (assoc 41 d)))
(setq dhou (/ (+ dhou1 dhou2) 1000))
(5)计算墙体面积,赋予给DARE
(setq dare (* dlen dhig))
(6)计算墙体体积,赋予给DVOL
(setq dvol (* dare dhou))
(7)计算墙体自重,赋予给DWEI
(setq dzhi 5)
(setq dwei (* dvol dzhi))
--------------------------------------------------------------------------------
墙中窗户信息(墙上带1面窗户)
(1)选择这个墙,并提取特性参数,把参数赋予给变量D
(setq d (entget (car (entsel))))
(2)提取窗户的图元名,赋予给WNAME1
(setq wname1 (cdr (assoc 330 d)))
(3)提取窗户的特性参数,把参数赋予给变量E
(setq d (entget wname1))
页:
[1]