static void AddLineType(CString lineTypeName) { // 加载线型(两种方法) Acad::ErrorStatus es; //es = acdbHostApplicationServices()->workingDatabase()->loadLineTypeFile(_T("CENTER"), _T("acadiso.lin")); es = acdbLoadLineTypeFile(lineTypeName, _T("acadiso.lin"),acdbHostApplicationServices()->workingDatabase()); // 创建新的AcDbMlineStyle对象 AcDbMlineStyle *pMlStyle = new AcDbMlineStyle; pMlStyle->initMlineStyle(); pMlStyle->setName(_T("NewStyle")); int index; // 多线样式中的元素索引 //AcCmColor color; // 颜色 AcDbObjectId linetypeId; // 线型的ID // 添加第一个元素(红色的中心线) //color.setColorIndex(1); // 红色 GetLinetypeId(lineTypeName, linetypeId); //pMlStyle->addElement(index, 0, color, linetypeId); //// 添加第二个元素(蓝色的虚线) //color.setColorIndex(5); // 蓝色 //GetLinetypeId("HIDDEN", linetypeId); //pMlStyle->addElement(index, 0.5, color, linetypeId); //// 添加第三个元素(蓝色的虚线) //pMlStyle->addElement(index, -0.5, color, linetypeId); //// 将多线样式添加到多线样式字典中 AcDbDictionary *pDict; acdbHostApplicationServices()->workingDatabase()->getMLStyleDictionary(pDict, AcDb::kForWrite); AcDbObjectId mlStyleId; es = pDict->setAt(_T("NewStyle"), pMlStyle, mlStyleId); pDict->close(); pMlStyle->close(); }
Acad::ErrorStatus ArxDbgUtils::mlineStyleIdToName(const AcDbObjectId& mlineStyleId, CString& name) { // get symbol name from symbol table record AcDbMlineStyle* mlineStyle; Acad::ErrorStatus es; es = acdbOpenObject(mlineStyle, mlineStyleId, AcDb::kForRead); if (es == Acad::eOk) { name = mlineStyle->name(); mlineStyle->close(); } else { ArxDbgUtils::rxErrorMsg(es); es = Acad::eInvalidInput; } return es; }