基于组件的三维CAD系统开发的关键技术研究
http://tech.ddvip.com 2007年12月24日 社区交流
内容摘要:本文涉及的几个实例已经在实际工作中发挥很大作用,充分说明在工程设计当中结合本专业要求开发一些简单实用的Lisp小程序可以有效减轻设计人员的劳动强度,使AutoCAD不仅仅是绘图工具,而真正成为设计人员得心应手的高效设计平台。
2 .2 地形切剖面
水电工程设计中经常遇到在地形图上切剖面的问题,借助Visual Lisp可以实现快速切剖面。
(1) 初始地形图处理
把带z坐标的地形平面图进行变换,变换后z坐标值成为层名,为加快切剖面运行速度,把“LWPOLYLINE”和”SPLINE”均转化为”LINE“线,程序如下
(defun c:pltol()
;LWPOLYLINE转化为LINE
(setq n 0)
(setq e (ssget"X" (list (cons 0 "LWPOLYLINE"))))
(setq sh (sslength e))
(if e
(while (< n sh)
(setq e1 (ssname e n))
(command "pedit" e1 "d" "")
(setq x (entget e1))
(setq ngc (atof (setq la (fld 8 x))))
(command "explode" e1)
(setq n (+ n 1))
) ) )
(defun fld (num lst)
(cdr (assoc num lst))
)
(defun c:spltol ()
;SPLINE转化为LINE
(setq n 0)
(setq e (ssget "X" (list (cons 0 "SPLINE"))))
(setq sh (sslength e))
(if e
(while (< n sh)
(setq x (entget (setq e1 (ssname e n))))
(setq nla (itoa (fix (caddr (fld 10 x)))))
(if (= (fld 0 x) "SPLINE")
(progn
(command "layer" "n" nla "c"
"6" nla "s" nla "")
(command"line")
(setq nm (length x)
dzs (fld 73 x) dzs1 (fld 74 x))
(while (> nm 5)
(if (= (car (nth nm x)) 10)
(progn
(setq b1 (nth nm x))
(setq x1 (cadr b1))
(setq y1 (caddr b1))
(setq z1 (cadddr b1))
(setq glb (list x1 y1))
(command glb)
) )
(setq nm (- nm 1))
)))
(command "")
(setq n (+ n 1))
)))
来源:CAD世界网 责编:豆豆技术应用