Author Topic: [XDrX-PlugIn(147)] Convert Line To Polyline,XLine,Ray  (Read 87 times)

0 Members and 1 Guest are viewing this topic.

xdcad

  • Bull Frog
  • Posts: 495
[XDrX-PlugIn(147)] Convert Line To Polyline,XLine,Ray
« on: April 17, 2024, 10:17:21 PM »
Code: [Select]
(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.

Code: [Select]
(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)
)
The code I wrote uses XDRX-API,which can be downloaded from github.com and is updated at any time.
===================================
https://github.com/xdcad
https://sourceforge.net/projects/xdrx-api-zip/
http://bbs.xdcad.net