Пример #1
0
        public GeometryConverter(PointConverter ptConv, PipeConverter <rg.Plane, ppg.Plane> planeConv)
        {
            //converting various types of curves
            CurveConverter = new CurveConverter(ptConv, planeConv);
            AddConverter(CurveConverter);
            MeshConverter = new MeshConverter(ptConv);
            AddConverter(MeshConverter);
            SolidConverter = new SolidConverter(MeshConverter);
            AddConverter(SolidConverter);

            /*
             * Commenting out the Revit Polyline conversion because revit does not treat polylines as geometry
             * that means it has to be added as a set of lines, and that makes change tracking and updating
             * gemetry difficult so I am not supporting polylines until I can think of a better strategy.
             */
            //converting polylines: for some reasons polyline class doesn't inherit from curves in revit
            //var polylineConv = AddConverter(new PipeConverter<rg.PolyLine, ppc.Polyline>(
            //    (rpl) =>
            //    {
            //        List<rg.XYZ> pts = rpl.GetCoordinates().ToList();
            //        return new ppc.Polyline(pts.Select((pt) => ptConv.ToPipe<rg.XYZ, ppg.Vec>(pt)).ToList());
            //    },
            //    (ppl) =>
            //    {
            //        return rg.PolyLine.Create(ppl.Points.Select((pt) => ptConv.FromPipe<rg.XYZ, ppg.Vec>(pt)).ToList());
            //    }
            //));
        }
Пример #2
0
        public SolidConverter(MeshConverter meshConv) : base(
                (rs) => {
            //return meshConv.ToPipe<rg.Mesh, ppg.Mesh>(rf.Triangulate());
            ppg.Mesh mesh = null;
            foreach (rg.Face face in rs.Faces)
            {
                var faceMesh = meshConv.ToPipe <rg.Mesh, ppg.Mesh>(face.Triangulate());
                if (mesh == null)
                {
                    mesh = faceMesh;
                }
                else
                {
                    mesh.MergeMesh(faceMesh);
                }
            }

            return(mesh);
        },
                null
                ) { }