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); }
//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); }
public DBPoint PointToNativeDB(Point point) { return(new DBPoint(PointToNative(point))); }