assafius 发表于 2022-7-6 07:28:54

框中的文本

你好
 
我在模型空间中有一个文本实体。
 
假设我可以完美地检索其边界框的坐标。
 
现在,我有一个具有特定大小的矩形,我希望将文本插入到矩形中,并保持良好的匹配。如何用lisp将文本高度调整为矩形的尺寸?
 
谢谢!

Lee Mac 发表于 2022-7-6 07:36:34

可能使用“适合”文本对齐方式,将文本高度设置为矩形的高度。
 
作为一个非常简单的示例,请考虑:
(defun c:tfit ( / a b e p q )
   (if
       (and
         (progn
               (while
                   (progn (setvar 'errno 0) (setq e (car (entsel "\nSelect Text: ")))
                     (cond
                           (   (= 7 (getvar 'errno))
                               (princ "\nMissed, try again.")
                           )
                           (   (= 'ename (type e))
                               (if (/= "TEXT" (cdr (assoc 0 (entget e))))
                                 (princ "\nObject is not Text.")
                               )
                           )
                     )
                   )
               )
               (= 'ename (type e))
         )
         (setq e (entget e))
         (setq a (getpoint "\nSpecify first corner: "))
         (setq b (getcorner a "\nSpecify opposite corner: "))
         (setq p (mapcar 'min a b)
               q (mapcar 'max a b)
         )
       )
       (entmod
         (subst '(72 . 5) (assoc 72 e)
               (subst '(73 . 0) (assoc 73 e)
                   (subst (cons 10 p) (assoc 10 e)
                     (subst (list 11 (car q) (cadr p) 0.0) (assoc 11 e)
                           (subst (cons 40 (- (cadr q) (cadr p))) (assoc 40 e) e)
                     )
                   )
               )
         )
       )
   )
   (princ)
)

teknomatika 发表于 2022-7-6 07:46:00

李,果然很好。
顺便提一下,你可以把同样的概念应用到一个块上?

Lee Mac 发表于 2022-7-6 07:56:57

 
谢谢teknomatika。
 
 
你指的是块中的属性吗?
如果是这样,那么是的,属性也可以使用“拟合”对齐。

teknomatika 发表于 2022-7-6 08:00:01

李,
我指的是街区本身。将给定块调整为矩形定义的区域。改变其比例。
在用于插入块的对话框中,我可以设置值​​但有了这个概念,就更容易适应某个区域。

Lee Mac 发表于 2022-7-6 08:07:33

 
是的,通过计算选定块的边界框并根据边界框的宽度和高度与用户指定的矩形尺寸的比率更改块的X和Y比例因子(假设块可以非均匀缩放),这当然是可能的。

assafius 发表于 2022-7-6 08:16:00

好的,李,谢谢。尚未尝试实现您在代码中编写的内容,但它看起来很有前途。
 
您写道,我可能会使用“Fit”命令将一个高度调整到另一个高度,但我认为您没有考虑文本的宽度。两个文本可以具有相同的
高度,但如果一个比另一个长,它将不适合矩形。有没有一种方法也适合文本宽度?

Lee Mac 发表于 2022-7-6 08:26:59

 
请重新阅读我的帖子并研究我的代码,我没有提到“Fit”命令,不管是什么。

teknomatika 发表于 2022-7-6 08:34:42

 
李,我理解了原理和步骤,但显然我对AutoLISP的了解仍然是执行这样一个例程的基础。所以当你有空的时候,我很感激你能(再次)帮助我。
非常感谢。
页: [1]
查看完整版本: 框中的文本