Example #1
0
        static void ReportGraphicMembers(SolidEdgeDraft.GraphicMembers graphicMembers)
        {
            // This is a good example of how to deal with collections that contain different types.
            foreach (var graphicMember in graphicMembers.OfType<object>())
            {
                Console.WriteLine();
                var graphicMemberType = SolidEdgeCommunity.Runtime.InteropServices.ComObject.GetType(graphicMember);

                double xKeypoint;
                double yKeypoint;
                double zKeypoint;
                SolidEdgeFramework.KeyPointType keypointType;
                int handleType;

                if (graphicMemberType.Equals(typeof(SolidEdgeDraft.DVLine2d)))
                {
                    var line2d = graphicMember as SolidEdgeDraft.DVLine2d;
                    Console.WriteLine("Processing graphic member '{0}' ({1}).", line2d.Name, graphicMemberType);
                    Console.WriteLine("Angle: {0}.", line2d.Angle);
                    Console.WriteLine("Length: {0}.", line2d.Length);

                    for (int i = 1; i <= line2d.KeyPointCount; i++)
                    {
                        line2d.GetKeyPoint(i, out xKeypoint, out yKeypoint, out zKeypoint, out keypointType, out handleType);
                        Console.WriteLine("Keypoint {0}: x={1} y={2} z={3} type={4} handle={5}", i, xKeypoint, yKeypoint, zKeypoint, keypointType, handleType);
                    }
                }
                else if (graphicMemberType.Equals(typeof(SolidEdgeDraft.DVArc2d)))
                {
                    var arc2d = graphicMember as SolidEdgeDraft.DVArc2d;
                    Console.WriteLine("Processing graphic member '{0}' ({1}).", arc2d.Name, graphicMemberType);
                    Console.WriteLine("BendRadius: {0}.", arc2d.BendRadius);
                    Console.WriteLine("Radius: {0}.", arc2d.Radius);
                    Console.WriteLine("StartAngle: {0}.", arc2d.StartAngle);
                    Console.WriteLine("SweepAngle: {0}.", arc2d.SweepAngle);

                    for (int i = 1; i <= arc2d.KeyPointCount; i++)
                    {
                        arc2d.GetKeyPoint(i, out xKeypoint, out yKeypoint, out zKeypoint, out keypointType, out handleType);
                        Console.WriteLine("Keypoint {0}: x={1} y={2} z={3} type={4} handle={5}", i, xKeypoint, yKeypoint, zKeypoint, keypointType, handleType);
                    }
                }
                else if (graphicMemberType.Equals(typeof(SolidEdgeDraft.DVCircle2d)))
                {
                    var circle2d = graphicMember as SolidEdgeDraft.DVCircle2d;
                    Console.WriteLine("Processing graphic member '{0}' ({1}).", circle2d.Name, graphicMemberType);
                    Console.WriteLine("Area: {0}.", circle2d.Area);
                    Console.WriteLine("BendAngle: {0}.", circle2d.BendAngle);
                    Console.WriteLine("BendRadius: {0}.", circle2d.BendRadius);
                    Console.WriteLine("Circumference: {0}.", circle2d.Circumference);
                    Console.WriteLine("Diameter: {0}.", circle2d.Diameter);

                    for (int i = 1; i <= circle2d.KeyPointCount; i++)
                    {
                        circle2d.GetKeyPoint(i, out xKeypoint, out yKeypoint, out zKeypoint, out keypointType, out handleType);
                        Console.WriteLine("Keypoint {0}: x={1} y={2} z={3} type={4} handle={5}", i, xKeypoint, yKeypoint, zKeypoint, keypointType, handleType);
                    }
                }
            }
        }