(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))
))
2 .3 沿曲线标注
在设计中会遇到沿给定曲线进行标注问题,如平面布置图中的开挖线符号沿开挖轮廓的标注,剖面图中岩石符号沿轮廓线标注、点筋标注、沿任意曲线进行汉字标注等。此类问题主要应用AutoCAD的Measure或divide命令来解决。两个命令的主要差别是前者按指定的长度在曲线上标注,后者按给定的分段数等分曲线并在等分点处进行标注。要标注的轮廓曲线最好用pline线,要标注的符号预先做成图块,图块采用单位块,执行measure或divide命令,选取要标注的曲线,指定标注符号,分段长度或分段数即可完成标注,当发现标注的符号太密或太疏时,可以执行erase命令选择P进行删除,比例不合适或符号方向不正确,可以利用特性编辑器,选中所有标注符号,对标注符号的比例和旋转角度进行调整,直到满意为止。对于更高级的应用,可以编制LSP程序,实现符号和文字沿任意曲线标注。
2 .4 表格生成





