#pragma once #include #include "dbobjectoverrule.h" #include "dbentityoverrule.h" class CEntityOverrule : public AcDbObjectOverrule { public: CEntityOverrule(const std::set &ids); ~CEntityOverrule(); ACRX_DECLARE_MEMBERS(CEntityOverrule); virtual ACDB_PORT Acad::ErrorStatus erase( AcDbObject* pSubject, Adesk::Boolean erasing ); bool isApplicable(const AcRxObject* pOverruledSubject) const { return true; } void getOverruleIds(std::set &ids) { ids = m_ids; } static void addOverrule(const std::set &ids); static void delOverrule(); static void getBindIds(std::set &ids); public: static CEntityOverrule *g_EntityOverrule; private: std::set m_ids; // 不可以被删除的ID AcDbDatabase *m_pOwnerDb; // 绑定的数据库指针 }; namespace LayerTools { const CString g_sLayerName = _T("_dtyg_modify_layer_"); bool createNewLayer(LPCTSTR layer); void deleteLayer(LPCTSTR layer); void getAllLayers(std::set &layers); void lockLayers(const std::set &layers, const bool &bLock); bool setCLayer(LPCTSTR psz); }