Option Infer On
Imports System
Imports System.Runtime.InteropServices
Namespace Examples
Friend Class Program
<STAThread>
Shared Sub Main(ByVal args() As String)
Dim application As SolidEdgeFramework.Application = Nothing
Dim documents As SolidEdgeFramework.Documents = Nothing
Dim assemblyDocument As SolidEdgeAssembly.AssemblyDocument = Nothing
Dim occurrences As SolidEdgeAssembly.Occurrences = Nothing
Dim occurrence1 As SolidEdgeAssembly.Occurrence = Nothing
Dim occurrence2 As SolidEdgeAssembly.Occurrence = Nothing
Dim relations3d As SolidEdgeAssembly.Relations3d = Nothing
Dim partDocument As SolidEdgePart.PartDocument = Nothing
Dim models As SolidEdgePart.Models = Nothing
Dim model As SolidEdgePart.Model = Nothing
Dim revolvedProtrusions As SolidEdgePart.RevolvedProtrusions = Nothing
Dim revolvedProtrusion As SolidEdgePart.RevolvedProtrusion = Nothing
Dim sideFaces As SolidEdgeGeometry.Faces = Nothing
Dim sideFace As SolidEdgeGeometry.Face = Nothing
Dim reference1 As SolidEdgeFramework.Reference = Nothing
Dim reference2 As SolidEdgeFramework.Reference = Nothing
Dim groundRelation3d As SolidEdgeAssembly.GroundRelation3d = Nothing
Try
' See "Handling 'Application is Busy' and 'Call was Rejected By Callee' errors" topic.
OleMessageFilter.Register()
' Attempt to connect to a running instance of Solid Edge.
application = DirectCast(Marshal.GetActiveObject("SolidEdge.Application"), SolidEdgeFramework.Application)
documents = application.Documents
assemblyDocument = CType(documents.Add("SolidEdge.AssemblyDocument"), SolidEdgeAssembly.AssemblyDocument)
If assemblyDocument IsNot Nothing Then
occurrences = assemblyDocument.Occurrences
' SideFlange.par from the training folders works well for the sample.
' Update path accordingly.
Dim OccurrenceFileName = "C:\Program Files\Solid Edge ST8\Training\SideFlange.par"
' Occurrence 1
occurrence1 = occurrences.AddByFilename(OccurrenceFileName)
partDocument = CType(occurrence1.PartDocument, SolidEdgePart.PartDocument)
models = partDocument.Models
model = models.Item(1)
revolvedProtrusions = model.RevolvedProtrusions
revolvedProtrusion = revolvedProtrusions.Item(1)
sideFaces = CType(revolvedProtrusion.SideFaces, SolidEdgeGeometry.Faces)
sideFace = CType(sideFaces.Item(1), SolidEdgeGeometry.Face)
reference1 = CType(assemblyDocument.CreateReference(occurrence1, sideFace), SolidEdgeFramework.Reference)
' Occurrence 2
occurrence2 = occurrences.AddByFilename(OccurrenceFileName)
partDocument = CType(occurrence2.PartDocument, SolidEdgePart.PartDocument)
models = partDocument.Models
model = models.Item(1)
revolvedProtrusions = model.RevolvedProtrusions
revolvedProtrusion = revolvedProtrusions.Item(1)
sideFaces = CType(revolvedProtrusion.SideFaces, SolidEdgeGeometry.Faces)
sideFace = CType(sideFaces.Item(1), SolidEdgeGeometry.Face)
reference2 = CType(assemblyDocument.CreateReference(occurrence2, sideFace), SolidEdgeFramework.Reference)
' Remove the Ground Relation on the Second Part
relations3d = CType(occurrence2.Relations3d, SolidEdgeAssembly.Relations3d)
groundRelation3d = CType(relations3d.Item(1), SolidEdgeAssembly.GroundRelation3d)
groundRelation3d.Delete()
relations3d = assemblyDocument.Relations3d
relations3d.AddAxial(reference1, reference2, True)
End If
Catch ex As System.Exception
Console.WriteLine(ex)
Finally
OleMessageFilter.Unregister()
End Try
End Sub
End Class
End Namespace
using System;
using System.Runtime.InteropServices;
namespace Examples
{
class Program
{
[STAThread]
static void Main(string[] args)
{
SolidEdgeFramework.Application application = null;
SolidEdgeFramework.Documents documents = null;
SolidEdgeAssembly.AssemblyDocument assemblyDocument = null;
SolidEdgeAssembly.Occurrences occurrences = null;
SolidEdgeAssembly.Occurrence occurrence1 = null;
SolidEdgeAssembly.Occurrence occurrence2 = null;
SolidEdgeAssembly.Relations3d relations3d = null;
SolidEdgePart.PartDocument partDocument = null;
SolidEdgePart.Models models = null;
SolidEdgePart.Model model = null;
SolidEdgePart.RevolvedProtrusions revolvedProtrusions = null;
SolidEdgePart.RevolvedProtrusion revolvedProtrusion = null;
SolidEdgeGeometry.Faces sideFaces = null;
SolidEdgeGeometry.Face sideFace = null;
SolidEdgeFramework.Reference reference1 = null;
SolidEdgeFramework.Reference reference2 = null;
SolidEdgeAssembly.GroundRelation3d groundRelation3d = null;
try
{
// See "Handling 'Application is Busy' and 'Call was Rejected By Callee' errors" topic.
OleMessageFilter.Register();
// Attempt to connect to a running instance of Solid Edge.
application = (SolidEdgeFramework.Application)Marshal.GetActiveObject("SolidEdge.Application");
documents = application.Documents;
assemblyDocument = (SolidEdgeAssembly.AssemblyDocument)documents.Add("SolidEdge.AssemblyDocument");
if (assemblyDocument != null)
{
occurrences = assemblyDocument.Occurrences;
// SideFlange.par from the training folders works well for the sample.
// Update path accordingly.
var OccurrenceFileName = @"C:\Program Files\Solid Edge ST8\Training\SideFlange.par";
// Occurrence 1
occurrence1 = occurrences.AddByFilename(OccurrenceFileName);
partDocument = (SolidEdgePart.PartDocument)occurrence1.PartDocument;
models = partDocument.Models;
model = models.Item(1);
revolvedProtrusions = model.RevolvedProtrusions;
revolvedProtrusion = revolvedProtrusions.Item(1);
sideFaces = (SolidEdgeGeometry.Faces)revolvedProtrusion.SideFaces;
sideFace = (SolidEdgeGeometry.Face)sideFaces.Item(1);
reference1 = (SolidEdgeFramework.Reference)assemblyDocument.CreateReference(occurrence1, sideFace);
// Occurrence 2
occurrence2 = occurrences.AddByFilename(OccurrenceFileName);
partDocument = (SolidEdgePart.PartDocument)occurrence2.PartDocument;
models = partDocument.Models;
model = models.Item(1);
revolvedProtrusions = model.RevolvedProtrusions;
revolvedProtrusion = revolvedProtrusions.Item(1);
sideFaces = (SolidEdgeGeometry.Faces)revolvedProtrusion.SideFaces;
sideFace = (SolidEdgeGeometry.Face)sideFaces.Item(1);
reference2 = (SolidEdgeFramework.Reference)assemblyDocument.CreateReference(occurrence2, sideFace);
// Remove the Ground Relation on the Second Part
relations3d = (SolidEdgeAssembly.Relations3d)occurrence2.Relations3d;
groundRelation3d = (SolidEdgeAssembly.GroundRelation3d)relations3d.Item(1);
groundRelation3d.Delete();
relations3d = assemblyDocument.Relations3d;
relations3d.AddAxial(reference1, reference2, true);
}
}
catch (System.Exception ex)
{
Console.WriteLine(ex);
}
finally
{
OleMessageFilter.Unregister();
}
}
}
}