乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 67|回复: 5

[求助]打开文档时缺失字体的问题

[复制链接]

4

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
30
发表于 2010-6-17 11:34:00 | 显示全部楼层 |阅读模式
我想用下面的代码打开一个文件

Dim doc As Document = Autodesk..ApplicationServices.Application.DocumentManager.Open(filename, False)

我发现当这个文件中存在目前CAD没有的字体时,这个文件被直接打开了。并没有像我们手动打开的时候会出现一个提示替换字体的对话框。

现在希望能够实现一个功能。在用代码打开的时候仍然可以出现这个对话框让用户选择,如果可以最好帮用户把字体替换掉。

不知道CAD有没有类或者方法可以实现这个功能,请大家指点!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-6-18 15:04:00 | 显示全部楼层
Fenix贴个特殊字体的文件上来看看
回复

使用道具 举报

4

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
30
发表于 2010-6-18 15:19:00 | 显示全部楼层
呵呵,好的。有些特殊字体我这边是没有的。比如“intecad.shx”“hzfx.shx”

我贴一个我经常拿来替换这些字体的字体吧。这个是“gbcbig.shx”。可以替换大部分的没见过的字体。

如果程序可以实现自动替换的话,也很方便了。

另外贴上一张图,一张缺少字体的图。
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:0ebgcfbyh1b.dwg 
下载次数:0  文件大小:161.24 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]




饿。gbcbig这个字体太大了。超过400kb,快900多了。没办法上传,就上传一张图吧。
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-6-19 10:12:00 | 显示全部楼层
        [CommandMethod("t11", CommandFlags.Session)]
        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;
        }
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2010-6-19 10:14:00 | 显示全部楼层
结果,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,
回复

使用道具 举报

4

主题

14

帖子

1

银币

初来乍到

Rank: 1

铜币
30
发表于 2010-6-21 09:15:00 | 显示全部楼层

Thx,刚上班就看到版主的回答了。版主周六还在帮忙解答问题,:)非常感谢!

我看了版主的代码,这样的话确实可以实现字体的信息提示功能了。

不过这样看来似乎没法在CAD中用二次开发的形式实现打开图形并选择替换字体的功能了,我看来得选择其他的途径了!

总之非常感谢版主的作答,呵呵。

根据版主的提示我做了另外一个方法,终于解决现在这个问题了,很感谢飞狐版主的无私帮助!谢谢!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:13 , Processed in 0.442059 second(s), 69 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表