[MSCE C#]利用ElementGraphicsProcessor面片化Element时,对部分类型的Element解析有误

ElementGraphicsProcessor的实现如下,参考C++的样例做的。

public class MeshProcessor : ElementGraphicsProcessor
    {
        private List<PolyfaceHeader> _meshData = new List<PolyfaceHeader>();
        private List<Color> _colorData = new List<Color>();
        private FacetOptions _options;
        private DTransform3d _transform = DTransform3d.Identity;

        public MeshProcessor(FacetOptions options)
        {
            _options = options;
        }

        public bool Success = false;
        public DTransform3d Transform
        {
            //get { return  _transform; }
            get { return DTransform3d.Identity; }
        }

        public List<PolyfaceHeader> MeshData
        {
            get { return _meshData; }
        }

        public List<Color> ColorData
        {
            get { return _colorData; }
        }

        public override BentleyStatus ProcessFacets(PolyfaceHeader meshData, bool filled)
        {
            var mesh = new PolyfaceHeader();
            mesh.CopyFrom(meshData);
            mesh.Transform(ref _transform, false);
            _meshData.Add(mesh);
            Success = true;
            return BentleyStatus.Success;
        }

        public override void AnnounceElementDisplayParameters(ElementDisplayParameters displayParams)
        {
            ColorData.Add(Color.FromArgb((int)displayParams.LineColorTBGR));
        }

        public override FacetOptions GetFacetOptions()
        {
            return _options;
        }

        public override bool ProcessAsFacets(bool isPolyface)
        {
            return true;
        }

        public override bool ProcessAsBody(bool isCurved)
        {
            return false;
        }

        public override void AnnounceTransform(DTransform3d trans)
        {
            if (trans != null) {
                _transform = trans;
            } else {
                _transform = DTransform3d.Identity;
            }
        }
    }

对于大部分Element都还不错,但是对CellHeaderElement,SharedCellElement以及ExtendedElementElement的几何面片化会出问题。如下图:

原模型(SharedCellElement):SharedCellElement.dgn

转换前:  转换后:

原模型(ExtendedElementElement):ExtendedElementElement.dgn

转换前: 转换后:

还望帮忙用C#或C++测试一下是我的代码问题还是别的什么问题,谢谢!

Parents Reply Children