Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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]);
        }
Example #6
0
        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)));
            }
        }
Example #7
0
        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;
        }
Example #8
0
        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);
        }