|
在cad插件的开发过程中,有时候需要用到一些文件,比如dll和资源文件(字体,图片等),由于它们不能像插件直接添加到cad中,也不好将它们放在cad的安装路径下,这时候就需要用到cad的支持文件路径,手动添加一般是比较稳妥的方式,还有就是通过代码修改。
通过代码修改一般有两种方法:
如果是需求在不打开cad的条件下就可以修改,那只能使用修改注册表的方式。一般来说在路径
[code]HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.1\ACAD-6001:804\Profiles\<<未命名配置>>\General\ACAD
//其值为字符型REG_SZ,下面是2008版本的自带支持路径:
//C:\Documents and Settings\Administrator\Application Data\Autodesk\AutoCAD 2008\R17.1\chs\support;
//C:\Program Files\AutoCAD 2008\support;
//C:\Program Files\AutoCAD 2008\fonts;
//C:\Program Files\AutoCAD 2008\help;
//C:\Program Files\AutoCAD 2008\Express;
//C:\Program Files\AutoCAD 2008\support\color;
[/code]
另一种情况就是用COM来实现
[code]//根据项目加载的cad二次开发包的版本来import相应文件
#import "acax19ENU.tlb" no_implementation raw_interfaces_only named_guids
BOOL AddSupportPath(CStringArray &arPath)
{
AutoCAD::IAcadPreferences *pPrefer = NULL;
AutoCAD::IAcadPreferencesFiles *pPreferFiles = NULL;
HRESULT hr = NOERROR;
TRY
{
LPDISPATCH pAcadDisp =acedGetAcadWinApp()->GetIDispatch(TRUE);
AutoCAD::IAcadApplication *pAcad = NULL;
if (SUCCEEDED(pAcadDisp->QueryInterface(AutoCAD::IID_IAcadApplication,(void**)&pAcad)))
{
BSTR supportPath;
hr = pAcad->get_Preferences(&pPrefer);
hr = pPrefer->get_Files(&pPreferFiles);
hr = pPreferFiles->get_SupportPath(&supportPath);
CString stemp = supportPath;
for (int i = 0; i< arPath.GetSize() ; i++)
{
CString ss = arPath.GetAt(i);
stemp = stemp + ";" + ss;
}
supportPath = stemp.AllocSysString();//将CString 形转换成bstr
pPreferFiles->put_SupportPath(supportPath);
SysFreeString(supportPath); // 用完释放
}
pPrefer->Release();
pPreferFiles->Release();
pAcad->Release();
}
CATCH(COleDispatchException,e)
{
e->ReportError();
e->Delete();
return FALSE;
}
END_CATCH;
return TRUE;
}
[/code] |
|