明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3492|回复: 11

[CAD-VBA编程]--如何判断一段文字是否过长而采用分行

  [复制链接]
发表于 2012-9-28 14:22:15 | 显示全部楼层 |阅读模式
本帖最后由 alex15 于 2012-9-28 17:16 编辑

有一批若干cad图纸,里面数据因为长短不同,有的超出了边框有的没有
需要用编程去对这批图纸批量处理,一共两行文字,对第一行的那段文字进行判断,如果超过20个字符,就自动分行,而原来的第二行下移一行。

感谢版主的提醒。假设这些dwg文件都是在一个文件夹中
每张图都有一个框,可以看到有的图类似第一行超出格子,我需要把第二行的 FLOW下移一行,第一行大于20个字符后的那些字符自动分行到第二行显示,应该如何做呢?





因为完全没有对CAD有过VBA的经验,特此求教,最好能带上excel含有Vba的附件。多谢多谢!

本帖子中包含更多资源

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

x
发表于 2012-9-28 15:45:58 | 显示全部楼层
楼主最好能模拟一个附件发上来,不然就这样描述很难得到想到的程序
比如什么是边框?这批图纸是在一个文件夹里面放着吗?是对哪些文字进行处理(整个图纸里面的所有文字吗?)
如果楼主问题清晰的话,相信很快就会有结果
发表于 2012-9-28 16:44:49 | 显示全部楼层
if  len(textstring)>10 then
 楼主| 发表于 2012-9-28 17:17:45 | 显示全部楼层
cqy 发表于 2012-9-28 16:44
if  len(textstring)>10 then

请问能否完整的一个程序段呢?因为对cad的vba完全没有概念,excel的vba有些基础,所以能否尽量全一点我正好可以学习一下。我明白你的这句话是个关键语句,但是其他类似对象的声明打开等都不太熟悉,所以还是希望能够全一点。

十分感谢!
 楼主| 发表于 2012-9-28 17:19:06 | 显示全部楼层
sscylh 发表于 2012-9-28 15:45
楼主最好能模拟一个附件发上来,不然就这样描述很难得到想到的程序
比如什么是边框?这批图纸是在一个文件夹 ...

谢谢提醒,已经上传cad例子。

最好的情况就是能够做到一个excel的vba中可以上传附件,谢谢啦~~
发表于 2012-9-28 20:58:31 | 显示全部楼层
cqy 发表于 2012-9-28 16:44
if  len(textstring)>10 then

这个可能不完美,在字体和宽度比例因子不同的情况下,文字的个数虽然相同,但是长度有可能不同的。
发表于 2012-9-28 21:40:03 | 显示全部楼层
另:是单行文本,还是多行文本?
发表于 2012-9-29 10:19:02 | 显示全部楼层
获得第一个文字,判断是否超过字数。超过的话,获得第二个文字,下移,拷贝第一个文字,第一个文字的文本取前N个字符,拷贝的文字取后N个字符。结束。
发表于 2012-9-29 11:31:35 | 显示全部楼层
以上适用范围都太小啊,前面也说了,有字体宽度,比例因子等影响着,所以还是要框选确定x坐标的两角点
再判断文字的boundingbox的x坐标差。根据文字x坐标与范围x坐标的比例,确定分割文字到第二行的比例,再分割确定字数。
由于前面用到框选,全图(批量),则对于框选的角点须有一定规律(最好的是两种情况:1.框选间距一定
2.有块做为基点(或文字位置与某块具有恒定相对位置))
发表于 2012-10-2 21:57:41 | 显示全部楼层
把字符串放到mtext里头,mtext的范围角点设置在格子里头,文本长了不就是可以自动分行了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 14:52 , Processed in 0.201753 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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