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

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

Parents Reply Children
  • 如下是完整的代码,不管参考是不是当前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: 帅 樊 

  • 感谢老师,我测试了一下,是可以的,我再改改弄到我的改属性的代码里

  • 郭老师,我改了我的代码,也支持修改属性了,此方法可行,感谢!Raised hand

  • 郭老师,碰到个bug,用上面你发给我的代码没弄成功,我把测试文件发你,你可以试试。
    状况:运行完代码后,元素颜色改为红色,但是用鼠标在其他地方点一下,该元素又恢复为之前的状态,好像并没有把状态保留下来这个bug只针对非参考模型的元素,参考模型的元素效果还是好的
    1207.test.dgn

  • 这是OBD中创建的元素,OBD中创建的元素,有些被添加了约束限制,不能在其他软件中修改。