天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 47|回复: 0

ObjectARX修改cad的支持文件路径

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
在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]

 

 

 

 

ObjectARX修改cad的支持文件路径
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:32 , Processed in 0.149297 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表