Author Topic: [XDrX-PlugIn(71)] MTEXT delete row  (Read 420 times)

0 Members and 1 Guest are viewing this topic.

xdcad

  • Swamp Rat
  • Posts: 522
[XDrX-PlugIn(71)] MTEXT delete row
« on: December 29, 2023, 07:00:53 PM »
Code - Auto/Visual Lisp: [Select]
  1. ;|
  2. MTEXT MAPPING, returns a point table composed of
  3.       the first upper and lower points of each row
  4. param: mtxt  ----  mtext ename
  5. return: point pair list
  6. |;
  7. (defun xd::mtext:mapping (mtxt)
  8.   (setq data (xdrx-mtext-fragments mtxt))
  9.   (setq data (mapcar '(lambda (x)
  10.                         (setq tmp (cadr (assoc "kLocation" x)))
  11.                         (list (cadr tmp)
  12.                               (car tmp)
  13.                               (last tmp)
  14.                               (cadr (assoc "kCapsHeight" x))
  15.                         )
  16.                       )
  17.                      data
  18.              )
  19.   )
  20.   (setq data (xd::list:fuzzgroupbykey data 0.01))
  21.   (setq data
  22.              (reverse
  23.                (mapcar
  24.                  '(lambda (x)
  25.                     (list (list (caadr x) (car x) (cadr (cadr x)))
  26.                           (last (cadr x))
  27.                     )
  28.                   )
  29.                  data
  30.                )
  31.              )
  32.         basepnt   (xdrx-getpropertyvalue mtxt "location")
  33.   )
  34.   (setq
  35.     data (mapcar
  36.            '(lambda (x)
  37.               (xdrx-points-orthoproject
  38.                 (list (mapcar '+
  39.                               (car x)
  40.                               (xdrx-vector-product '(0 1 0) (last x))
  41.                       )
  42.                       (car x)
  43.                 )
  44.                 (list basepnt '(1 0 0))
  45.               )
  46.             )
  47.            data
  48.          )
  49.   )
  50. )
  51. (defun xd::mtext:rows (mtxt)
  52.   (length (xdrx-mtext-fragments mtxt))
  53. )
  54. (defun xd::mtext:rows (mtxt / rows)
  55.   (if (and (setq content (xdrx-getpropertyvalue mtxt "contents"))
  56.            (setq rows (xdrx-string-regexps "\\\\P" content))
  57.       )
  58.     (setq rows (1+ (length rows)))
  59.     (setq rows 1)
  60.   )
  61. )
  62.  
  63. ;|
  64. Return the row where the point is located
  65. param: mtxt  ---- mtext ename
  66.        pnt   ---- point (WCS)
  67. |;
  68.  
  69. (defun xd::mtext:rowbypnt (mtxt pnt)
  70.   (setq mapping (xd::mtext:mapping mtxt))
  71.   (setq i  1
  72.         tf t
  73.   )
  74.   (while (and tf (setq data (car mapping)))
  75.     (if
  76.       (apply 'xd::pnt:isbetween (cons pnt data))
  77.       (setq tf  nil
  78.             row i
  79.       )
  80.     )
  81.     (setq i       (1+ i)
  82.           mapping (cdr mapping)
  83.     )
  84.   )
  85.   row
  86. )
  87. ;|
  88. Delete the specified line in MTEXT
  89. param: mtxt -- mtext entname
  90.        row  -- Row number (starting from 1)
  91. |;
  92. (defun xd::mtext:rowremove (mtxt row / content)
  93.   (setq content (xdrx-getpropertyvalue mtxt "contents")
  94.         content (xdrx-string-split content "\\P")
  95.         content (XD::List:RemoveN content (1- row))
  96.         content (xdrx-string-join content "\\P")
  97.   )
  98.   (xdrx-setpropertyvalue mtxt "contents" content)
  99. )
  100.  

Code: [Select]
(defun c:XDTB_MtxtRemoveR (/ mtxt pnt row)
  (xdrx-begin)
  (xdrx-sysvar-push '("osmode" 0))
  (if (and (setq mtxt
  (xdrx-entsel
    (xdrx-string-multilanguage
      "\n点选要删除MTEXT的行<退出>:"
      "\nClick the line where you want to delete MTEXT <Exit>:"
    )
    '((0 . "mtext"))
  )
   )
   (setq pnt  (cadr mtxt)
mtxt (car mtxt)
   )
   (> (xd::mtext:rows mtxt) 1)
   (setq row (xd::mtext:rowbypnt mtxt (trans pnt 1 0)))
      )
    (xd::mtext:rowremove mtxt row)
  )
  (xdrx-sysvar-pop)
  (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