broncos15 发表于 2022-7-5 17:49:36

如何确定lin的数量

我很好奇,在多重引线对象中是否有确定文本行数(或文本框高度)的方法?我已经把所有的信息都翻了一遍,没有看到任何与此相关的信息。我问这个问题的原因是因为我试图添加到李在这里找到的代码中:http://www.cadtutor.net/forum/showthread.php?76430-多重引线包络处理。我的想法是进行一次迭代,从1.01开始,以0.01的增量增加容差,直到文本框高度与最初相同(我已经多次弄乱了容差,我无法得到一个始终有效的值,但仍然缩小了文本框)。

Tharwat 发表于 2022-7-5 18:00:23

你好
 
如果找到多行文字字符串,可以通过多行文字字符串中组合字符串的数量\\P获得行数。

broncos15 发表于 2022-7-5 18:02:44

谢谢塔瓦的帮助!所以我研究了你的建议,我可以从vla get textstring或dxf组码304中获得,但问题是,\\P信息只有在用户点击enter键输入新的文本行时才可用,而不是通过拖动文本框将文本放在第二行时才可用,至少据我所知。

BIGAL 发表于 2022-7-5 18:11:43

转储三行多行文字,你看起来像这样吗?
 
TextString=“abcdefg\\Phijklm\\Popqrst”

Lee Mac 发表于 2022-7-5 18:18:39

将多重引线文本框的高度除以文本高度+行距-web上某处的多行文字有一个类似的示例。

broncos15 发表于 2022-7-5 18:19:45

当我有一个多重引线,它有两行这样的文本:Cadtutor is
helpful.它像这样打印
TextString = "CADTUTOR IS HELPFUL"
. 谢谢李!我会玩一会儿,看看能不能弄明白。

broncos15 发表于 2022-7-5 18:29:03

所以我一直在胡闹,我仍然很困惑。我有一个宽度为29.9248的文本框,在查看dxf代码后,我看到的是组码43。文本框的高度是5.3333333,但我找不到任何相关信息。我试着做了29.9248/5.33333,得到了5.61,然而,没有任何组码有5.3333或5.61。我也知道文本高度是2.0(代码40),所以我试着用5.3333-2.0=3.3333来查找高度,但也没有一个具有该值的组码。我是不是错失了什么?

marko_ribar 发表于 2022-7-5 18:34:14

也许这是李写的。。。
 

;; by Lee Mac
;; http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/Determining-the-number-of-lines-in-a-...
(defun mattrib-number-of-lines (ent / box enx)
(setq enx (entget ent)
box (textbox (list '(1 . "A") (assoc 7 enx) (assoc 40 enx)))
)
(1+ (fix (/ (cdr (assoc 43 enx)) (* 1.66 (- (cadadr box) (cadar box))))))
)
;; mtxtattrib-number-of-lines

 
HTH,M.R。

broncos15 发表于 2022-7-5 18:37:48

谢谢marko(还有Lee的代码)!因此,我在mleader对象上测试了这一点,但由于dxf组码不同,它不起作用,但在多行文字对象上效果很好。我很难将其转换为用于mleader,因为我无法理解所有等价dxf组码。我知道mtext的1相当于mleader的304(给出了第一个304代码),40到40(给出了第二个),但我找不到7(样式)或43的任何等价物(我不确定这到底给出了什么)。

Lee Mac 发表于 2022-7-5 18:43:59

 
第43组给出了多行文字文本框的高度-据我所知,MLeader没有等效的DXF组。然而,我已经提供了一个函数来计算这个高度(并演示了如何获得MLeader文本样式),链接在上面。
页: [1] 2
查看完整版本: 如何确定lin的数量