[原创]cad2011文字以\中文bug的修复!
<b>修复大部分乱码文字,只有个别无法处理..xshrimp 2010.7.29</b><div> </div> 这么牛的小程序?收藏了 我发了电子邮件给autodesk成都办事处,叫他们将我的电子邮件转发给北京的商务部,现在还在等待结果,你这个是临时的解决方法,还是希望官方的解决方案,不过,真的很感谢你,你的响应速度比autodesk快多了,我发现这个bug的当天就给成都办事处打了电话的,他们最初给我的回复是不修复这个bug,后来我打电话给了北京autodesk的商务部,他们叫我发电子邮件给他们,他们处理,不知道结果怎么样,等待中。。。。。。。谢谢你的解决方案,谢谢。 感谢分享 \U+FF 后面跟随的应该是两位数的16进制 (10进制从0~255)吧?<br/>直接获取此两位字符后,转码hex2dec 为 10进制数再 chr 一次就可以了吧?改为 ssget 方式批量处理更好些.<br/><br/>另外此程序只能处理字符串中第一处乱码,后面的没有处理,建议改进循环控制,一次全部修正乱码<br/> 本帖最后由 作者 于 2010-8-3 15:13:12 编辑 <br /><br /> 修改了一下,结果还是有问题, 程序流程似乎正常,但不同位置情况的 "*\汉字*" 处理结果依然有些异常,请教大家如何修正?<br/><br/><br/>这是2004中的正常状态:<br/> <br/><br/>这是2011中使用本程序修正后的状态(图中云线是处理后依然有问题之处):<br/><br/> 调试中发现 使用 vla-object 方式访问到对象的 TextString 值和直接 entget 方式获得的值是不同的, entget 获得的TextString 中含有 "\\U+FF" 代码 ,vla-object方式没有,故不能用vla-object获得的TextString来判断是否存在乱码...<br/><br/><br/> 没看懂楼主程序中的 "\\U+00" 和 "\\M+5", 请教楼主其具体含意?谢谢! 没什么,有些乱码是无法复原的.这个才是真正的bug<div>例如 "\错误" 输入后2004打开依然为乱码.这个是无法修复的.</div> 本帖最后由 作者 于 2010-8-2 8:51:49 编辑 <br /><br /> <p class="MsoNormal"></p><p class="MsoNormal">cad中文本 "\乱码演示"</p><p class="MsoNormal">(vl-string->list<span style="mso-spacerun:yes"> "\\</span>乱码演示") -><span style="color:red"> (92 194 210 194 235 209 221 202 190) </span>这个是正确的数据.<o:p></o:p></p>
<p class="MsoNormal">2004中无论用entget或者vla方式获取的都是"\\乱码演示"</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">2010</p>
<p class="MsoNormal">1.vla方法:</p>
<p class="MsoNormal">(vl-string->list (vla-get-TextString<span style="mso-spacerun:yes"> (vlax-ename->vla-object (car
(entsel)))))</span></p>
<p class="MsoNormal">->(92
63 210 194 235 209 221 202 63)</p>
<p class="MsoNormal">对比一下.正确(92<span style="mso-tab-count:1"> 194 210 194 235 209 221 202 190)</span></p>
<p class="MsoNormal"><span style="mso-tab-count:1"> </span>错误(92 <span style="mso-spacerun:yes"> 63 210 194 235 209 221
202 63 )</span></p>
<p class="MsoNormal"><span style="mso-tab-count:1"> </span>估计根据这个数据无法恢复...</p><p class="MsoNormal"></p><p class="MsoNormal">2.entget方法:</p>
<p class="MsoNormal">(vl-string->list<span style="mso-spacerun: yes"> (cdr (assoc 1 (entget (car (entsel))))))
</span></p>
<p class="MsoNormal">->(92 92 85 43 70 70 67 50 210 194 235
209 221 202 92 85 43 48 48 66 69)<br/><br/></p><p class="MsoNormal"><br/></p><p class="MsoNormal"></p><p class="MsoNormal">根据上述对比方法写的修正程序.此为
"\\U+00" 和
"\\U+FF" 出处.<br/><br/></p><p class="MsoNormal">有些文字即使在cad2004中也无法修复.例如文字"\错误"等...</p><p></p><p></p><p></p>
页:
[1]
2