基于组件的三维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世界网    责编:豆豆技术应用

正在加载评论...