internal Geometry RestoreProperType(Geometry g) { Point p = Point.cast(g); if (p != null) { return(p); } Surface surf = Surface.cast(g); if (surf != null) { return(surf); } Curve c = Curve.cast(g); if (c != null) { return(c); } Solid solid = Solid.cast(g); if (solid != null) { return(solid); } return(g); }
public override Value Evaluate(FSharpList <Value> args) { Geometry base_geometry = (Geometry)((Value.Container)args[0]).Item; Geometry tool_geometry = (Geometry)((Value.Container)args[1]).Item; Point pick_point = (Point)((Value.Container)args[2]).Item; Surface base_surface = base_geometry as Surface; Solid base_solid = base_geometry as Solid; Geometry result = null; if (base_surface != null) { result = base_surface.trim(tool_geometry, pick_point); } if (base_solid != null) { result = base_solid.trim(tool_geometry, pick_point); } // TODO: implement curve. Trim has odd interface _result = RestoreProperType(result); GraphicItem.persist(_result); _graphicItems.Add(_result); return(Value.NewContainer(_result)); }
internal DSObject RestoreProperDSType(DSObject d) { Geometry g = Geometry.cast(d); if (g != null) { return(RestoreProperType(g)); } Vector v = Vector.cast(d); if (v != null) { return(v); } CoordinateSystem cs = CoordinateSystem.cast(d); if (cs != null) { return(cs); } return(d); }
/// <summary> /// A utility function to obtain the Geometry from a Value /// </summary> /// <param name="value">A Value object that returns Container</param> /// <param name="convertedValue">The holder for the obtained value</param> /// <returns>False if the first param returns false for IsContainer</returns> public static bool Convert(FScheme.Value value, ref Autodesk.LibG.Geometry convertedValue) { convertedValue = null; if (!value.IsContainer) { return(false); } object itemValue = (value as Value.Container).Item; convertedValue = itemValue as Autodesk.LibG.Geometry; return(convertedValue != null); }
public override Value Evaluate(FSharpList <Value> args) { GeometryList geometry = new GeometryList(); String file_name = ((Value.String)args[0]).Item; var input = (args[1] as Value.List).Item; foreach (Value v in input) { Geometry g = ((Value.Container)v).Item as Geometry; geometry.Add(g); } ASMExporter.export_geometry(file_name, geometry); return(args[1]); }
public override Value Evaluate(FSharpList <Value> args) { Geometry geom1 = (Geometry)((Value.Container)args[0]).Item; Geometry geom2 = (Geometry)((Value.Container)args[1]).Item; GeometryList result = geom1.intersect(geom2); foreach (Geometry g in _result) { GraphicItem.unpersist(g); } _result.Clear(); foreach (Geometry g in result) { Geometry restored = RestoreProperType(g); GraphicItem.persist(restored); _result.Add(restored); _graphicItems.Add(restored); } if (_result.Count == 1) { return(Value.NewContainer(_result[0])); } else { List <Value> return_values = new List <Value>(); foreach (Geometry g in _result) { return_values.Add(Value.NewContainer(g)); } return(Value.NewList(Utils.SequenceToFSharpList(return_values))); } }
internal Geometry RestoreProperType(Geometry g) { Point p = Point.cast(g); if (p != null) return p; Surface surf = Surface.cast(g); if (surf != null) return surf; Curve c = Curve.cast(g); if (c != null) return c; Solid solid = Solid.cast(g); if (solid != null) return solid; return g; }
public override Value Evaluate(FSharpList<Value> args) { Geometry base_geometry = (Geometry)((Value.Container)args[0]).Item; Geometry tool_geometry = (Geometry)((Value.Container)args[1]).Item; Point pick_point = (Point)((Value.Container)args[2]).Item; Surface base_surface = base_geometry as Surface; Solid base_solid = base_geometry as Solid; Geometry result = null; if (base_surface != null) result = base_surface.trim(tool_geometry, pick_point); if (base_solid != null) result = base_solid.trim(tool_geometry, pick_point); // TODO: implement curve. Trim has odd interface _result = RestoreProperType(result); GraphicItem.persist(_result); return Value.NewContainer(_result); }