多重引线包络处理
大家好我们有包含多个引线的图形,它们的边界框太大了!大于边界框中包含的文本。
我们确实有一个lisp,可以重新调整多行文字实体的边界框大小,但这不适用于多引线文字。
有没有人已经有了这样的Lisp程序并且愿意分享?
如果有人能帮忙,我们将不胜感激。
当做
Shoey鞋 试试这个简单的代码。。。
(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)
)
非常感谢Tharwat。
我很感激你的代码。然而,我忘了提到,我们的多重领导人中包含多行文本。
我们需要保留这些文本行,并保持边界框的宽度和高度相同。
我们不希望将其转换为一行文本。
当做
Shoey鞋 尝试以下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)]容差值。 李
非常感谢您的代码。
它就快到了,但高度的边界框不太在那里。
希望随附的图片对我们的要求更有意义。
左图是我们在图纸中看到的。
用户一直在线路末端返回,而不是使用固定宽度。
我们还发现,要么在末尾添加了多个返回,因此在底部添加了空间,要么用户一直在单击和拉伸夹点。
右边的图像是我们希望在运行lisp后看到的。
您的代码固定了宽度夹点位置,但不固定高度夹点位置。
希望你能帮忙。
当做
Shoey鞋
请试用Shoey上面的更新代码 非常感谢李。
真是太棒了!
我感谢你的时间和帮助。
当做
Shoey鞋 非常欢迎你Shoey
尊敬的LeeMac:
可以获得文本框或多重引线的4个顶点坐标吗?
有可能吗? @李·麦克
嗨,李,这不可能吗?
页:
[1]
2