CAD工具之家's Archivers

From boitboy on 2014-11-25 11:43:57

实例代码:AcDbDatabase符号表的当前值

执行结果   当前图层名称:0 当前线型名称:ByLayer 当前线宽名称:kLnWtByLayer 当前文字样式名称:Standard 当前标注样式名称:ISO-25 当前表格样式名称:Standard 当前多线样式名称:STANDARD   源代码: //----------------------------------------------------------------------------- //----- acrxEntryPoint.h //----------------------------------------------------------------------------- #include "StdAfx.h" #include "resource.h" #include "dbtable.h" //----------------------------------------------------------------------------- #define szRDS _RXST("") //获取符号表记录的名称 Acad::ErrorStatus GetSymbolName(CString& strName,const AcDbObjectId id) { AcDbSymbolTableRecordPointer<AcDbSymbolTableRecord> spRec(id,AcDb::kForRead); if(Acad::eOk!=spRec.openStatus()) { return spRec.openStatus(); } const TCHAR* lpName=NULL; Acad::ErrorStatus es=spRec->getName(lpName); if(Acad::eOk!=es) { return es; } strName=CString(lpName); return Acad::eOk; } Acad::ErrorStatus GetTableStyleName(CString& strName,const AcDbObjectId id) { AcDbObjectPointer<AcDbTableStyle> spRec(id,AcDb::kForRead); if(Acad::eOk!=spRec.openStatus()) { return spRec.openStatus(); } TCHAR* lpName=NULL; Acad::ErrorStatus es=spRec->getName(lpName); if(Acad::eOk!=es) { return es; } strName=CString(lpName); acutDelString(lpName); return Acad::eOk; } Acad::ErrorStatus GetMlineStyleName(CString& strName,const AcDbObjectId id) { AcDbObjectPointer<AcDbMlineStyle> spRec(id,AcDb::kForRead); if(Acad::eOk!=spRec.openStatus()) { return spRec.openStatus(); } strName=CString(spRec->name()); return Acad::eOk; }   CString GetLineWeightName(const AcDb::LineWeight lt) { switch(lt) { case AcDb::kLnWt000: return _T("kLnWt000"); case AcDb::kLnWt005: return _T("kLnWt005"); case AcDb::kLnWt009: return _T("kLnWt009"); case AcDb::kLnWt013: return _T("kLnWt013"); case AcDb::kLnWt015: return _T("kLnWt015"); case AcDb::kLnWt018: return _T("kLnWt018"); case AcDb::kLnWt020: return _T("kLnWt020"); case AcDb::kLnWt025: return _T("kLnWt025"); case AcDb::kLnWt030: return _T("kLnWt030"); case AcDb::kLnWt035: return _T("kLnWt035"); case AcDb::kLnWt040: return _T("kLnWt040"); case AcDb::kLnWt050: return _T("kLnWt050"); case AcDb::kLnWt053: return _T("kLnWt053"); case AcDb::kLnWt060: return _T("kLnWt060"); case AcDb::kLnWt070: return _T("kLnWt070"); case AcDb::kLnWt080: return _T("kLnWt080"); case AcDb::kLnWt090: return _T("kLnWt090"); case AcDb::kLnWt100: return _T("kLnWt100"); case AcDb::kLnWt106: return _T("kLnWt106"); case AcDb::kLnWt120: return _T("kLnWt120"); case AcDb::kLnWt140: return _T("kLnWt140"); case AcDb::kLnWt158: return _T("kLnWt158"); case AcDb::kLnWt200: return _T("kLnWt200"); case AcDb::kLnWt211: return _T("kLnWt211"); case AcDb::kLnWtByLayer: return _T("kLnWtByLayer"); case AcDb::kLnWtByBlock: return _T("kLnWtByBlock"); case AcDb::kLnWtByLwDefault: return _T("kLnWtByLwDefault"); default: return _T("未知"); } } void Test() { //当前数据库 AcDbDatabase* pDb=acdbHostApplicationServices()->workingDatabase(); if(pDb==NULL) { acutPrintf(_T("\n当前数据库为空\n")); return; } CString strName; Acad::ErrorStatus es=Acad::eOk; //图层名称 es=GetSymbolName(strName,pDb->clayer()); if(Acad::eOk!=es) { acutPrintf(_T("\n获取当前图层名称出错:%s\n"),acadErrorStatusText(es)); } else { acutPrintf(_T("\n当前图层名称:%s\n"),strName); } //线型 es=GetSymbolName(strName,pDb->celtype()); if(Acad::eOk!=es) { acutPrintf(_T("\n获取当前线型名称出错:%s\n"),acadErrorStatusText(es)); } else { acutPrintf(_T("\n当前线型名称:%s\n"),strName); } //线宽 AcDb::LineWeight lt=pDb->celweight(); acutPrintf(_T("\n当前线宽名称:%s\n"),GetLineWeightName(lt)); //文字样式 es=GetSymbolName(strName,pDb->textstyle()); if(Acad::eOk!=es) { acutPrintf(_T("\n获取当前文字样式名称出错:%s\n"),acadErrorStatusText(es)); } else { acutPrintf(_T("\n当前文字样式名称:%s\n"),strName); } //标注样式 es=GetSymbolName(strName,pDb->dimstyle()); if(Acad::eOk!=es) { acutPrintf(_T("\n获取当前标注样式名称出错:%s\n"),acadErrorStatusText(es)); } else { acutPrintf(_T("\n当前标注样式名称:%s\n"),strName); } //表格样式 es=GetTableStyleName(strName,pDb->tablestyle()); if(Acad::eOk!=es) { acutPrintf(_T("\n获取当前表格样式名称出错:%s\n"),acadErrorStatusText(es)); } else { acutPrintf(_T("\n当前表格样式名称:%s\n"),strName); } //多线样式 es=GetMlineStyleName(strName,pDb->cmlstyleID()); if(Acad::eOk!=es) { acutPrintf(_T("\n获取当前多线样式名称出错:%s\n"),acadErrorStatusText(es)); } else { acutPrintf(_T("\n当前多线样式名称:%s\n"),strName); } } //----------------------------------------------------------------------------- //----- ObjectARX EntryPoint class CExample002App : public AcRxArxApp {   public: CExample002App () : AcRxArxApp () {}   virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) { // TODO: Load dependencies here   // You *must* call On_kInitAppMsg here AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;   //增加命令Test acedRegCmds->addCommand(_T("Example002App"),_T("Test"),_T("Test"),0,Test);   // TODO: Add your initialization code here   return (retCode) ; }   virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) { // TODO: Add your code here   // You *must* call On_kUnloadAppMsg here AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;   // TODO: Unload dependencies here //删除命令组 acedRegCmds->removeGroup(_T("Example002App"));   return (retCode) ; }   virtual void RegisterServerComponents () { }   } ;   //----------------------------------------------------------------------------- IMPLEMENT_ARX_ENTRYPOINT(CExample002App)

查看完整版本: 实例代码:AcDbDatabase符号表的当前值

Tags: ObjectArx, 当前, 符号表


©CAD工具之家
创办于:2013年5月24日