在CAD特性面板(OPM)中以中文显示自定义实体属性
前段时间学习了如何在CAD特性面板(OPM)中显示自定义实体属性,在完成上述功能后,发现原来以中文显示的属性名全部变成了英文,要将显示的属性名改成中文,必须重载IOPMPropertyExtension::GetDisplayName函数。但使用该函数必须要知道CAD内置属性名的DISPID,搜遍整个SDK和全球网页也没找到对应属性的DISPID,最后在一个不知道是哪国的论坛中有一段似乎是改变显示属性字名的代码,报着试试看的想法将其中的DISPID值带入自己的代码中,居然成功了!现发给大家分享。以下是上述论坛的链接: //定义自定义实体属性的DISPID#define DISPID_MyProperty1 0x01//自定义属性1#define DISPID_MyProperty2 0x02//自定义属性2 //在.h文件中声明GetDisplayName函数STDMETHOD(GetDisplayName)(/* */ DISPID dispID, /* */ BSTR* pbstr); //在.cpp文件中添加如下代码STDMETHODIMP CMyProperty::GetDisplayName(DISPID dispID, BSTR* pbstr){ switch (dispID) { case (0x401): *pbstr= ::SysAllocString(_T("自定义实体名称")); break; case (0x516): *pbstr= ::SysAllocString(_T("颜色")); break; case (0x501): *pbstr= ::SysAllocString(_T("图层")); break; case (0x502): *pbstr= ::SysAllocString(_T("线型")); break; case (0x503): *pbstr= ::SysAllocString(_T("线型比例")); break; case (0x513): *pbstr= ::SysAllocString(_T("打印样式")); break; case (0x514): *pbstr= ::SysAllocString(_T("线宽")); break; case (0x515): *pbstr= ::SysAllocString(_T("超链接")); break; case (0x577): *pbstr= ::SysAllocString(_T("材质")); break; case (0x01): *pbstr = ::SysAllocString(_T("自定义属性1")); break; case (0x02): *pbstr = ::SysAllocString(_T("自定义属性2")); break; default:return AcOpmGetDisplayName(reinterpret_cast(this), GetResourceInstance(), GetOPMPropertyMap(), dispID, pbstr);//默认返回CAD字符串 } return S_OK;}**** Hidden Message ***** ................... 多谢楼主分享 很好,正需要这个程序呢,谢谢 能发一个opm的简单程序给我啊,在帮助里面看的有点困难,谢谢735023723@qq.com 看一下,以后再理解 可以发个简单的这种程序代码给我啊?想做这个呢,可惜没办法 留爪,以后慢慢来看 能传授一下这方面的经验吗
页:
[1]