iJero 发表于 2018-11-17 19:25:36

不同的字体实际高度和宽度不一样,该怎么解决?

本帖最后由 iJero 于 2018-11-17 22:36 编辑

我先用textBox函数得到一串字符串的外框尺寸,记长度为L,高度为H,一般系统默认H=0.200,
然后我用entmake函数绘制了一个文字段,设置高度为300 (cons 40 300) (cons 41 0.7),
那可以计算得到实际文字段的长度是L实际=0.7*(300/0.2)*L,思路是这样应该没错,
但,实际用用的时候发现因字体而已,
不同的字体、以及中英文的实际文字高度都会有较大的差异,以至于按上述思路计算得到的文字段实际长度不一样。
请叫各路大侠,该怎么计算出实际的文字长度呢?,还是我哪里忽略掉了什么?

edata 发表于 2018-11-18 17:48:36

每次用textBox计算行不行,textbox可以虚拟计算,只要你给的表正确即可,不一定是实际的实体。

原地踏步 发表于 2018-11-18 21:04:12

textbox得到的就是文字的实际高宽,你还要怎么样?如果是因为字体不同,你可以加上组码7。为保险起见,你还可以加上组码50、51。

mikewolf2k 发表于 2018-11-19 09:18:23

理论上是无解的,程序告诉字体画一个字高为5的字,但画出来的具体字要取决于字体的设置,有的字体画的是5,也有的字体画的是10。这是字体决定的,ACAD都不知道。
有个比较接近的方法,在VBA里面有个boundarybox取画出来的字的外边框,与字体无关,比较靠近了。用lsp中的等效函数试试看。

iJero 发表于 2018-11-19 09:59:58

本帖最后由 iJero 于 2018-11-19 10:10 编辑

mikewolf2k 发表于 2018-11-19 09:18
理论上是无解的,程序告诉字体画一个字高为5的字,但画出来的具体字要取决于字体的设置,有的字体画的是5, ...
我刚才也试了用另外一种方法(先entmake文字,再用textbox求画出来的文字),但结果也一样(毕竟textbox得到的不是画面上的图元)。
VBA不会用,算了,我再看看其他办法。
谢谢。

iJero 发表于 2018-11-19 10:00:22

谢谢楼上三位大侠

iJero 发表于 2018-11-19 10:58:05

问题已经搞定,
先entmake
再用textbox对(entget (entlast))进行求坐标
即(textbox (entget (entlast)))即可!
页: [1]
查看完整版本: 不同的字体实际高度和宽度不一样,该怎么解决?