Programmer's Guide > Solid Edge > Environments > Part and Sheet Metal > Modeling Parts |
When you create a model interactively, you always begin by creating a base feature. You then add subsequent features to this base feature to completely define the model. When you create a model using automation, the workflow is identical. Using add methods on the Models collection, you first create a base feature commonly using either an extruded or revolved protrusion.
See Handling 'Application is Busy' and 'Call was Rejected By Callee' errors for information regarding the use of OleMessageFilter. |
Modeling a Part in Visual Basic .NET |
Copy Code
|
---|---|
Imports SolidEdgeConstants Imports System.Runtime.InteropServices Module Program <STAThread()> _ Sub Main() Dim objApplication As SolidEdgeFramework.Application = Nothing Dim objDocuments As SolidEdgeFramework.Documents = Nothing Dim objPart As SolidEdgePart.PartDocument = Nothing Dim objProfileSets As SolidEdgePart.ProfileSets = Nothing Dim objProfileSet As SolidEdgePart.ProfileSet = Nothing Dim objProfiles As SolidEdgePart.Profiles = Nothing Dim objProfile As SolidEdgePart.Profile = Nothing Dim objRefplanes As SolidEdgePart.RefPlanes = Nothing Dim objRelations2d As SolidEdgeFrameworkSupport.Relations2d = Nothing Dim objRelation2d As SolidEdgeFrameworkSupport.Relation2d = Nothing Dim objLines2d As SolidEdgeFrameworkSupport.Lines2d = Nothing Dim objLine2d As SolidEdgeFrameworkSupport.Line2d = Nothing Dim objModels As SolidEdgePart.Models = Nothing Dim objModel As SolidEdgePart.Model = Nothing Dim aProfiles As Array Try OleMessageFilter.Register() ' Connect to a running instance of Solid Edge objApplication = Marshal.GetActiveObject("SolidEdge.Application") ' Get a reference to the documents collection objDocuments = objApplication.Documents ' Create a new part document objPart = objApplication.Add("SolidEdge.PartDocument") ' Get a reference to the profile sets collection objProfileSets = objPart.ProfileSets ' Add a new profile set objProfileSet = objProfileSets.Add() ' Get a reference to the profiles collection objProfiles = objProfileSet.Profiles ' Get a reference to the ref planes collection objRefplanes = objPart.RefPlanes ' Add a new profile objProfile = objProfiles.Add(objRefplanes.Item(3)) ' Get a reference to the lines2d collection objLines2d = objProfile.Lines2d ' Draw the Base Profile objLine2d = objLines2d.AddBy2Points(0, 0, 0.08, 0) objLine2d = objLines2d.AddBy2Points(0.08, 0, 0.08, 0.06) objLine2d = objLines2d.AddBy2Points(0.08, 0.06, 0.064, 0.06) objLine2d = objLines2d.AddBy2Points(0.064, 0.06, 0.064, 0.02) objLine2d = objLines2d.AddBy2Points(0.064, 0.02, 0.048, 0.02) objLine2d = objLines2d.AddBy2Points(0.048, 0.02, 0.048, 0.06) objLine2d = objLines2d.AddBy2Points(0.048, 0.06, 0.032, 0.06) objLine2d = objLines2d.AddBy2Points(0.032, 0.06, 0.032, 0.02) objLine2d = objLines2d.AddBy2Points(0.032, 0.02, 0.016, 0.02) objLine2d = objLines2d.AddBy2Points(0.016, 0.02, 0.016, 0.06) objLine2d = objLines2d.AddBy2Points(0.016, 0.06, 0, 0.06) objLine2d = objLines2d.AddBy2Points(0, 0.06, 0, 0) ' Define Relations among the Line objects to make the Profile closed objRelations2d = objProfile.Relations2d objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(1), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(2), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(2), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(3), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(3), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(4), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(4), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(5), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(5), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(6), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(6), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(7), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(7), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(8), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(8), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(9), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(9), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(10), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(10), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(11), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(11), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(12), _ KeypointIndexConstants.igLineStart) objRelation2d = objRelations2d.AddKeypoint( _ objLines2d.Item(12), _ KeypointIndexConstants.igLineEnd, _ objLines2d.Item(1), _ KeypointIndexConstants.igLineStart) ' Close the profile objProfile.End( _ SolidEdgePart.ProfileValidationType.igProfileClosed) ' Hide the profile objProfile.Visible = False ' Create a new array of profile objects aProfiles = Array.CreateInstance(GetType(SolidEdgePart.Profile), 1) aProfiles.SetValue(objProfile, 0) ' Get a reference to the models collection objModels = objPart.Models ' Create the extended protrusion. objModel = objModels.AddFiniteExtrudedProtrusion( _ aProfiles.Length, _ aProfiles, _ SolidEdgePart.FeaturePropertyConstants.igRight, _ 0.05) Catch ex As Exception Console.WriteLine(ex.Message) Finally OleMessageFilter.Revoke() End Try End Sub End Module |
Modeling a Part in C# |
Copy Code
|
---|---|
using Examples; using SolidEdgeConstants; using System; using System.Reflection; using System.Runtime.InteropServices; namespace SolidEdge.SDK { class Program { [STAThread] static void Main(string[] args) { 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; SolidEdgePart.Models models = null; SolidEdgePart.Model model = null; System.Array aProfiles = null; try { OleMessageFilter.Register(); // 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; // Draw the Base Profile lines2d.AddBy2Points(0, 0, 0.08, 0); lines2d.AddBy2Points(0.08, 0, 0.08, 0.06); lines2d.AddBy2Points(0.08, 0.06, 0.064, 0.06); lines2d.AddBy2Points(0.064, 0.06, 0.064, 0.02); lines2d.AddBy2Points(0.064, 0.02, 0.048, 0.02); lines2d.AddBy2Points(0.048, 0.02, 0.048, 0.06); lines2d.AddBy2Points(0.048, 0.06, 0.032, 0.06); lines2d.AddBy2Points(0.032, 0.06, 0.032, 0.02); lines2d.AddBy2Points(0.032, 0.02, 0.016, 0.02); lines2d.AddBy2Points(0.016, 0.02, 0.016, 0.06); lines2d.AddBy2Points(0.016, 0.06, 0, 0.06); lines2d.AddBy2Points(0, 0.06, 0, 0); // 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(5), (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(9), (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); // 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); } catch (System.Exception ex) { Console.WriteLine(ex.Message); } finally { OleMessageFilter.Revoke(); } } } } |
The previous code examples produce the following model.