Esempio n. 1
0
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;
}