hao3ren 发表于 2009-2-28 20:52:00

求助文字问题,请版主及各位高手帮忙

本帖最后由 作者 于 2009-3-4 0:02:10 编辑

应经常套用图纸不可避免需要修改文字,但图面上都有这些文字,纯粹修改文字输入也很麻烦,不知道有没有这样的工具,可以直接框选文字提取文字过后再进行框选插入,替换或者将提取的文字单独插入到指定位置上?这样可以大大减轻由于CAD文字编辑功能弱项带来的繁琐工作

hao3ren 发表于 2009-3-4 00:02:00

<p>版主帮忙写一下吧,也许有些难度吧,在论坛上好像没有看到这种程序啊</p><p>就是想用鼠标完成大部分文字编辑,提高速度</p>

cfu18 发表于 2009-3-4 21:04:00

<p>是不是首先选择一个文字,然后提取文字内容,</p><p>然后用这个内容替换所有其它选中的文字内容啊.</p><p>如果是这样我可以帮你写</p>

cfu18 发表于 2009-3-4 21:06:00

<p>对了,我的QQ是31642938</p><p>直接发这个,我比较少来这里</p><p>免费帮忙</p>

cfu18 发表于 2009-3-4 21:34:00

<p></p><p>简单写一个替换AcdbText的.ARX是在VC6.0下编译的,只能2000/2002加载</p><p>加载了ARX,然后命令是CT.</p>

cfu18 发表于 2009-3-4 21:36:00

<p>简单代码</p><p>void ChangeText()<br/>{<br/>&nbsp;ads_name entText;<br/>&nbsp;ads_point ptSel;<br/>&nbsp;if(ads_entsel(_T("\n请选择文字内容样本:"),entText,ptSel) != RTNORM)<br/>&nbsp;&nbsp;return;</p><p>&nbsp;AcDbObjectId idText;<br/>&nbsp;Acad::ErrorStatus es = acdbGetObjectId(idText,entText);<br/>&nbsp;if (es != Acad::eOk)<br/>&nbsp;&nbsp;return;</p><p>&nbsp;AcDbEntity * pEnt = NULL;<br/>&nbsp;acdbOpenAcDbEntity(pEnt,idText,AcDb::kForWrite);<br/>&nbsp;if (!pEnt)<br/>&nbsp;&nbsp;return;</p><p>&nbsp;if (!pEnt-&gt;isKindOf(AcDbText::desc()))<br/>&nbsp;{<br/>&nbsp;&nbsp;pEnt-&gt;close();<br/>&nbsp;&nbsp;return;<br/>&nbsp;}</p><p>&nbsp;AcDbText * pText = (AcDbText*)pEnt;<br/>&nbsp;CString strTextCon = pText-&gt;textString();</p><p>&nbsp;pEnt-&gt;close();</p><p>&nbsp;ads_name entChange;<br/>&nbsp;//只要acdbText<br/>&nbsp;struct resbuf * out = ads_buildlist(RTDXF0,"TEXT",0);<br/>&nbsp;ads_printf(_T("\n选择要替换内容的文字"));<br/>&nbsp;if(ads_ssget(NULL,NULL,NULL,out,entChange)!=RTNORM)<br/>&nbsp;{<br/>&nbsp;&nbsp;ads_relrb(out);<br/>&nbsp;&nbsp;return;<br/>&nbsp;}</p><p>&nbsp;//遍历选择集,替换内容<br/>&nbsp;long nNums = 0;<br/>&nbsp;ads_sslength(entChange,&amp;nNums);<br/>&nbsp;int i = 0;<br/>&nbsp;for (;i &lt; nNums;i++)<br/>&nbsp;{<br/>&nbsp;&nbsp;ads_name curEnt;<br/>&nbsp;&nbsp;ads_ssname(entChange,i,curEnt);<br/>&nbsp;&nbsp;AcDbObjectId curID;<br/>&nbsp;&nbsp;es = acdbGetObjectId(curID,curEnt);<br/>&nbsp;&nbsp;if (es != Acad::eOk)<br/>&nbsp;&nbsp;&nbsp;continue;</p><p>&nbsp;&nbsp;AcDbText * pCurText = NULL;<br/>&nbsp;&nbsp;acdbOpenAcDbEntity((AcDbEntity*&amp;)pText,curID,AcDb::kForWrite);<br/>&nbsp;&nbsp;if (!pText)<br/>&nbsp;&nbsp;&nbsp;continue;</p><p>&nbsp;&nbsp;pText-&gt;setTextString(strTextCon);</p><p>&nbsp;&nbsp;pText-&gt;close();<br/>&nbsp;}</p><p>&nbsp;ads_relrb(out);<br/>&nbsp;ads_ssfree(entChange);<br/>}</p>

hao3ren 发表于 2009-3-7 22:11:00

<strong><font face="Verdana" color="#61b713">感谢cfu18,真的很热心,现在我把它写的东西给大家看看,大家有什麽意见可以提,文件见下</font></strong>

hao3ren 发表于 2009-3-7 22:12:00

怎么没有传上来啊

hao3ren 发表于 2009-3-7 22:13:00

晕,还是打包吧

xyp1964 发表于 2009-3-9 23:29:00

框选插入:
页: [1]
查看完整版本: 求助文字问题,请版主及各位高手帮忙