ktbjx 发表于 2022-7-5 15:54:01

导出到C的直线中点

我这里有一个导出XYZ长度角度的列表
但是现在我只想导出每条线的中点,有人能帮我吗?
 
(defun c:LINEEXTRACTION ( / d e f i s spt ept)
   (if (and (setq s (ssget '((0 . "LINE"))))
            (setq f (getfiled "" "" "CSV" 1))
            (setq d (open f "w"))
       )
       (progn
         (write-line "Start X,Start Y,Start Z,End X,End Y, End Z,Group,Length,Angle" d)
         (repeat (setq i (sslength s))
               (setq e (entget (ssname s (setq i (1- i))))
spt (cdr (assoc 10 e))
ept (cdr (assoc 11 e))
)
               (write-line
                   (LM:lst->str
                     (append
                           (mapcar 'rtos (cdr (assoc 10 e)))
                           (mapcar 'rtos (cdr (assoc 11 e)))
                           (if (and (setq e (member '(102 . "{ACAD_REACTORS") e))
                           (setq e (member '(102 . "{ACAD_REACTORS") (entget (setq x (cdr (assoc 330 e))))))
                        (setq e (cdr (assoc 3 (member (cons 350 x) (reverse (entget (cdr (assoc 330 e))))))))
                     )
                           (list e)
                   )
                     )
                     ","
                   )
                   d
               )
         )
         (close d)
       )
   )

(prompt "DONE!")
(princ)
)

(defun LM:lst->str ( lst del )
   (if (cdr lst)
       (strcat (car lst) del (LM:lst->str (cdr lst) del)
       ","
   (rtos (distance spt ept)) ","
       (angtos(angle spt ept))
       )                  
       (car lst)
   )
)
   (princ)

BIGAL 发表于 2022-7-5 16:45:48

ktbjx无意冒犯,但是你面前有所有的答案,试着去做,你有pt1 xyz pt2 xzy,3d mid pt只是简单的数学MidX=(pt1x+pt2x)/2等等。
 
大提示
spt(cdr(assoc 10 e))
ept(cdr(assoc 11 e))
进一步研究
x=汽车y=cadr z=caddr

hanhphuc 发表于 2022-7-5 17:06:12

*仅直线不包括圆弧、点等。。

(defun foo (e)
(vlax-curve-getPointAtParam e (/ (vlax-curve-getEndParam e) 2.)))

WCS
页: [1]
查看完整版本: 导出到C的直线中点