Through the program to create a square tube???

Valued Contributor
Valued Contributor

 

Hi all!

I need to through the program to create a square tube, Code is as follows:

            SolidEdgeFramework.Application application = null;

            SolidEdgeFramework.Documents documents = null;

            SolidEdgePart.PartDocument part = null;

            SolidEdgePart.ProfileSets profileSets = null;

            SolidEdgePart.ProfileSet profileSet = null;

            SolidEdgePart.Profiles profiles = null;

            SolidEdgePart.Profile profile = null;

            SolidEdgePart.RefPlanes refplanes = null;

            SolidEdgeFrameworkSupport.Relations2d relations2d = null;

            SolidEdgeFrameworkSupport.Relation2d relation2d = null;

            SolidEdgeFrameworkSupport.Lines2d lines2d = null;

            SolidEdgeFrameworkSupport.Line2d line2d = null;

            SolidEdgeFrameworkSupport.Circle2d circle2d = null;

            SolidEdgeFrameworkSupport.Arcs2d arcs = null;

            SolidEdgeFrameworkSupport.Arc2d arc = null;

            SolidEdgePart.Models models = null;

            SolidEdgePart.Model model = null;

            System.Array aProfiles = null;

            try

            {

                // Connect to a running instance of Solid Edge

                application = (SolidEdgeFramework.Application)Marshal.GetActiveObject("SolidEdge.Application");

                // Get a reference to the documents collection

                documents = application.Documents;

                // Create a new part document

                part = (SolidEdgePart.PartDocument)documents.Add("SolidEdge.PartDocument", Missing.Value);

                // Get a reference to the profile sets collection

                profileSets = part.ProfileSets;

                // Add a new profile set

                profileSet = profileSets.Add();

                // Get a reference to the profiles collection

                profiles = profileSet.Profiles;

                // Get a reference to the ref planes collection

                refplanes = part.RefPlanes;

                // Add a new profile

                profile = profiles.Add(refplanes.Item(3));

                // Get a reference to the lines2d collection

                lines2d = profile.Lines2d;

                arcs = profile.Arcs2d;

                // Draw the outer Profile

                lines2d.AddBy2Points(0, 0, 0.08, 0);

                lines2d.AddBy2Points(0.08, 0, 0.08, 0.08);

                lines2d.AddBy2Points(0.08, 0.08, 0, 0.08);

                lines2d.AddBy2Points(0, 0.08, 0, 0);

               // Draw the inner Profile

                lines2d.AddBy2Points(0.02, 0.02, 0.06, 0.02);

                lines2d.AddBy2Points(0.06, 0.02, 0.06, 0.06);

                lines2d.AddBy2Points(0.06, 0.06, 0.02, 0.06);

                lines2d.AddBy2Points(0.02, 0.06, 0.02, 0.02);

 

                 // Define Relations among the Line objects to make the Profile closed

                relations2d = (SolidEdgeFrameworkSupport.Relations2d)profile.Relations2d;

                relation2d = relations2d.AddKeypoint(lines2d.Item(1), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(2), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(2), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(3), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(3), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(4), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(4), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(1), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(5), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(6), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(6), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(7), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(7), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(8), (int)KeypointIndexConstants.igLineStart, true);

                relation2d = relations2d.AddKeypoint(lines2d.Item(8), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(5), (int)KeypointIndexConstants.igLineStart, true);

                //relation2d = relations2d.AddKeypoint(lines2d.Item(10), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(11), (int)KeypointIndexConstants.igLineStart, true);

                //relation2d = relations2d.AddKeypoint(lines2d.Item(11), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(12), (int)KeypointIndexConstants.igLineStart, true);

                //relation2d = relations2d.AddKeypoint(lines2d.Item(12), (int)KeypointIndexConstants.igLineEnd, lines2d.Item(1), (int)KeypointIndexConstants.igLineStart, true);

                arcs.AddAsFillet(lines2d.Item(1), lines2d.Item(2), 0.01, -1, 1);

                arcs.AddAsFillet(lines2d.Item(2), lines2d.Item(3), 0.01, -1, -1);

                arcs.AddAsFillet(lines2d.Item(3), lines2d.Item(4), 0.01, 1, -1);

                arcs.AddAsFillet(lines2d.Item(4), lines2d.Item(1), 0.01, 1, 1);

                arcs.AddAsFillet(lines2d.Item(5), lines2d.Item(6), 0.01, -1, 1);

                arcs.AddAsFillet(lines2d.Item(6), lines2d.Item(7), 0.01, -1, -1);

                arcs.AddAsFillet(lines2d.Item(7), lines2d.Item(8), 0.01, 1, -1);

                arcs.AddAsFillet(lines2d.Item(8), lines2d.Item(5), 0.01, 1, 1);

 

                // Close the profile

                profile.End(SolidEdgePart.ProfileValidationType.igProfileClosed);

                // Hide the profile

                profile.Visible = false;

                // Create a new array of profile objects

                aProfiles = Array.CreateInstance(typeof(SolidEdgePart.Profile), 1);

                aProfiles.SetValue(profile, 0);

                // Get a reference to the models collection

                models = part.Models;

                // Create the extended protrusion.

                model = models.AddFiniteExtrudedProtrusion(aProfiles.Length, ref aProfiles, SolidEdgePart.FeaturePropertyConstants.igRight, 0.05, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

After the program runs, the resulting error message is as follows:

Internal error:Unable to computer topology information for the sketched profile.

Please help![script removed]

 

Posted by: fat kids
Post date: 2/3/2010 6:37:47 PM