GeometricModel geometricModel = ConEdit.GetActiveGeometricModel(); Alignment align = geometricModel.CreateAlignmentByLinearElement(linearComplex, true); align.SetAlignmentFeatureDefinitionByORDVersion(featureDefinitionName, featureName);//设置特征定义 Profile profile = align.CreateProfileByProfileElement(profileComplex,true,true); profile?.SetProfileFeatureDefinitionByORDVersion(featureDefinitionName,featureName);//设置特征定义及其名称 ConEdit?.PersistTransients();//结束编辑模式
采用上述代码创建的平面和纵断Alignment元素,如何继续设置图层?在代码中调试模式下,可以看到Alignment的Element属性是异常的,尝试采用Element进行接收并采用try catch进行容错发现无法生效,会导致Bentley直接抛出异常。
所以具体应该如何操作,在设置完特征定义后,还能够修改元素的一些其他诸如透明度、图层等特性?
补充Element的异常提示
ORD中有一整套基本的工作原则:图层、颜色等基本属性应该设置为一种元素模板(ElementTemplate),而每种特征(Feature)则应该包含一个元素模板。所以,只要给对象附以合适的Feature后,这些基本属性就都应该具有了,而不需要再单独去设置。
这是我对ORD的理解,有不对之处请指出,因为我不是专门负责ORD技术支持的。
您说的我知道~我是首先通过设置Feature来设置路线的特性,然后我还想在此基础上更改路线的图层,以区分出是代码创建的。但我还是不想因为图层而新增一个Feature了。
不要用align.Element而改成align.DgnECInstance.Element试一下呢?
尝试了一下,不可以,ReplaceToModel以后会导致创建的平面线变成2个,其中一个没有了特征定义,但是是新改的图层名,另一个还是原来的带有特征定义,图层也是由特征定义定义的。