研究了一下午,始终认为(setq splmid (vlax-curve-getPointAtParam entobj ( / (- endparameter stparameter) 2)) )取样条曲线中点是有问题的,换了另外一种方法解决。借用了lisphk、marting的函数和黄工的EntmakeArc,在此谢过。
(defun C:tt ()
(setvar "cmdecho" 0)
(command ".undo" "be")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(VL-LOAD-COM)
(setq ss (ssget '((0 . "spline"))))
(setq i 0)
(repeat (sslength ss)
(progn
(setq ssn (ssname ss i))
(setq ent (entget ssn))
(setq entobj (vlax-ename->vla-object ssn))
(setq entobjlength (_getcurvelength entobj))
(setq pt1 (vlax-curve-getstartpoint entobj))
(setq pt2 (vlax-curve-getendpoint entobj))
(setq stparameter (vlax-curve-getStartParam entobj))
(setq endparameter (vlax-curve-getEndParam entobj))
(setq splmidtt (vlax-curve-