明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4073|回复: 39

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

[复制链接]
发表于 2022-4-24 22:28:10 | 显示全部楼层 |阅读模式
本帖最后由 rocking2008 于 2022-4-30 13:13 编辑



上面的附件,是一个可以将一行文字,拆分成一个一个单独的文字,原码出自“1028695446”,


功能:将选文字(支持单行和多行),这框选的所有文字,拆分成独立的一个一个的字,字,符号,数字,字母都是一个一个单独的,位置不变。

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-4-25 21:00:39 | 显示全部楼层
回复 支持 0 反对 2

使用道具 举报

发表于 2022-4-26 09:31:01 | 显示全部楼层
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 11:15:17 | 显示全部楼层
本帖最后由 e2002 于 2022-4-26 15:12 编辑

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


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

下面是测试用代码:




分解前后对比:



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

本帖子中包含更多资源

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

x
发表于 2022-4-25 11:09:10 | 显示全部楼层
很多年前写过,2020年改进了一下,分解结果做到了完全的原位置不变。
很少有人提这个需求,Maicy 之前也写了一个,几十年来都没人反馈过意见...
发表于 2022-4-25 11:36:13 | 显示全部楼层
e2002 发表于 2022-4-25 11:09
很多年前写过,2020年改进了一下,分解结果做到了完全的原位置不变。
很少有人提这个需求,Maicy 之前也写 ...

用了JUSTIFYTEXT??
发表于 2022-4-25 11:50:06 | 显示全部楼层

不是的,只是算法比较费事
发表于 2022-4-25 13:21:01 | 显示全部楼层
e2002 发表于 2022-4-25 11:50
不是的,只是算法比较费事

请问有没有试过bigfont的多行文字?我的程序,如果用bigfont,就会定位不准,如果下面的那个文字。上面文字是非bigfont字体,没问题。

本帖子中包含更多资源

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

x
发表于 2022-4-25 14:34:07 | 显示全部楼层
mikewolf2k 发表于 2022-4-25 13:21
请问有没有试过bigfont的多行文字?我的程序,如果用bigfont,就会定位不准,如果下面的那个文字。上面文 ...

多行文字非常复杂
不止字体的原因
控制符、特殊符号、自动换行等
都可能影响到单个字符的定位
find命令虽然不好用
但是它在定位这一块做得很到位
发表于 2022-4-25 16:21:45 | 显示全部楼层
masterlong 发表于 2022-4-25 14:34
多行文字非常复杂
不止字体的原因
控制符、特殊符号、自动换行等

我是VBA做的,你的意思是LISP可以调用FIND?
发表于 2022-4-25 17:47:33 | 显示全部楼层
不是
我理解你的程序
是不炸开MT的情况下
给每个单独字符加框?

基于以上理解
我认为你的程序
很可能并没有考虑那些
前面回帖里说的很复杂的情况

说find命令这一点做得好
是因为各种情况下
它的定位都是准确的
发表于 2022-4-25 17:53:45 | 显示全部楼层
mikewolf2k 发表于 2022-4-25 13:21
请问有没有试过bigfont的多行文字?我的程序,如果用bigfont,就会定位不准,如果下面的那个文字。上面文 ...

没这个程序只处理Text,不管MTEXT的,MTEXT我就先Explode
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:37 , Processed in 0.254047 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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