Shoey 发表于 2022-7-5 17:38:53

多重引线包络处理

大家好
 
我们有包含多个引线的图形,它们的边界框太大了!大于边界框中包含的文本。
 
我们确实有一个lisp,可以重新调整多行文字实体的边界框大小,但这不适用于多引线文字。
 
有没有人已经有了这样的Lisp程序并且愿意分享?
 
如果有人能帮忙,我们将不胜感激。
 
当做
Shoey鞋

Tharwat 发表于 2022-7-5 17:48:05

试试这个简单的代码。。。
 

(defun c:Test (/ e i n)
(if (setq e (ssget "_:L" '((0 . "MULTILEADER"))))
   (repeat (setq i (sslength e))
   (setq n (ssname e (setq i (1- i))))
   (entmod (subst '(43 . 0.) (assoc 43 (entget n)) (entget n)))
   )
)
(princ)
)

Shoey 发表于 2022-7-5 17:51:34

非常感谢Tharwat。
 
我很感激你的代码。然而,我忘了提到,我们的多重领导人中包含多行文本。
我们需要保留这些文本行,并保持边界框的宽度和高度相同。
我们不希望将其转换为一行文本。
 
当做
Shoey鞋

Lee Mac 发表于 2022-7-5 17:54:13

尝试以下Shoey:
 

;; Fit MLeader MText Frame-Lee Mac

(defun c:mlf ( / e f i l s )

   (defun f ( e / i l s x )
       (setq s (cdr (assoc 304 e))
             x (list
                   (cons 40 (cdr (assoc 41 e)))
                   (cons 07 (cdr (assoc 02 (entget (cdr (assoc 340 e))))))
               )
       )
       (while (setq i (vl-string-search "\\P" s))
         (setq l (cons (substr s 1 i) l)
               s (substr s (+ i 3))
         )
       )
       (setq l
         (vl-remove-if 'null
               (mapcar
                   (function
                     (lambda ( s / b )
                           (if (setq b (textbox (cons (cons 1 s) x)))
                               (mapcar '- (cadr b) (car b))
                           )
                     )
                   )
                   (cons s l)
               )
         )
       )
       (list
         (* 1.01 (apply 'max (mapcar 'car l)))
         (+ (apply '+ (mapcar 'cadr l)) (* 0.68 (1- (length l))))
       )
   )
   
   (if (setq s (ssget "_:L" '((0 . "MULTILEADER"))))
       (repeat (setq i (sslength s))
         (setq e (entget (ssname s (setq i (1- i))))
               l (f e)
         )
         (entmod
               (subst (cons 43 (car l)) (assoc 43 e)
                   (subst (cons 44 (cadr l)) (assoc 44 e) e)
               )
         )
       )
   )
   (princ)
)

 
如果发现某些文本仍移动到下一行,请增加[高亮显示]高亮显示的[(highlight)]容差值。

Shoey 发表于 2022-7-5 18:01:09


 
非常感谢您的代码。
它就快到了,但高度的边界框不太在那里。
希望随附的图片对我们的要求更有意义。
左图是我们在图纸中看到的。
用户一直在线路末端返回,而不是使用固定宽度。
我们还发现,要么在末尾添加了多个返回,因此在底部添加了空间,要么用户一直在单击和拉伸夹点。
右边的图像是我们希望在运行lisp后看到的。
您的代码固定了宽度夹点位置,但不固定高度夹点位置。
 
 
希望你能帮忙。
 
当做
Shoey鞋

Lee Mac 发表于 2022-7-5 18:06:11

请试用Shoey上面的更新代码

Shoey 发表于 2022-7-5 18:07:21

非常感谢李。
真是太棒了!
 
我感谢你的时间和帮助。
 
当做
Shoey鞋

Lee Mac 发表于 2022-7-5 18:14:27

非常欢迎你Shoey

Rosamund Kwan 发表于 2022-7-5 18:18:14

 
尊敬的LeeMac:
可以获得文本框或多重引线的4个顶点坐标吗?
有可能吗?

Rosamund Kwan 发表于 2022-7-5 18:23:35

@李·麦克
 
嗨,李,这不可能吗?
页: [1] 2
查看完整版本: 多重引线包络处理