明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: rocking2008

[源码] 一行文字拆分成单个的字

[复制链接]
 楼主| 发表于 2022-4-25 19:34 | 显示全部楼层
e2002 发表于 2022-4-25 17:53
没这个程序只处理Text,不管MTEXT的,MTEXT我就先Explode

多行的暂且放一边不去考虑,因为多行炸开一下也就是单行。
但是1楼我上传的代码,对于单行的进行拆分,发现也不行。你有下载1楼的代码试过吗?
是里面哪里有问题,求改正一下。
发表于 2022-4-25 19:55 | 显示全部楼层
MTEXT很难对付
炸开吧
某些控制符会自动转换
特殊字符会自动变字体
有自动换行符的可能会重新换行
曾经我想做find替代命令
碰到多行文字实在搞不定
 楼主| 发表于 2022-4-25 19:57 | 显示全部楼层
masterlong 发表于 2022-4-25 19:55
MTEXT很难对付
炸开吧
某些控制符会自动转换

多行的不考虑。现在单行的,也无法拆分。
发表于 2022-4-25 21:00 | 显示全部楼层
回复 支持 0 反对 2

使用道具 举报

 楼主| 发表于 2022-4-25 21:07 | 显示全部楼层
taoyi0727 发表于 2022-4-25 21:00
http://bbs.mjtd.com/thread-184296-1-1.html

这个试过好像不行。
我将(defun str2lst (str / nstr)改成(defun C: str2lst (str / nstr)
执行不了。
发表于 2022-4-26 09:10 | 显示全部楼层
本帖最后由 mikewolf2k 于 2022-4-26 09:45 编辑
masterlong 发表于 2022-4-25 17:47
不是
我理解你的程序
是不炸开MT的情况下

关于Find,我的问题是,是LISP可以调用find的结果,还是仅仅指手工操作?这里讨论的是编程,手工操作没有意义。
发表于 2022-4-26 09:31 | 显示全部楼层
e2002 发表于 2022-4-25 17:53
没这个程序只处理Text,不管MTEXT的,MTEXT我就先Explode

请参考我的贴图。左列是原始元素MT,右列是拷贝过去然后炸掉的。
可以看到一行二列,如果MT设置的style是bigfont字体,MT中有格式用了其它字体,此时炸成单行文字,生成的单行文字会用textstyle,中英文混排的结果可能会乱,可以看到前面的123变宽,中文两个字位置偏左,但是宽度还是留出来了,3与中字重叠了。此时是ACAD炸的结果,我认为ACAD尚不能兼容这种情况。
我的MT也是先炸掉再处理炸掉的单行文字,所以第一行生成的边框是一样的,跟原始的MT不符,跟炸掉的DT相符。鉴于上面一段,我认为这是ACAD的bug,二开没法超越。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-4-26 09:43 | 显示全部楼层

我用你发的程序可以拆分呀


发表于 2022-4-26 11:15 | 显示全部楼层
本帖最后由 e2002 于 2022-4-26 15:12 编辑

昨天就这个问题,发现程序处理ttf样式的TEXT对象,当此对象最前面是空格开头的时候,得到的结果是缺失了这些空格的宽度。但shx样式不会有这个问题。


查了一下,发现是 AutoLISP的 textbox 函数,对于这种情况的 Text ,返回的值不正确,应该是个bug(2023中是这样,以前版本请各位测试一下)

下面是测试用代码:




分解前后对比:



Update: 既然有这么个bug,思考了一个解决方案,写了个测试代码,验证了此方案可行,后续将针对空格开头的Text对象做一个处理,这样将能获得正确的结果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-4-26 11:27 | 显示全部楼层
e2002 发表于 2022-4-26 11:15
昨天就这个问题,发现程序处理ttf样式的TEXT对象,当此对象最前面是空格开头的时候,得到的结果是缺失了这 ...

纯shx也有bug,参看我的贴图第二行文字中的row two,左边的MT中TWO是在一起的,炸开后T和W分开了,T和前面的row在一起,似乎是对空格的宽度判断失误。这些应该都是ACAD的bug。

点评

这个计算方法,2020年突然之间想出来的...  发表于 2022-4-26 11:41
你的计算方法调整一下,可以获得正确的结果的。  发表于 2022-4-26 11:40
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-27 01:17 , Processed in 0.140555 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表