乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 88|回复: 8

[编程交流] 框中的文本

[复制链接]

20

主题

42

帖子

23

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 07:28:54 | 显示全部楼层 |阅读模式
你好
 
我在模型空间中有一个文本实体。
 
假设我可以完美地检索其边界框的坐标。
 
现在,我有一个具有特定大小的矩形,我希望将文本插入到矩形中,并保持良好的匹配。如何用lisp将文本高度调整为矩形的尺寸?
 
谢谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:36:34 | 显示全部楼层
可能使用“适合”文本对齐方式,将文本高度设置为矩形的高度。
 
作为一个非常简单的示例,请考虑:
  1. (defun c:tfit ( / a b e p q )
  2.    (if
  3.        (and
  4.            (progn
  5.                (while
  6.                    (progn (setvar 'errno 0) (setq e (car (entsel "\nSelect Text: ")))
  7.                        (cond
  8.                            (   (= 7 (getvar 'errno))
  9.                                (princ "\nMissed, try again.")
  10.                            )
  11.                            (   (= 'ename (type e))
  12.                                (if (/= "TEXT" (cdr (assoc 0 (entget e))))
  13.                                    (princ "\nObject is not Text.")
  14.                                )
  15.                            )
  16.                        )
  17.                    )
  18.                )
  19.                (= 'ename (type e))
  20.            )
  21.            (setq e (entget e))
  22.            (setq a (getpoint "\nSpecify first corner: "))
  23.            (setq b (getcorner a "\nSpecify opposite corner: "))
  24.            (setq p (mapcar 'min a b)
  25.                  q (mapcar 'max a b)
  26.            )
  27.        )
  28.        (entmod
  29.            (subst '(72 . 5) (assoc 72 e)
  30.                (subst '(73 . 0) (assoc 73 e)
  31.                    (subst (cons 10 p) (assoc 10 e)
  32.                        (subst (list 11 (car q) (cadr p) 0.0) (assoc 11 e)
  33.                            (subst (cons 40 (- (cadr q) (cadr p))) (assoc 40 e) e)
  34.                        )
  35.                    )
  36.                )
  37.            )
  38.        )
  39.    )
  40.    (princ)
  41. )
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 07:46:00 | 显示全部楼层
李,果然很好。
顺便提一下,你可以把同样的概念应用到一个块上?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:56:57 | 显示全部楼层
 
谢谢teknomatika。
 
 
你指的是块中的属性吗?
如果是这样,那么是的,属性也可以使用“拟合”对齐。
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 08:00:01 | 显示全部楼层
李,
我指的是街区本身。将给定块调整为矩形定义的区域。改变其比例。
在用于插入块的对话框中,我可以设置值​​但有了这个概念,就更容易适应某个区域。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:07:33 | 显示全部楼层
 
是的,通过计算选定块的边界框并根据边界框的宽度和高度与用户指定的矩形尺寸的比率更改块的X和Y比例因子(假设块可以非均匀缩放),这当然是可能的。
回复

使用道具 举报

20

主题

42

帖子

23

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 08:16:00 | 显示全部楼层
好的,李,谢谢。尚未尝试实现您在代码中编写的内容,但它看起来很有前途。
 
您写道,我可能会使用“Fit”命令将一个高度调整到另一个高度,但我认为您没有考虑文本的宽度。两个文本可以具有相同的
高度,但如果一个比另一个长,它将不适合矩形。有没有一种方法也适合文本宽度?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:26:59 | 显示全部楼层
 
请重新阅读我的帖子并研究我的代码,我没有提到“Fit”命令,不管是什么。
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 08:34:42 | 显示全部楼层
 
李,我理解了原理和步骤,但显然我对AutoLISP的了解仍然是执行这样一个例程的基础。所以当你有空的时候,我很感激你能(再次)帮助我。
非常感谢。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 04:44 , Processed in 0.481876 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表