[求助]打开文档时缺失字体的问题
<p>我想用下面的代码打开一个文件</p><p> </p>
<p><font face="Verdana">Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(filename, False)</font></p>
<p> </p>
<p>我发现当这个文件中存在目前CAD没有的字体时,这个文件被直接打开了。并没有像我们手动打开的时候会出现一个提示替换字体的对话框。</p>
<p> </p>
<p>现在希望能够实现一个功能。在用代码打开的时候仍然可以出现这个对话框让用户选择,如果可以最好帮用户把字体替换掉。</p>
<p> </p>
<p>不知道CAD有没有类或者方法可以实现这个功能,请大家指点!</p> <p><font color="#61b713" face="Verdana"><b>Fenix</b></font>贴个特殊字体的文件上来看看</p> <p>呵呵,好的。有些特殊字体我这边是没有的。比如“intecad.shx”“hzfx.shx”</p>
<p> </p>
<p>我贴一个我经常拿来替换这些字体的字体吧。这个是“gbcbig.shx”。可以替换大部分的没见过的字体。</p>
<p> </p>
<p>如果程序可以实现自动替换的话,也很方便了。</p>
<p> </p>
<p>另外贴上一张图,一张缺少字体的图。</p>
<p></p>
<p> </p>
<p>饿。gbcbig这个字体太大了。超过400kb,快900多了。没办法上传,就上传一张图吧。</p> <font face="Verdana"><font face="Verdana">
<p><font face="Verdana"> <br/> public static void Test11()<br/> {<br/> var doc = Application.DocumentManager.Open(@"D:\Downloads\fm.dwg");<br/> var db = doc.Database;<br/> var ed = doc.Editor;</font></p>
<p><font face="Verdana"> var hostapp = HostApplicationServices.Current;</font></p>
<p><font face="Verdana"> using (doc.LockDocument())<br/> {<br/> using (Transaction tr = db.TransactionManager.StartTransaction())<br/> {<br/> var tstable = db.TextStyleTableId.GetObject(OpenMode.ForRead) as TextStyleTable;<br/> foreach (ObjectId id in tstable)<br/> {<br/> var tstr = id.GetObject(OpenMode.ForRead) as TextStyleTableRecord;<br/> ed.WriteMessage<br/> (<br/> "\n{0}:{1},{2}",<br/> tstr.Name, <br/> FindFontFile(db, tstr.FileName), <br/> FindFontFile(db, tstr.BigFontFileName)<br/> );<br/> }<br/> }<br/> }<br/> ed.WriteMessage("\n");<br/> }</font></p><font face="Verdana">
<p><br/> public static string FindFontFile(Database db, string name)<br/> {<br/> var hostapp = HostApplicationServices.Current;</p>
<p> if (name == "")<br/> return null;</p>
<p> string fullname = "";</p>
<p> try<br/> {<br/> fullname =<br/> hostapp.FindFile<br/> (<br/> name,<br/> db,<br/> FindFileHint.FontFile<br/> );<br/> }<br/> catch<br/> {<br/> fullname = name + " Missing";<br/> }</p>
<p> return fullname;</p>
<p> }</font></p></font></font> <p>结果,TTF有点问题,:)</p>
<p><font face="Verdana">STANDARD:D:\Program Files\AutoCAD 2008\fonts\txt.shx,<br/>HZTXT:D:\Program Files\AutoCAD 2008\fonts\txt.shx,hztxt Missing<br/>TXT:D:\Program Files\AutoCAD 2008\fonts\txt.shx,<br/>NR:ARIAL.TTF Missing,</font></p> 本帖最后由 作者 于 2010-6-22 10:40:43 编辑 <br /><br /> <p>Thx,刚上班就看到版主的回答了。版主周六还在帮忙解答问题,:)非常感谢!</p>
<p> </p>
<p>我看了版主的代码,这样的话确实可以实现字体的信息提示功能了。</p>
<p> </p>
<p>不过这样看来似乎没法在CAD中用二次开发的形式实现打开图形并选择替换字体的功能了,我看来得选择其他的途径了!</p>
<p> </p>
<p>总之非常感谢版主的作答,呵呵。</p>
<p> </p>
<p>根据版主的提示我做了另外一个方法,终于解决现在这个问题了,很感谢飞狐版主的无私帮助!谢谢!</p>
页:
[1]