(defun c:xdtb_l2ray (/ spt spt1 ss val verts x xl)
(xdrx-begin)
(if (not #xd-var-global-l2xl-mode)
(setq #xd-var-global-l2xl-mode 0)
)
(xdrx-initget "0 1 2")
(if (setq val (getint (xdrx-string-formatex
(xdrx-string-multilanguage "\nLine 转[多段线(0)/XLine(1)/Ray(2)]<%d>:" "\nLine to [Polyline(0)/XLine(1)/Ray(2)]<%d>:")
#xd-var-global-l2xl-mode
)
)
)
(setq #xd-var-global-l2xl-mode val)
)
(if (setq ss (xdrx-ssget
(xdrx-string-multilanguage
"\n选择要转换的Line<退出>:"
"\nSelect Line to Convert<Exit>:"
)
'((0 . "Line"))
)
)
(progn
(mapcar
'(lambda (x)
(setq
verts (xdrx-getpropertyvalue x "startpoint" "endpoint")
)
(if (= #xd-var-global-l2xl-mode 2)
(progn
(setq xl (xdrx-ray-make verts))
)
(progn
(if (= #xd-var-global-l2xl-mode 0)
(setq xl (xdrx-curve->polyline x))
(setq xl (xdrx-xline-make verts))
)
)
)
(xdrx-entity-matchprop x xl)
(xdrx-object-swapid x xl)
(xdrx-entity-delete xl)
)
(xdrx-ss->ents ss)
)
)
)
(xdrx-end)
(princ)
)
The following code can interact with Ray and select the starting point.
(defun c:tt (/ spt spt1 ss val verts x xl)
(xdrx-begin)
(if (not #xd-var-global-l2xl-mode)
(setq #xd-var-global-l2xl-mode 0)
)
(xdrx-initget "0 1 2")
(if (setq val (getint (xdrx-string-formatex
(xdrx-string-multilanguage "\nLine 转[多段线(0)/XLine(1)/Ray(2)]<%d>:" "\nLine to [Polyline(0)/XLine(1)/Ray(2)]<%d>:")
#xd-var-global-l2xl-mode
)
)
)
(setq #xd-var-global-l2xl-mode val)
)
(if (= #xd-var-global-l2xl-mode 2)
(setq ss (xdrx-ssget (xdrx-string-multilanguage "\n选择要转换的Line<退出>:" "\nSelect Line to Convert<Exit>:")
"_:E" '((0 . "Line"))
)
)
(setq ss (xdrx-ssget (xdrx-string-multilanguage "\n选择要转换的Line<退出>:" "\nSelect Line to Convert<Exit>:")
'((0 . "Line"))
)
)
)
(if ss
(progn
(mapcar
'(lambda (x)
(setq verts (xdrx-getpropertyvalue x "startpoint" "endpoint"))
(if (= #xd-var-global-l2xl-mode 2)
(progn
(if (setq spt (getpoint (xdrx-string-multilanguage "\n拾取Ray的起点<退出>:" "\nPick the starting point of the Ray<Exit>:")))
(progn
(setq spt1 (xdrx-points-nearpt (trans spt 1 0) verts))
(setq xl (xdrx-ray-make spt1 (vl-remove spt1 verts)))
)
)
)
(progn
(if (= #xd-var-global-l2xl-mode 0)
(xdrx-curve->polyline x)
(progn
(setq xl (xdrx-xline-make verts))
)
)
)
)
(xdrx-entity-matchprop x xl)
(xdrx-object-swapid x xl)
(xdrx-entity-delete xl)
)
(xdrx-ss->ents ss)
)
)
)
(xdrx-end)
(princ)
)