【MSTN CE C++】如何给参考模型添加EC属性

老师好,我现在想要在主模型里给参考模型添加EC属性,有没有什么方法,或者例子,能直接从主模型操作到参考模型的

Parents Reply
  • 如下是完整的代码,不管参考是不是当前dgn文件中的Model:

    	DgnAttachmentP dgnAtta = *ACTIVEMODEL->GetDgnAttachmentsP()->begin();
    	if (dgnAtta->GetDgnModelP()->GetDgnFileP() == ISessionMgr::GetActiveDgnFile())
    	{
    		PersistentElementRefP perEleRef = dgnAtta->GetDgnModelP()->FindElementByID(1431);
    		EditElementHandle eeh(perEleRef);
    		ElementPropertiesSetterPtr propSet = ElementPropertiesSetter::Create();
    		propSet->SetColor(3);
    		propSet->Apply(eeh);
    		eeh.ReplaceInModel(perEleRef);
    	}
    	else
    	{
    		DgnFileStatus dgnFileStatus; int defFileId = 0;
    		DgnDocumentPtr dgnDoc = DgnDocument::CreateFromFileName(dgnFileStatus, dgnAtta->GetDgnModelP()->GetDgnFileP()->GetFileName().data(),
    			NULL, defFileId, DgnDocument::FetchMode::Write);
    		DgnFilePtr dgnFilePtr = DgnFile::Create(*dgnDoc, DgnFileOpenMode::ReadWrite);
    		if (dgnFilePtr.IsNull())
    			return;
    		StatusInt openForWriteStatus;
    		dgnFilePtr->LoadDgnFile(&openForWriteStatus);
    		if (SUCCESS != openForWriteStatus)
    			return;
    		StatusInt status = dgnFilePtr->FillDictionaryModel();
    		if (SUCCESS != status)
    		{
    			return;
    		}
    		ModelId mdoelId = dgnAtta->GetDgnModelP()->GetModelId();
    		DgnModelPtr dgnModelPtr = dgnFilePtr->LoadModelById(mdoelId);
    		dgnFilePtr->FillSectionsInModel(&*dgnModelPtr);
    
    		EditElementHandle eeh(1431, &*dgnModelPtr);
    		ElementRefP perEleRef = eeh.GetElementRef();
    		ElementPropertiesSetterPtr propSet = ElementPropertiesSetter::Create();
    		propSet->SetColor(3);
    		propSet->Apply(eeh);
    		eeh.ReplaceInModel(perEleRef);
    		dgnFilePtr->ProcessChanges(DgnSaveReason::FileClose);
    	}

    Answer Verified By: 帅 樊 

Children