Programmer's Guide > Solid Edge > Environments > Part and Sheet Metal > Working with Synchronous and Ordered features |
Starting with Solid Edge ST3, Synchronous and Ordered modeling in the Part and SheetMetal environments have been integrated. By setting the PartDocument.ModelingMode or SheetMetalDocument.ModelingMode, you can now toggle between Synchronous and Ordered modeling environments dynamically during automation.
The following code demonstrates how to create a Synchronous ExtrudedProtrusion and Ordered ExtrudedProtrusion in the same model.
See Handling 'Application is Busy' and 'Call was Rejected By Callee' errors for information regarding the use of OleMessageFilter. |
Creating Synchronous and Ordered features in Visual Basic .NET |
Copy Code
|
---|---|
Imports System.IO Imports System.Runtime.InteropServices Module Program <STAThread()> _ Sub Main() Dim objApplication As SolidEdgeFramework.Application = Nothing Dim objDocuments As SolidEdgeFramework.Documents = Nothing Dim objPartDocument As SolidEdgePart.PartDocument = Nothing Dim objModels As SolidEdgePart.Models = Nothing Dim objModel As SolidEdgePart.Model = 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 aProfile(2) As SolidEdgePart.Profile Dim objExtrudedProtrusion As SolidEdgePart.ExtrudedProtrusion = Nothing Dim objLines2d As SolidEdgeFrameworkSupport.Lines2d = Nothing Dim objRelations2d As SolidEdgeFrameworkSupport.Relations2d = Nothing Dim objRefPlane As SolidEdgePart.RefPlane = Nothing Dim objCircles2d As SolidEdgeFrameworkSupport.Circles2d = Nothing Dim mode As SolidEdgeConstants.ModelingModeConstants = Nothing Dim lngStatus As Integer Try OleMessageFilter.Register() ' Start Solid Edge objApplication = Activator.CreateInstance(Type.GetTypeFromProgID("SolidEdge.Application")) ' Show Solid Edge objApplication.Visible = True objDocuments = objApplication.Documents ' Create a new part document objPartDocument = objDocuments.Add("SolidEdge.PartDocument") objModels = objPartDocument.Models ' Set the modeling mode to synchronous objPartDocument.ModelingMode = SolidEdgeConstants.ModelingModeConstants.seModelingModeSynchronous ' Create synchronous features objProfileSets = objPartDocument.ProfileSets objProfileSet = objProfileSets.Add() objProfiles = objProfileSet.Profiles objRefPlanes = objPartDocument.RefPlanes aProfile(0) = objProfiles.Add(objRefPlanes.Item(3)) objLines2d = aProfile(0).Lines2d ' Draw lines objLines2d.AddBy2Points(0, 0, 0.08, 0) objLines2d.AddBy2Points(0.08, 0, 0.08, 0.06) objLines2d.AddBy2Points(0.08, 0.06, 0.064, 0.06) objLines2d.AddBy2Points(0.064, 0.06, 0.064, 0.02) objLines2d.AddBy2Points(0.064, 0.02, 0.048, 0.02) objLines2d.AddBy2Points(0.048, 0.02, 0.048, 0.06) objLines2d.AddBy2Points(0.048, 0.06, 0.032, 0.06) objLines2d.AddBy2Points(0.032, 0.06, 0.032, 0.02) objLines2d.AddBy2Points(0.032, 0.02, 0.016, 0.02) objLines2d.AddBy2Points(0.016, 0.02, 0.016, 0.06) objLines2d.AddBy2Points(0.016, 0.06, 0, 0.06) objLines2d.AddBy2Points(0, 0.06, 0, 0) objRelations2d = aProfile(0).Relations2d ' Connect lines objRelations2d.AddKeypoint(objLines2d.Item(1), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(2), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(2), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(3), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(3), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(4), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(4), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(5), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(5), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(6), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(6), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(7), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(7), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(8), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(8), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(9), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(9), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(10), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(10), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(11), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(11), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(12), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) objRelations2d.AddKeypoint(objLines2d.Item(12), _ SolidEdgeConstants.KeypointIndexConstants.igLineEnd, _ objLines2d.Item(1), _ SolidEdgeConstants.KeypointIndexConstants.igLineStart) lngStatus = aProfile(0).End(SolidEdgePart.ProfileValidationType.igProfileClosed) If lngStatus <> 0 Then Throw New System.Exception("Profile not closed") End If objModel = objModels.AddFiniteExtrudedProtrusion(1, _ aProfile, _ SolidEdgeConstants.FeaturePropertyConstants.igRight, _ 0.05) If objModel.ExtrudedProtrusions.Item(1).Status <> SolidEdgeConstants.FeatureStatusConstants.igFeatureOK Then Throw New System.Exception("Error in the Creation of Base Protrusion Feature object") End If ' Now change the modeling mode to ordered objPartDocument.ModelingMode = SolidEdgeConstants.ModelingModeConstants.seModelingModeOrdered ' Create ordered features objRefPlane = objRefPlanes.AddParallelByDistance(objRefPlanes.Item(2), _ 0.01, _ SolidEdgeConstants.FeaturePropertyConstants.igRight) objProfileSet = objProfileSets.Add() objProfiles = objProfileSet.Profiles objProfile = objProfiles.Add(objRefPlane) objCircles2d = objProfile.Circles2d objCircles2d.AddByCenterRadius(-0.025, 0.035, 0.005) lngStatus = objProfile.End(SolidEdgePart.ProfileValidationType.igProfileClosed) If lngStatus <> 0 Then Throw New System.Exception("Profile not closed") End If objExtrudedProtrusion = objModel.ExtrudedProtrusions.AddFinite(objProfile, _ SolidEdgeConstants.FeaturePropertyConstants.igLeft, _ SolidEdgeConstants.FeaturePropertyConstants.igRight, _ 0.1) ' This feature is seModelingModeSynchronous mode = objModel.ExtrudedProtrusions.Item(1).ModelingModeType ' This feature is seModelingModeOrdered mode = objModel.ExtrudedProtrusions.Item(2).ModelingModeType Catch ex As Exception Console.WriteLine(ex.Message) Finally OleMessageFilter.Revoke() End Try End Sub End Module |