357785513 发表于 2009-7-27 12:29:00

那位高手这个LSP能写不

那位高手,我想点这一点,再点别地方一点,能生成一条SPL线嘛.就如上图一样.也就是在两点间生成一条曲线

357785513 发表于 2009-7-27 12:32:00

两点划SPL线

357785513 发表于 2009-7-27 12:38:00

<p></p><p></p>

357785513 发表于 2009-7-27 12:46:00

asdfxx 发表于 2009-7-27 12:53:00

xhq1954425 发表于 2009-7-27 13:09:00

用样条曲线应该可以,点两个端点后自动取其中点,两个端点的切线方向为水平方向

淮上 发表于 2009-7-27 13:28:00

<p>;;高手不在,菜鸟在</p><p>(defun c:tt (/ p1 p2 p e)<br/>&nbsp; (if (and (setq p1 (getpoint "\n第一点: "))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p4 (getpoint p1 "\n第二点: "))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq mp (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p4))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (apply '&gt; (mapcar '(lambda (a b) (abs (- a b))) p1 p4))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p2 (cons (car mp) (cdr p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p3 (cons (car mp) (cdr p4))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p2 (cons (car p1) (cdr mp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p3 (cons (car p4) (cdr mp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "_.pline" "_non" p1 "_non" p2 "_non" mp "_non" p3 "_non" p4 "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq e (entlast))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "_.pedit" e "_spl" "")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</p>

淮上 发表于 2009-7-27 13:31:00

不过不是样条曲线,是拟合的多段线

357785513 发表于 2009-7-27 22:49:00

<p>多数情况下变成了上面的样子了.我想始终如一,跟下面的一样,无论两个设备错开多远.它能像我下面的接法一样.要谢谢六楼的高手.</p>

ZZXXQQ 发表于 2009-7-28 20:21:00

这是样条曲线:

;;两点画SPLINE 明经 ZZXXQQ 2009.7.28
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq p1 (getpoint "\n第一点 :"))
          (setq p2 (getpoint p1 "\n第二点 :"))) (progn
(if (> (abs(- (car p1) (car p2))) (abs(- (cadr p1) (cadr p2))))
   (if (> (car p1) (car p2))
    (setq p3 (polar p1 0 10) p4 (polar p2 pi 10))
    (setq p3 (polar p1 pi 10) p4 (polar p2 0 10))
   )
   (if (> (cadr p1) (cadr p2))
    (setq p3 (polar p1 (/ pi 2) 10) p4 (polar p2 (/ pi -2) 10))
    (setq p3 (polar p1 (/ pi -2) 10) p4 (polar p2 (/ pi 2) 10))
   )
)
(command ".spline" "_non" p1 "_non" p2 "" "_non" p3 "_non" p4)
))
(setvar "CMDECHO" 1)
(princ)
)
页: [1] 2
查看完整版本: 那位高手这个LSP能写不