请问在创建保存视图的时候,能不能实现保存视图中只显示选择的指定实体而过滤掉视图范围内的其他实体呢?如果能实现,可以提供下实现方法吗?
比如当前要创建保存视图,但是希望创建的保存视图中只有右边的实体
NamedView可以关联一个ClipVolume(NamedView::SetClipElement),这个ClipElement可以通过如下代码去创建,将这个ClipVolume设置一下,让不需要显示的元素位于ClipVolume不显示的区域即可。但是这种方式受限于ClipVoiume的形状是方方正正的,另外一种方式设置NamedView的显示样式(DisplayStyle),DisplayStyle可以关联DisplayRule(显示规则),DisplayRule可以根据指定的元素属性等于指定的值时隐藏不显示。
IViewClipObjectPtr clipobj = SectionClipElementHandler::CreateClipObject(); clipobj->SetPoints(2, clipperElementPoints); clipobj->SetRotationMatrix(fitRotation); clipobj->SetSize(ClipVolumeSizeProp::TopHeight, sectionTopHeight); clipobj->SetSize(ClipVolumeSizeProp::BottomHeight, -1 * sectionBottomHeight); clipobj->SetSize(ClipVolumeSizeProp::FrontDepth, sectionFrontDepth); clipobj->SetSize(ClipVolumeSizeProp::BackDepth, sectionBackDepth); clipobj->SetCrop(ClipVolumeCropProp::StartSide, true); clipobj->SetCrop(ClipVolumeCropProp::EndSide, true); clipobj->SetCrop(ClipVolumeCropProp::Front, true); clipobj->SetCrop(ClipVolumeCropProp::Back, true); clipobj->SetCrop(ClipVolumeCropProp::Bottom, true); clipobj->SetCrop(ClipVolumeCropProp::Top, true); clipobj->SetPreserveUp(true); EditElementHandle clipElement; clipobj->ToElement(clipElement, NULL, ISessionMgr::GetActiveDgnModelRefP()); clipElement.AddToModel();
郭老师您好,是这样的,我现在是想通过输入namedview create这个keyin命令去创建指定实体的保存视图,请问第二种方式怎么实现呢?
那这样的话就更简单了,您可以在dgnlib文件中创建好DisplayStyle,并设置好DisplayRule,将dgnlib放到工作空间所指定的路径下,让后在namedview create之前先设置好预先创建的DisplayStyle。
郭老师您好,我试了下您这个方法,在namedview ceate之前设置好创建的displayStyle,具体效果是在当前视图下相应的实体隐藏掉了,但是我想要的效果是在namedview create的时候可以显示所有实体,只有在创建生成的保存视图才只显示指定的实体
您在生成namedView之前先获取一下当前视图的DisplayStyle,生成以后再设置回去