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