长江大学BBS荆楚明珠站's Archiver

sky 发表于 2007-7-7 09:00

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]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.