|
发表于 2003-9-8 12:38:00
|
显示全部楼层
;;这是照你的恩路写的,但精度不太好
;;用vlisp写会更好
(defun C:Y02_LAI (/ A ECHO OS SSA SSL SP
ENDP N ENDATA SPO EPO DISTUSER
SSC NEWPO
)
(defun DO_IT (SPO SP)
(setq
DISTUSER
(getdist SPO "\nPlease get dist for lengthen spline: ")
)
(command "_.line" SPO SP "")
(setq SSC (entlast))
(command "_.lengthen" "de" DISTUSER (list SSC SPO) "")
(setq NEWPO (cdr (assoc 10 (entget SSC))))
(command "_.erase" SSC SSA "")
;;只移动端点,精度会比较差
;;增加控制点较好!
(command "_.splinedit" (car A) "m" "s" SPO NEWPO "x" "")
)
(setq A (entsel "\nSelect Spline: "))
(setq ECHO (getvar "osmode"))
(setvar "cmdecho" 0)
(setq OS (getvar "osmode"))
(setvar "OSMODE" 0)
(command "_.DIVIDE" A 500) ;精度越密越准,但花时间
(setq SSA (ssget ""))
(setq SSL (sslength SSA))
(setq SP (cdr (assoc 10 (entget (ssname SSA 0)))))
(setq ENDP (cdr (assoc 10 (entget (ssname SSA (- SSL 1))))))
(setq N 0)
(setq ENDATA (entget (car A))
SPO (cdr (assoc 10 ENDATA))
EPO (cdr (assoc 10 (reverse ENDATA)))
)
(if ( distfullb distfulla)
(progn
(princ "\nPlease get dist for lengthen spline:")
(setq distuser (getdist spo pause));;;繪出spline延長的長度,用鼠標選點确定
(command "line" spo sp "")
(setq ss (entlast))
(command "erase" a "");;;刉壺埻懂腔SPLINE
(command "lengthen" "de" distuser spo "" "" "")
(setq ssc (entlast))
(setq ass (entget ssc))
(setq newpo (cdr (assoc 10 ass)));;;取得要延長spline延長到的點坐標.
(command "erase" ssa "");;;刉壺垀衄腔萸
(command "erase" ss "");;;刉壺最唗赻賒腔腔盄
(command "erase" ssc "");;;刉壺最唗赻賒腔腔盄
(entmake endata);;;遠埻最唗眕刉壺腔SPLINE
(setq a (entlast))
(command "_splinedit" a "m" "s" spo newpo "x" "");;; spline edit
)
(progn
(princ "\nPlease get dist for lengthen spline:")
(setq distuser (getdist end pause));;;繪出spline延長的長度,用鼠標選點确定
(command "line" end endp "")
(setq ss (entlast))
(command "erase" a "");;;刉壺埻懂腔SPLINE
(command "lengthen" "de" distuser end "" "" "")
(setq ssc (entlast))
(setq ass (entget ssc))
(setq newpo (cdr (assoc 10 ass)));;;取得要延長spline延長到的點坐標.
(command "erase" ssa "");;;刉壺垀衄腔萸
(command "erase" ss "");;;刉壺最唗赻賒腔腔盄
(command "erase" ssc "");;;刉壺最唗赻賒腔腔盄
(entmake endata);;;遠埻最唗眕刉壺腔SPLINE
(setq a (entlast))
(command "_splinedit" a "m" "s" end newpo "x" "");;; spline edit
))
(setvar "cmdecho" 1)
(setvar "osmode" os)
(princ "\n在命令行揄入y02喚起這個功能:")
(princ)) |
|