原理在里面了,根据自身需要去修改
 - (defun c:tt (/ en i obj pt1 pt2 pt3 pts u v w x)
- (princ"\n仅供娱乐")
- (setq en (car (entsel))
- pts nil
- i (fix (vlax-curve-getendparam en)))
- (while (>= i 0)
- (setq pts (cons (vla-get-coordinate (setq obj (vlax-ename->vla-object en))
- i)
- pts)
- i (1- i)))
- (setq pts (mapcar
- '(lambda (x)
- (vlax-safearray->list (vlax-variant-value x)))
- pts)
- pt1 (cadr pts)
- pt2 (car pts)
- pt3 (caddr pts)
- u (mapcar (function -) pt1 pt3)
- v (mapcar (function -) pt1 pt2)
- w (list
- (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
- (- (* (car v) (caddr u)) (* (car u) (caddr v)))
- (- (* (car u) (cadr v)) (* (car v) (cadr u))))
- pts (mapcar '(lambda (x) (trans x '(0 0 1) w)) pts))
- (foreach n pts
- (vla-put-coordinate obj (setq i (1+ i)) (vlax-3d-point n))))
|