| Author |
Messages |
|
fatkids
 Site Member Posts:36
 |
| 02/04/2010 12:37 AM |
|
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] |
|
|
|
|
fatkids
 Site Member Posts:36
 |
| 03/10/2010 2:58 AM |
|
I do it! SolidEdgePart.Profile profile = null; SolidEdgeFrameworkSupport.Line2d[] line2d = new SolidEdgeFrameworkSupport.Line2dΒ] //SolidEdgePart.Profile[] profile_arr = new SolidEdgePart.ProfileΎ] SolidEdgeFramework.Application application = null; SolidEdgeFramework.Documents documents = null; SolidEdgePart.PartDocument part = null; System.Array aProfiles = null; try { application = (SolidEdgeFramework.Application)Marshal.GetActiveObject("SolidEdge.Application"); documents = application.Documents; // Create a new part document part = (SolidEdgePart.PartDocument)documents.Add("SolidEdge.PartDocument", Missing.Value); profile = part.ProfileSets.Add().Profiles.Add(part.RefPlanes.Item(3)); line2dΎ] = profile.Lines2d.AddBy2Points(0, 0, 0.08, 0); line2dΏ] = profile.Lines2d.AddBy2Points(0.08, 0, 0.08, 0.08); line2dΐ] = profile.Lines2d.AddBy2Points(0.08, 0.08, 0, 0.08); line2dΑ] = profile.Lines2d.AddBy2Points(0, 0.08, 0, 0); profile.Arcs2d.AddAsFillet(line2dΎ], line2dΏ], 0.01, -1, 1); profile.Arcs2d.AddAsFillet(line2dΏ], line2dΐ], 0.01, -1, -1); profile.Arcs2d.AddAsFillet(line2dΐ], line2dΑ], 0.01, 1, -1); profile.Arcs2d.AddAsFillet(line2dΎ], line2dΑ], 0.01, 1, 1); line2dΎ] = profile.Lines2d.AddBy2Points(0.02, 0.02, 0.06, 0.02); line2dΏ] = profile.Lines2d.AddBy2Points(0.06, 0.02, 0.06, 0.06); line2dΐ] = profile.Lines2d.AddBy2Points(0.06, 0.06, 0.02, 0.06); line2dΑ] = profile.Lines2d.AddBy2Points(0.02, 0.06, 0.02, 0.02); profile.Arcs2d.AddAsFillet(line2dΎ], line2dΏ], 0.01, -1, 1); profile.Arcs2d.AddAsFillet(line2dΏ], line2dΐ], 0.01, -1, -1); profile.Arcs2d.AddAsFillet(line2dΐ], line2dΑ], 0.01, 1, -1); profile.Arcs2d.AddAsFillet(line2dΎ], line2dΑ], 0.01, 1, 1); profile.End(SolidEdgePart.ProfileValidationType.igProfileAllowNested); profile.End(SolidEdgePart.ProfileValidationType.igProfileClosed); //profile_arrΎ] = profile; aProfiles = Array.CreateInstance(typeof(SolidEdgePart.Profile), 1); aProfiles.SetValue(profile, 0); part.Models.AddFiniteExtrudedProtrusion(1, ref aProfiles, SolidEdgePart.FeaturePropertyConstants.igLeft, 0.05, Missing.Value, Missing.Value, Missing.Value, Missing.Value); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } finally { if (line2d != null) { Marshal.ReleaseComObject(line2d); line2d = null; } if (profile != null) { Marshal.ReleaseComObject(profile); profile = null; } if (part != null) { Marshal.ReleaseComObject(part); part = null; } if (documents != null) { Marshal.ReleaseComObject(documents); documents = null; } if (application != null) { Marshal.ReleaseComObject(application); application = null; } } |
|
|
|
|
|