![]() |
求一个能把样条曲线和多段线相互转化的lisp源程序
求一个能把样条曲线和多段线相互转化的lisp源程序
www.dimcax.com 求一个能把样条曲线和多段线相互转化的lisp源程序 如题。谢谢各位!!! 用wnfout的方法来写 勤能补拙 用wnfout的方法来写 不能明白啊 (defun c:sp2arc (/ ename ent i j old_clayer old_cmdecho old_dimzin old_osmode ss old_cecolor ) ;;funcation sparc (defun sparc (ename / a arcss b i idlst j k len new p1 p2 p3 per vlaobj) (vl-load-com) (command "area" "o" ename) (if (< (setq per (getvar "perimeter")) 1.0) (setq a (/ per 10)) (if (>= per 500) (setq a (/ per 2000)) (setq a (/ per (+ (* (fix (/ (/ per 0.25) 4)) 4) 2))) ) ) (setq idlst nil i 0 b 0 vlaobj (vlax-ename->vla-object ename) ) (while (< b per) (setq b (* a i) i (1+ i) idlst (append idlst (list (vlax-curve-getpointatdist vlaobj b))) ) ) (entdel (vlax-vla-object->ename vlaobj)) (setq i 0 j 1 k 2 len (length idlst) arcss (ssadd) ) (while (<= k len) (setq p1 (nth i idlst) p2 (nth j idlst) p3 (nth k idlst) ) (setq i (+ i 2) j (+ j 2) k (+ k 2) ) (command "arc" p1 p2 p3) (setq new (entlast)) (setq arcss (ssadd new arcss)) ) (command "pedit" new "y" "j" arcss "" "") ) ;;funcation get_color (defun get_color (ename / ent col) (setq ent (entget ename)) (or (setq col (cdr (assoc 62 ent))) (setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent))))) ) ) (rtos col 2 0) ) ;;main (setq old_cmdecho (getvar "cmdecho") old_osmode (getvar "osmode") old_clayer (getvar "clayer") old_dimzin (getvar "dimzin") old_cecolor (getvar "cecolor") ) (setvar "cmdecho" 0) (setvar "osmode" 0) (setvar "dimzin" 0) (setq ss (ssget) i 0 j 0 ) (repeat (sslength ss) (setq ename (ssname ss i)) (setq ent (entget ename)) (if (= (cdr (assoc 0 ent)) "spline") (progn (setvar "clayer" (cdr (assoc 8 ent))) (setvar "cecolor" (get_color ename)) (sparc ename) (setq j (1+ j)) ) ) (setq i (1+ i)) ) (alert (strcat "\n共 " (rtos j 2 0) " 条spline转换成arc")) (setvar "cmdecho" old_cmdecho) (setvar "osmode" old_osmode) (setvar "clayer" old_clayer) (setvar "dimzin" old_dimzin) (setvar "cecolor" old_cecolor) (princ) ) 多段线有一个属性就是变成样条曲线 拟合 用cad的et扩展工具箱有个命令可以解决 样条曲线转多段线程序: 明经cad社区 → 工程篇 → 机械工程 → [原创]任意曲线转换成多段线程序 前面那么仁兄写的程序,我试了一下不能转啊 勤能补拙 : (defun c:sp2arc (/ ename ent i j old_clayer old_cmdecho old_dimzin old_osmode ss old_cecolor ) ;;funcation sparc ....... 这个有点问题,弧形部分可以,直线部分好行不行,希望大师改一下 |
| 所有的时间均为北京时间。 现在的时间是 01:20 AM. |