Author Topic: [XDrX-PlugIn(37)] Mirror the polyline around its longest segment  (Read 347 times)

0 Members and 1 Guest are viewing this topic.

xdcad

  • Swamp Rat
  • Posts: 527
[XDrX-PlugIn(37)] Mirror the polyline around its longest segment
« on: December 09, 2023, 09:01:12 AM »
Mirror by constructing a mirror matrix

Code - Auto/Visual Lisp: [Select]
  1. (defun c:tt ()
  2.   (if (setq
  3.         ss (xdrx-ssget "\nSelect Polyline<Exit>:" '((0 . "*polyline")))
  4.       )
  5.     (progn
  6.       (xdrx-begin)
  7.       (setq info (mapcar
  8.                    '(lambda (x)
  9.                       (setq segs (xdrx-getpropertyvalue x "allsegs")
  10.                             info (mapcar
  11.                                    '(lambda (y)
  12.                                       (cons (xdrx-getpropertyvalue y "length")
  13.                                             (list x y)
  14.                                       )
  15.                                     )
  16.                                    segs
  17.                                  )
  18.                             info (vl-sort info
  19.                                           '(lambda (x y) (> (car x) (car y)))
  20.                                  )
  21.                       )
  22.                     )
  23.                    (xdrx-ss->ents ss)
  24.                  )
  25.       )
  26.       (mapcar
  27.         '(lambda (x)
  28.            (setq seg    (car x)
  29.                  ge     (last seg)
  30.                  e      (cadr seg)
  31.                  sPt    (xdrx-getpropertyvalue ge "startpoint")
  32.                  ePt    (xdrx-getpropertyvalue ge "endpoint")
  33.                  mat    (xdrx-matrix-identity 3)
  34.                  kLine  (xdge::constructor "kLineSeg3d" sPt ePt)
  35.                  mirror (xdrx-matrix-setmirror mat kLine)
  36.            )
  37.            (xdrx-entity-transform e mirror)
  38.          )
  39.         info
  40.       )
  41.       (xdrx-end)
  42.  
  43.     )
  44.   )
  45.   (princ)
  46. )
  47.  
« Last Edit: December 09, 2023, 09:23:25 AM by xdcad »
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