//закоммитил строку в customDynProperty.h
...
//OPM_DYNPROP_OBJECT_ENTRY_AUTO(CTVSPropertyMassDyn, AcDbObject)
...
//использовал следующий код для добавления и удаления свойств
...
AcRxClass* m_pClass = AcDbEntity::desc();
void initialize()
{
if (m_bInitialized)
return;
m_bInitialized = true;
try
{
CComPtr<IPropertyManager2> pPropMan = (IPropertyManager2*)GET_OPMPROPERTY_MANAGER(m_pClass);
addProperty(pPropMan, m_position);
addProperty(pPropMan, m_name);
addProperty(pPropMan, m_type);
}
catch (const _com_error&)
{
acutPrintf(_T("\nDynProps: initialize failed!!!\n"));
return;
}
}
void uninitialize()
{
try
{
CComPtr<IPropertyManager2> pPropMan = (IPropertyManager2*)GET_OPMPROPERTY_MANAGER(m_pClass);
removeProperty(pPropMan, m_position);
removeProperty(pPropMan, m_name);
removeProperty(pPropMan, m_type);
catch (const _com_error&)
{
acutPrintf(_T("\nDynProps: uninitialize failed!!!\n"));
return;
}
}
template<typename T>
void addProperty(CComPtr<IPropertyManager2> &pPropMan, T*&prop) {
_com_util::CheckError(T::CreateInstance(&prop));
prop->AddRef();
_com_util::CheckError(pPropMan->AddProperty((IDynamicProperty2*)prop));
}
template<typename T>
void removeProperty(CComPtr<IPropertyManager2> &pPropMan, T*&prop) {
if (prop)
{
_com_util::CheckError(pPropMan->RemoveProperty((IDynamicProperty2*)prop));
prop->Release();
}
}