大家在使用AutoCAD的过程中,我们常常因为缺失字体而烦恼,现在清风小编就来为大家介绍一款插件来解决这个问题。

AutoCAD自动管理字体插件分享[图]图片1

 

插件采用WEB服务器 + CAD插件方式。WEB服务器使用Python编写,部署在百度BAE上;CAD插件使用C++开发,在AutoCAD中使用命令“APPLOAD”加载该插件。

在CAD中打开新的DWG文档后,插件会自动比较DWG文档所需字体以及CAD的Font目录下的字体,如果有缺失字体,则自动到WEB服务器下载;如果有服务器上没有的字体,就悄悄上传到服务器。

下载:源代码:

https://github.com/Xiongpq/FontCenter

编译源代码需要ObjectARX,请自行下载。

客户端:

http://pan.baidu.com/s/1pJPk6mR

下载客户端后,可以在AutoCAD中,输入“APPLOAD”命令加载相应的Warrentech.FontCenter.Client.arx文件即可加载该插件。请注意AutoCAD不同版本应该加载不同的DLL,例如:AutoCAD 2008 32位,应加载2008_X86文件夹下的DLL。

主要代码:一、在LoadDwg时添加处理字体代码

客户端使用C++编写,调用AutoCAD的ObjectARX C++ API,在AutoCAD的On_kLoadDwgMsg事件中使用多线程做字体的下载及上传,下面是主要的代码:

virtualAcRx::AppRetCodeOn_kLoadDwgMsg(void*pkt){AcRx::AppRetCoderetCode=AcRxArxApp::On_kLoadDwgMsg(pkt);try{acutPrintf(_T("正在检测该文件字体设置,若有缺失将自动下载...\n"));HANDLEhth1;unsignedthreadID;FontBLL*fontBLL=newFontBLL();hth1= (HANDLE)_beginthreadex(NULL, 0,FontBLL::run,fontBLL,CREATE_SUSPENDED, &threadID);if(hth1!= 0) {ResumeThread(hth1);
            }
        }catch(...) {}return(retCode);
    }
二、获取当前DWG文档需要的字体名称