cad.net 两台电脑的宋体居然不一样 cad宋体问号

我的两台电脑是win10的,然后设置了cad字体是"宋体",但是别的电脑打开之后就变成了问号,这很奇怪....以至于我很烦恼....

搜了一波之后,这个链接说的是对的 https://blog.csdn.net/tisn05/article/details/53063702

但是他只是找到了解决方案,没有找到问题原因,谁知道的告诉我一下...

我的c#代码写得比他多了点东西,主要是两台电脑相互保存的话,要能看见才行...

主函数:

    public class Command_ChangNewSong : IAutoGo
    {
        public void Initialize()
        {
            ChangNewSong();//自执行一次
            Application.DocumentManager.DocumentCreated += new DocumentCollectionEventHandler(ChangNewSong);
        }

        public void Terminate()
        { }
        public static void ChangNewSong(object sender = null, DocumentCollectionEventArgs e = null)
        {
            try
            {
                using (Application.DocumentManager.MdiActiveDocument.LockDocument())//锁文档
                {
                    Database db = HostApplicationServices.WorkingDatabase;//当前的数据库
                    ChangNewSongEnt(db);
                    db.Save();

                    //直接发送命令到cad命令栏
                    SendToCad.SendCommand("REGENALL");
                }
            }
            catch
            { }
        }
        public static void ChangNewSongEnt(Database db)
        {
            //更改新宋体为宋体
            bool songticunzai = false;//SD_宋体 存在
            bool songticunzaiNew = false;//SD_新宋体 存在
            string ttc = ".TTF";

            using (Transaction tr = db.TransactionManager.StartTransaction())//来源数据库的事务
            {
                var st = tr.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable;
                foreach (ObjectId id in st)
                {
                    if (id.IsOk())
                    {
                        var tstr = tr.GetObject(id, OpenMode.ForRead) as TextStyleTableRecord;
                        if (tstr.Name == "SD_" + AutoGo.ConfigTxtStyle)
                        {
                            songticunzai = true;
                        }
                        if (tstr.Name == "SD_新宋体")
                        {
                            songticunzaiNew = true;
                        }
                        if (tstr.Font.TypeFace != "")//缺失字体
                        {
                            string trypFace = tstr.Font.TypeFace.ToUpper();
                            //if (tstr.Name == "SD_宋体")
                            //{
                            //    System.Windows.Forms.MessageBox.Show($"SD_宋体用了这个:{trypFace}");
                            //}
                            if (trypFace == "RS_Song".ToUpper() || trypFace == "SimSun".ToUpper())
                            {
                                tr.AddTextStyle(db, tstr.Name, AutoGo.ConfigTxtStyle + ttc);
                            }
                        }
                    }
                }
                if (!songticunzai) //没有就是可以改名称
                {
                    foreach (ObjectId id in st)
                    {
                        if (id.IsOk())
                        {
                            var tstr = tr.GetObject(id, OpenMode.ForRead) as TextStyleTableRecord;
                            if (tstr.Font.TypeFace == "新宋体" && tstr.Name == "SD_新宋体")
                            {
                                tstr.UpgradeOpen();
                                tstr.Name = "SD_" + AutoGo.ConfigTxtStyle;
                                tstr.DowngradeOpen();
                            }
                            if (tstr.Font.TypeFace == "新宋体")
                            {
                                tr.AddTextStyle(db, tstr.Name, AutoGo.ConfigTxtStyle + ttc);
                            }
                        }
                    }
                }
                tr.Commit();
            }

            using (Transaction tr = db.TransactionManager.StartTransaction())//来源数据库的事务
            {
                if (songticunzai)
                {
                    if (songticunzaiNew)  //判断有没有 "SD_新宋体"
                    {
#if !HC2019
                        //文字样式
                        var stid = tr.AddTextStyle(db, "SD_新宋体", AutoGo.ConfigTxtStyle + ttc);
#else
                           //文字样式
                            var stid = tr.AddTextStyleToDatabase(db,"SD_新宋体",  AutoGo.ConfigTxtStyle);
#endif
                    }
                }
                else
                {
#if !HC2019
                    //文字样式
                    var stid = tr.AddTextStyle(db, "SD_" + AutoGo.ConfigTxtStyle, AutoGo.ConfigTxtStyle + ttc);
#else
                         //文字样式
                         var stid = tr.AddTextStyleToDatabase(db,"SD_" +  AutoGo.ConfigTxtStyle,  AutoGo.ConfigTxtStyle);
#endif
                }
                tr.Commit();
            }
        }
    }

新建字体函数

        /// <summary>
        /// 新建文字样式
        /// </summary>
        /// <param name="db"></param>
        /// <param name="name">样式名</param>
        /// <param name="smallfont">字体名</param>
        /// <param name="bigfont">大字体</param>
        /// <param name="height">高度</param>
        /// <param name="xscale">宽度因子</param>
        /// <returns></returns>
        public static ObjectId AddTextStyle(this Transaction tr, Database db, string name, string smallfont, string bigfont = null, double xscale = 1, double height = 0)
        {
            ObjectId ida = ObjectId.Null;

            //获取已有这个名字的文字样式表记录
            var st = tr.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable;
            foreach (ObjectId id in st)
            {
                if (id.IsOk())
                {
                    var tstr = tr.GetObject(id, OpenMode.ForRead) as TextStyleTableRecord;
                    if (tstr.Name == name)//有就打开,并修改内容
                    {
                        if (!string.IsNullOrEmpty(smallfont))//如果字体不设置,就只返回
                        {
                            tstr.UpgradeOpen();

                            tstr.FileName = smallfont;
                            if (bigfont == null)
                            {
                                tstr.BigFontFileName = "";
                            }
                            else
                            {
                                tstr.BigFontFileName = bigfont;
                            }
                            tstr.TextSize = height;
                            tstr.XScale = xscale;

                            tstr.DowngradeOpen();
                        }
                        ida = id;
                        break;
                    }
                }
            }
            //没有就新建一个
            if (ida == ObjectId.Null)
            {
                TextStyleTableRecord tstr = new TextStyleTableRecord
                {
                    Name = name,
                    FileName = smallfont,

                    TextSize = height,
                    XScale = xscale
                };

                if (bigfont == null)
                {
                    tstr.BigFontFileName = "";
                }
                else
                {
                    tstr.BigFontFileName = bigfont;
                }
                st.UpgradeOpen();
                ida = st.Add(tstr);
                tr.AddNewlyCreatedDBObject(tstr, true);
                st.DowngradeOpen();
            }
            return ida;
        }

原文地址:https://www.cnblogs.com/JJBox/p/10919629.html

时间: 2024-08-08 02:52:30

cad.net 两台电脑的宋体居然不一样 cad宋体问号的相关文章

自己的两台电脑,在局域网中,可以快速共享两个电脑的文件,可以很方便操作。

1.可以启用远程控制,让A控制B.这样比较方便. 2.在同一个局域网中,可以让两台机器在局域网中,设置某些文件夹共享.这样可以非常方便,而且这样操作,A就像同时拥有A和B两台电脑的硬盘一样.而且还可以同时操作两台电脑,建立一个notepad(记事本)文件,比如在a电脑浏览器上看到一个需要下载的文件.但是A电脑在运行很多程序,下载起来很慢,这个时候就可以用这个共用文件当文字传递工具用了. 3.刚刚这种方式,是用文件共享的方式来传递一段文字的.(有的同学会问,为啥不用qq直接传输呢?这是因为两台电脑

两台电脑共享一套键盘鼠标的神器

实验室有台台式电脑,自己又带了笔记本,现在键盘鼠标是连接在台式机上的,当要使用笔记本的时候再去用笔记本的触摸板是很不习惯,就想找找有没有能什么东西能实现一套键盘鼠标给两台电脑用的,从某宝上搜到的是使用一个有点小贵的类似转接器的东西,觉得每次都要链接挺麻烦的,幸运的我从百度中找到了这款神奇ShareMouse(点击有惊喜) 下面讲讲怎么用的哈! 1.下载 地址http://www.keyboard-and-mouse-sharing.com/download.php 2.安装 在笔记本上和台式机(

如何用网线实现两台电脑之间的文件共享

如何用网线实现两台电脑的文件共享 一.在局域网中,如果两台电脑都插网线了,就可以在局域网下实现文件的共享,具体方法如下: 1.用要共享文件的电脑打开cmd,输入ipcofig查看对方电脑的ip地址,我这里另外一台电脑ip为192.168.1.102 2.找到要共享的文件夹,右键该文件,点击分享->选择分享给所有人即可,如下图所示 3.打开运行(win+R),输入两个反斜杠和ip地址,如下所示 4.点击确定后会提示输入对方用户名和密码的信息(注意,对方电脑必须设置开机密码,否则会一直提示输入正确的

如何通过直接网线接法连接两台电脑

如何通过直接网线接法连接两台电脑 1.制作水晶头 通过网线对两台电脑进行连接时,网线水晶头接法是:一端按 t568a 线序接,一端按 t568b 线序接.网线制作完成之后,通过网线水晶头连接电脑,这样两台电脑间的物理连接就形成了. 2.设置IP 物理连接的形成并不代表两台电脑可以进行通信,想使通过直接网线接法连接两台电脑进行数据传输,还必须进行相关的设置: 设置项 机器A 机器B IP 192.168.1.2 192.168.1.3 子网掩码 255.255.255.0 255.255.255.

Socket编程,简单的类似qq聊天,可以两台电脑互通

原文:Socket编程,简单的类似qq聊天,可以两台电脑互通 源代码下载地址:http://www.zuidaima.com/share/1550463676648448.htm Socket编程,简单的类似qq聊天,可以两台电脑互通,刚学习网络编程的可以看下 源码截图:

用网线在两台电脑间传送文件

材料:一根普通的网线(简单地说就是平时我们使用的连接笔记本和路由器的线,不是双绞线),两台WIN7系统的笔记本,就这些了. 步骤1:将两台电脑用网线连接起来. 步骤2:这时分别修改两台电脑上的数据.单击控制面板——查看网络状态和任务——查看活动网络——本地连接——属性——Internet 协议版本4,在弹出的对话窗中做如下修改: 第一台笔记本作如下修改:选择——使用下面的IP地址,IP地址192.168.1.1子网掩码255.255.255.0默认网关192.168.1.2——使用下面的DNS服

两台电脑共享鼠标键盘

第一步:下载软件synergy,分别装到两台电脑上: 第二步:一台电脑当服务器,一台电脑当客户端,当然是你的插鼠标键盘的电脑是服务器啦. 第三步:分别配置软件 1)服务器配置如下图流程 点击设置服务器 添加热键用来切换 2)客户端配置 输入服务器的ip地址就可以 注意:必须两台电脑之间能ping通,而且应该可以若干电脑共享吧,我感觉.

windows 测试两台电脑(两个ip)是否在同一个局域网

windows 测试两台电脑(两个ip)是否在同一个局域网 CreateTime--2018年5月4日11:28:38 Author:Marydon 1.查看A电脑的ip win+r-->cmd-->ipcofig-->选中ip4对应的值-->按右键完成复制 2.B电脑通过ping来判断网络是否畅通 win+r-->cmd-->ping 192.168.200.158-->回车 3.小结 请求超时,说明网络不通,即这两台电脑不在同一个局域网下: 来自192.168

两台电脑可以互相传送文件吗

我们在更换新电脑的时候,发现旧电脑上还有一些重要的资料或者电影照片,甚至是游戏,而且文件较大,甚至可达几十GB,单纯用U盘来挪动文件,是非常浪费时间的.今天小编就来教大家一下两台电脑如何相互连接传送文件. 首先要有一个无线路由器(交换机),2根网线.接下来我们假设:电脑A为旧电脑,电脑B为新电脑. 1.把电脑A的网线插在无线路由器的Lan1插口上,电脑B的网线插在Lan2插口上:如果都是笔记本或带无线网卡的电脑,也可以不使用网线,连接无线路由器的WiFi也行(建议网线下,网线比较稳定) 2.在电