Imports System.Runtime.InteropServices
Imports System.IO
Module Module1
Sub Main()
Dim objApplication As SolidEdgeFramework.Application = Nothing
Dim ObjDoc As SolidEdgeFramework.SolidEdgeDocument = Nothing
Dim objPartDoc As SolidEdgePart.PartDocument = Nothing
Dim objDims As SolidEdgeFrameworkSupport.Dimensions = Nothing
Dim objDim As SolidEdgeFrameworkSupport.Dimension = Nothing
Dim objOrigDim As SolidEdgeFrameworkSupport.Dimension = Nothing
Dim objPMI As SolidEdgeFrameworkSupport.PMI = Nothing
Dim objEdges As SolidEdgeGeometry.Edges = Nothing
Dim objEdge1 As SolidEdgeGeometry.Edge = Nothing
Dim objEdge2 As SolidEdgeGeometry.Edge = Nothing
Dim objDimPlane As SolidEdgePart.RefPlane = Nothing
Dim objDimInitData As SolidEdgeFrameworkSupport.DimInitData = Nothing
Dim dblStartPoint1(0) As Double
Dim dblEndPoint1(0) As Double
Dim objFolder As DirectoryInfo
Dim objFileInfo As FileInfo
Try
'Get the application with specific settings
objApplication = Marshal.GetActiveObject("SolidEdge.Application")
objFolder = GetTrainingFolder()
objFileInfo = New FileInfo(Path.Combine(objFolder.FullName, "17_tooth_pinion.par"))
'Need a Part file with a block in it.
ObjDoc = objApplication.Documents.Open(objFileInfo.FullName)
'Get the PMI object from the document
Call objPartDoc.PMI_ByModelState(PMIObj:=objPMI)
'Get the dimensions collection from the PMI object
objDims = objPMI.Dimensions
objEdges = objPartDoc.Models.Item(1).ExtrudedProtrusions.Item(1).Edges(SolidEdgeGeometry.FeatureTopologyQueryTypeConstants.igQueryRoundable)
If Not objEdges Is Nothing Then
objEdge1 = objEdges.Item(1)
objEdge2 = objEdges.Item(2)
End If
objDimPlane = objPartDoc.RefPlanes.Item(3)
objDimInitData = objDims.DimInitData
'C-Diameter Dimension
Call objDimInitData.ClearParents()
Call objDimInitData.SetType(SolidEdgeFrameworkSupport.DimTypeConstants.igDimTypeCDiameter)
Call objDimInitData.SetAxisMode(SolidEdgeFrameworkSupport.DimAxisModeConstants.igDimAxisModeDefault)
Call objDimInitData.SetPlane(objDimPlane)
Call objDimInitData.SetNumberOfParents(1)
Call objDimInitData.SetNormalDiameterMode(True)
Call objEdge1.GetEndPoints(StartPoint:=dblStartPoint1, EndPoint:=dblEndPoint1)
Call objDimInitData.SetParentByIndex(0, objEdge1, True, False, False, False, dblStartPoint1(0), dblStartPoint1(1), dblStartPoint1(2))
objDim = objDims.AddDimension(DimInitData:=objDimInitData)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Function GetTrainingFolder() As DirectoryInfo
Dim objInstallData As SEInstallDataLib.SEInstallData = Nothing
Dim objInstallFolder As DirectoryInfo = Nothing
Dim objTrainingFolder As DirectoryInfo = Nothing
Try
objInstallData = New SEInstallDataLib.SEInstallData
objInstallFolder = New DirectoryInfo(objInstallData.GetInstalledPath())
objTrainingFolder = New DirectoryInfo(Path.Combine(objInstallFolder.Parent.FullName, "Training"))
Catch
Finally
If Not (objInstallData Is Nothing) Then
Marshal.FinalReleaseComObject(objInstallData)
objInstallData = Nothing
End If
End Try
Return objTrainingFolder
End Function
End Module
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
internal static class Module1
{
public static void Main()
{
SolidEdgeFramework.Application objApplication = null;
SolidEdgeFramework.SolidEdgeDocument ObjDoc = null;
SolidEdgePart.PartDocument objPartDoc = null;
SolidEdgeFrameworkSupport.Dimensions objDims = null;
SolidEdgeFrameworkSupport.Dimension objDim = null;
SolidEdgeFrameworkSupport.Dimension objOrigDim = null;
SolidEdgeFrameworkSupport.PMI objPMI = null;
SolidEdgeGeometry.Edges objEdges = null;
SolidEdgeGeometry.Edge objEdge1 = null;
SolidEdgeGeometry.Edge objEdge2 = null;
SolidEdgePart.RefPlane objDimPlane = null;
SolidEdgeFrameworkSupport.DimInitData objDimInitData = null;
double[] dblStartPoint1 = new double[1];
double[] dblEndPoint1 = new double[1];
DirectoryInfo objFolder = null;
FileInfo objFileInfo = null;
try
{
//Get the application with specific settings
objApplication = (SolidEdgeFramework.Application)Marshal.GetActiveObject("SolidEdge.Application");
objFolder = GetTrainingFolder();
objFileInfo = new FileInfo(Path.Combine(objFolder.FullName, "17_tooth_pinion.par"));
//Need a Part file with a block in it.
ObjDoc = objApplication.Documents.Open(objFileInfo.FullName);
//Get the PMI object from the document
objPartDoc.PMI_ByModelState(PMIObj:objPMI);
//Get the dimensions collection from the PMI object
objDims = objPMI.Dimensions;
objEdges = objPartDoc.Models.Item(1).ExtrudedProtrusions.Item(1).Edges(SolidEdgeGeometry.FeatureTopologyQueryTypeConstants.igQueryRoundable);
if (objEdges != null)
{
objEdge1 = objEdges.Item(1);
objEdge2 = objEdges.Item(2);
}
objDimPlane = objPartDoc.RefPlanes.Item(3);
objDimInitData = objDims.DimInitData;
//C-Diameter Dimension
objDimInitData.ClearParents();
objDimInitData.SetType(SolidEdgeFrameworkSupport.DimTypeConstants.igDimTypeCDiameter);
objDimInitData.SetAxisMode(SolidEdgeFrameworkSupport.DimAxisModeConstants.igDimAxisModeDefault);
objDimInitData.SetPlane(objDimPlane);
objDimInitData.SetNumberOfParents(1);
objDimInitData.SetNormalDiameterMode(true);
objEdge1.GetEndPoints(StartPoint:dblStartPoint1, EndPoint:dblEndPoint1);
objDimInitData.SetParentByIndex(0, objEdge1, true, false, false, false, dblStartPoint1[0], dblStartPoint1[1], dblStartPoint1[2]);
objDim = objDims.AddDimension(DimInitData:objDimInitData);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public static DirectoryInfo GetTrainingFolder()
{
SEInstallDataLib.SEInstallData objInstallData = null;
DirectoryInfo objInstallFolder = null;
DirectoryInfo objTrainingFolder = null;
try
{
objInstallData = new SEInstallDataLib.SEInstallData();
objInstallFolder = new DirectoryInfo(objInstallData.GetInstalledPath());
objTrainingFolder = new DirectoryInfo(Path.Combine(objInstallFolder.Parent.FullName, "Training"));
}
catch
{
}
finally
{
if (objInstallData != null)
{
Marshal.FinalReleaseComObject(objInstallData);
objInstallData = null;
}
}
return objTrainingFolder;
}
}