基于组件的三维CAD系统开发的关键技术研究
http://tech.ddvip.com 2007年12月24日 社区交流
内容摘要:本文涉及的几个实例已经在实际工作中发挥很大作用,充分说明在工程设计当中结合本专业要求开发一些简单实用的Lisp小程序可以有效减轻设计人员的劳动强度,使AutoCAD不仅仅是绘图工具,而真正成为设计人员得心应手的高效设计平台。
(2)切剖面
输入剖面编号,在平面地形图上指定两点确定剖面剖切线位置,指定剖面图起点,利用AutoCAD的inters函数搜索剖切线与地形图的全部交点,自动计算交点坐标,计算交点与剖面位置起点的距离,按各交点高程和与起点的距离形成剖面图各点坐标,即可用本文实例1坐标画线生成地形图的剖面。
(defun dxtent1 ()
(setq n 0 xdzb nil)
(setq xds 0)
(setq sh (sslength e1))
(while (< n sh)
(setq x (entget (ssname e1 n)))
(if (= (fld 0 x) "LINE")
(progn
(setq dxtgcgc (fld 8 x))
(setq dxtgcgc (atoi dxtgcgc))
(if (> dxtgcgc 10)
(progn
(setq pst (fld 10 x))
(setq pet (fld 11 x))
(setq zb (list gc
(list (car pst) (cadr pst))
(list (car pet) (cadr pet))
))
(setq xdzb (cons zb xdzb))
(setq xds (+ xds 1))
))))
(setq n (+ n 1))
))
(defun c:dxtsec ()
(setq pmh (+ pmh 1))
(setq pmh (getstring "/n 剖面号" ))
(setq pt1 (getpoint "/n 剖切位置起点:"))
(setq pt2 (getpoint pt1 "/n 剖切位置终点:"))
(setq pt3 (getpoint "/n 剖面图布置:"))
(setq p01 pt3)
(setq e1 (ssget "F" (list pt1 pt2)));利用AutoCAD的目标选择“F”方式选取与剖切线相交的地形线。
(dxtent);获取与剖切线相交地形线的坐标
(setq mxgc -100)
(setq mngc 10000)
(setq m 0 pmp nil)
(setq n xds i 0)
(while (< i n)
(setq crosp
(inters pt1 pt2 (nth 1 (nth i xdzb)) (nth 2 (nth i xdzb)) 1)
);求剖切线与地形线的交点
(if (/= crosp nil)
(progn
(setq dxtgcgc (nth 0 (nth i xdzb)))
(setq mxgc (max mxgc dxtgcgc))
(setq mngc (min mngc dxtgcgc))
(setq dst (distance pt1 crosp));剖切线起点与交点的距离
(setq dst (* (/ blcz dxthtbl) dst))
(setq pmp (cons (list m dst dxtgcgc) pmp))
(setq m (+ m 1))
))
(setq i (+ i 1))
))
来源:CAD世界网 责编:豆豆技术应用