// featurelines
        public Polycurve FeatureLineToSpeckle(CivilDB.FeatureLine featureLine)
        {
            var polycurve = new Polycurve()
            {
                closed = featureLine.Closed
            };

            // extract segment curves
            var segments = new List <ICurve>();
            var exploded = new DBObjectCollection();

            featureLine.Explode(exploded);
            for (int i = 0; i < exploded.Count; i++)
            {
                segments.Add((ICurve)ConvertToSpeckle(exploded[i]));
            }
            polycurve.segments = segments;

            // TODO: additional params to attach
            try{
                var points    = featureLine.GetPoints(Autodesk.Civil.FeatureLinePointType.AllPoints);
                var grade     = new Interval(featureLine.MinGrade, featureLine.MaxGrade);
                var elevation = new Interval(featureLine.MinElevation, featureLine.MaxElevation);
                var name      = featureLine.DisplayName;
            }
            catch {}

            return(polycurve);
        }
        // Box
        public Box BoxToSpeckle(BoundBlock3d bound, bool OrientToWorldXY = false)
        {
            try
            {
                Box box = null;

                var min = bound.GetMinimumPoint();
                var max = bound.GetMaximumPoint();

                // get dimension intervals
                var xSize = new Interval(min.X, max.X);
                var ySize = new Interval(min.Y, max.Y);
                var zSize = new Interval(min.Z, max.Z);

                // get box size info
                double area   = 2 * ((xSize.Length * ySize.Length) + (xSize.Length * zSize.Length) + (ySize.Length * zSize.Length));
                double volume = xSize.Length * ySize.Length * zSize.Length;

                if (OrientToWorldXY)
                {
                    var origin = new Point3d(0, 0, 0);
                    var normal = new Vector3d(0, 0, 1);
                    var plane  = PlaneToSpeckle(new Autodesk.AutoCAD.Geometry.Plane(origin, normal));
                    box = new Box(plane, xSize, ySize, zSize, ModelUnits)
                    {
                        area = area, volume = volume
                    };
                }
                else
                {
                    // get base plane
                    var corner = new Point3d(max.X, max.Y, min.Z);
                    var origin = new Point3d((corner.X + min.X) / 2, (corner.Y + min.Y) / 2, (corner.Z + min.Z) / 2);
                    var plane  = PlaneToSpeckle(new Autodesk.AutoCAD.Geometry.Plane(min, origin, corner));
                    box = new Box(plane, xSize, ySize, zSize, ModelUnits)
                    {
                        area = area, volume = volume
                    };
                }

                return(box);
            }
            catch
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        // Boxes
        public Box BoxToSpeckle(AcadDB.Extents3d extents, bool OrientToWorldXY = false)
        {
            try
            {
                Box box = null;

                // get dimension intervals
                var xSize = new Interval(extents.MinPoint.X, extents.MaxPoint.X);
                var ySize = new Interval(extents.MinPoint.Y, extents.MaxPoint.Y);
                var zSize = new Interval(extents.MinPoint.Z, extents.MaxPoint.Z);

                // get box size info
                double area   = 2 * ((xSize.Length * ySize.Length) + (xSize.Length * zSize.Length) + (ySize.Length * zSize.Length));
                double volume = xSize.Length * ySize.Length * zSize.Length;

                if (OrientToWorldXY)
                {
                    var origin = new Point3d(0, 0, 0);
                    var normal = new Vector3d(0, 0, 1);
                    var plane  = PlaneToSpeckle(new Autodesk.AutoCAD.Geometry.Plane(origin, normal));
                    box = new Box(plane, xSize, ySize, zSize, ModelUnits)
                    {
                        area = area, volume = volume
                    };
                }
                else
                {
                    // get base plane
                    var corner = new Point3d(extents.MaxPoint.X, extents.MaxPoint.Y, extents.MinPoint.Z);
                    var origin = new Point3d((corner.X + extents.MinPoint.X) / 2, (corner.Y + extents.MinPoint.Y) / 2, (corner.Z + extents.MinPoint.Z) / 2);
                    var plane  = PlaneToSpeckle(new Autodesk.AutoCAD.Geometry.Plane(extents.MinPoint, origin, corner));
                    box = new Box(plane, xSize, ySize, zSize, ModelUnits)
                    {
                        area = area, volume = volume
                    };
                }

                return(box);
            }
            catch
            {
                return(null);
            }
        }
 public AC.Interval IntervalToNative(Interval interval)
 {
     return(new AC.Interval((double)interval.start, (double)interval.end, tolerance));
 }