导出到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) 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 *仅直线不包括圆弧、点等。。
(defun foo (e)
(vlax-curve-getPointAtParam e (/ (vlax-curve-getEndParam e) 2.)))
WCS
页:
[1]