:)
冒昧试一下,学习一下entmake spline,发现spline的结构还挺复杂的
程序可连续选取、二点选取顺序可以调换。
其实,楼主的图形应该是可以批量绘制此种spline的吧
;;by qjchen@gmail.com
(defun c:test(/ a b tan)
(while (and (setq a (getpoint "the 1st point:\n"))(setq b (getpoint a "the 2nd point:\n")))
(if (> (car a)(car b)) (setq tan '(-1.0 0.0 0.0)) (setq tan '(1.0 0.0 0.0)))
(entmake
(list
'(0 . "SPLINE") '(100 . "AcDbEntity") '(410 . "Model") '(100 . "AcDbSpline")
'(210 0.0 0.0 1.0) '(70 . 8) '(71 . 3)
(cons 12 tan) (cons 13 tan)
(cons 11 a) (cons 11 (mapcar '(lambda (x) (/ x 2.0)) (mapcar '+ a b)))(cons 11 b)
)
)
)
(princ)
)
<p>;;mysp.lsp by yuuboo<br/>;;简易正弦波形 <br/>(defun c:mysp( / gdfx ps pe ang_se dis_se p1 p2 p3)<br/> (setq gdfx 12.0) ;;;;要改变波形的高度和方向 改gdfx的数值 比如改成-15.0<br/> (setvar "cmdecho" 0)<br/> (if (setq ps (getpoint "\n 设备连线~起点:"))<br/> (if (setq pe (getpoint ps " 设备连线~终点:"))<br/> (progn<br/> (command "undo" "g")<br/> (setq ang_se (angle ps pe))<br/> (setq dis_se (distance ps pe))<br/> (setq p1 (polar (polar ps ang_se (/ dis_se 4.0)) (+ ang_se (* PI 0.5)) (/ dis_se gdfx)) )<br/> (setq p2 (polar ps ang_se (/ dis_se 2.0)))<br/> (setq p3 (polar (polar pe ang_se (/ dis_se -4.0)) (- ang_se (* PI 0.5)) (/ dis_se gdfx)) )<br/> (command "spline" "non" ps "non" p1 "non" p2 "non" p3 "non" pe "" "" "")<br/> (command "undo" "e")<br/> <br/> (c:mysp)<br/><br/> )<br/> )<br/> ) <br/>(princ)<br/>)</p> <p></p><p>好多了,但还有点不理想</p> <p></p><p>就是两上接电器的端至少有一段一定的距离要垂直于电器就好,还有,这条SPLINE要有四个控制点就好</p>
页:
1
[2]