public Point3d PointToNative(Point point)
        {
            var _point = new Point3d(ScaleToNative(point.x, point.units),
                                     ScaleToNative(point.y, point.units),
                                     ScaleToNative(point.z, point.units));

            return(_point);
        }
Ejemplo n.º 2
0
        //TODO: revise and improve
        private object LocationToNative(Base elem)
        {
            //no transforms are applied on points

            if (elem["basePoint"] as Point != null)
            {
                return(PointToNative(elem["basePoint"] as Point));
            }

            if (elem["baseLine"] == null)
            {
                throw new Speckle.Core.Logging.SpeckleException("Location is null.");
            }

            //must be a curve!?
            var converted = GeometryToNative(elem["baseLine"] as Base);
            var curve     = (converted as CurveArray).get_Item(0);
            //reapply revit's offset
            var offset = elem["baseOffset"] as double?;

            if (elem is Column)
            {
                //revit vertical columns can only be POINT based
                if (!(bool)elem["isSlanted"] || IsVertical(curve))
                {
                    var baseLine = elem["baseLine"] as Line;
                    var point    = new Point(baseLine.start.x, baseLine.start.y, baseLine.start.z - (double)offset, ModelUnits);

                    return(PointToNative(point));
                }
            }
            //undo offset transform
            else if (elem is Wall w)
            {
                var       revitOffset = ScaleToNative((double)offset, ((Base)w.baseLine).units);
                XYZ       vector      = new XYZ(0, 0, -revitOffset);
                Transform tf          = Transform.CreateTranslation(vector);
                curve = curve.CreateTransformed(tf);
            }

            return(curve);
        }
Ejemplo n.º 3
0
 public DBPoint PointToNativeDB(Point point)
 {
     return(new DBPoint(PointToNative(point)));
 }