Imports System.IO Imports System.Runtime.InteropServices Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim objApplication As SolidEdgeFramework.Application = Nothing Dim objFolder As DirectoryInfo Dim objFileInfo As FileInfo Dim objDocuments As SolidEdgeFramework.Documents = Nothing Dim objDraftDoc As SolidEdgeDraft.DraftDocument = Nothing Dim objSheet As SolidEdgeDraft.Sheet = Nothing Dim objDrawingViews As SolidEdgeDraft.DrawingViews = Nothing Dim objDrawingView As SolidEdgeDraft.DrawingView = Nothing Dim CPLs As SolidEdgeDraft.CuttingPlanes Dim CPL As SolidEdgeDraft.CuttingPlane Dim sectionView As SolidEdgeDraft.DrawingView Dim draftProfile As SolidEdgeDraft.DraftProfile Dim xmin, ymin, xmax, ymax As Double Dim xhalf As Double Try objApplication = Marshal.GetActiveObject("SolidEdge.Application") If objApplication Is Nothing Then ' Start Solid Edge objApplication = Activator.CreateInstance(Type.GetTypeFromProgID("SolidEdge.Application")) objApplication.Visible = True End If objFolder = GetTrainingFolder() objFileInfo = New FileInfo(Path.Combine(objFolder.FullName, "sbddaan.dft")) objDocuments = objApplication.Documents objDraftDoc = objDocuments.Open(objFileInfo.FullName) 'objDraftDoc = objApplication.ActiveDocument objSheet = objDraftDoc.ActiveSheet objDrawingViews = objSheet.DrawingViews objDrawingView = objDrawingViews.Item(1) CPLs = objDrawingView.CuttingPlanes CPL = CPLs.Add() CPL = CPLs.Item(1) 'User can get position of multisegment section line by using profile draftProfile = CPL.Profile draftProfile.BeginEdit() objDrawingView.Range(xmin, ymin, xmax, ymax) xhalf = xmin + (xmax - xmin) / 2 ymax += 0.01 ymin -= 0.01 draftProfile.Lines2d.AddBy2Points(xhalf, ymax, xhalf, ymin) If (Not SolidEdgeDraft.ProfileValidationStatus.igProfileStatusValid = draftProfile.Validate()) Then End If draftProfile.EndEdit() CPL.ViewSide = SolidEdgeFramework.SectionViewProfileSide.igRightProfileSide 'User can set the active segment by using FoldSegment API CPL.FoldSegment = draftProfile.Lines2d.Count sectionView = CPL.CreateView() sectionView.Update() Catch ex As Exception MessageBox.Show(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 Class
using System.IO; using System.Runtime.InteropServices; public class Form1 { private void Button1_Click(object sender, EventArgs e) { SolidEdgeFramework.Application objApplication = null; DirectoryInfo objFolder = null; FileInfo objFileInfo = null; SolidEdgeFramework.Documents objDocuments = null; SolidEdgeDraft.DraftDocument objDraftDoc = null; SolidEdgeDraft.Sheet objSheet = null; SolidEdgeDraft.DrawingViews objDrawingViews = null; SolidEdgeDraft.DrawingView objDrawingView = null; SolidEdgeDraft.CuttingPlanes CPLs = null; SolidEdgeDraft.CuttingPlane CPL = null; SolidEdgeDraft.DrawingView sectionView = null; SolidEdgeDraft.DraftProfile draftProfile = null; double xmin = 0; double ymin = 0; double xmax = 0; double ymax = 0; double xhalf = 0; try { objApplication = (SolidEdgeFramework.Application)Marshal.GetActiveObject("SolidEdge.Application"); if (objApplication == null) { // Start Solid Edge objApplication = Activator.CreateInstance(Type.GetTypeFromProgID("SolidEdge.Application")); objApplication.Visible = true; } objFolder = GetTrainingFolder(); objFileInfo = new FileInfo(Path.Combine(objFolder.FullName, "sbddaan.dft")); objDocuments = objApplication.Documents; objDraftDoc = objDocuments.Open(objFileInfo.FullName); //objDraftDoc = objApplication.ActiveDocument objSheet = objDraftDoc.ActiveSheet; objDrawingViews = objSheet.DrawingViews; objDrawingView = objDrawingViews.Item(1); CPLs = objDrawingView.CuttingPlanes; CPL = CPLs.Add(); CPL = CPLs.Item(1); //User can get position of multisegment section line by using profile draftProfile = CPL.Profile; draftProfile.BeginEdit(); objDrawingView.Range(xmin, ymin, xmax, ymax); xhalf = xmin + (xmax - xmin) / 2; ymax += 0.01; ymin -= 0.01; draftProfile.Lines2d.AddBy2Points(xhalf, ymax, xhalf, ymin); if (!(SolidEdgeDraft.ProfileValidationStatus.igProfileStatusValid == draftProfile.Validate())) { } draftProfile.EndEdit(); CPL.ViewSide = SolidEdgeFramework.SectionViewProfileSide.igRightProfileSide; //User can set the active segment by using FoldSegment API CPL.FoldSegment = draftProfile.Lines2d.Count; sectionView = CPL.CreateView(); sectionView.Update(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } public 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; } public Form1() { SubscribeToEvents(); } private bool EventsSubscribed = false; private void SubscribeToEvents() { if (EventsSubscribed) return; else EventsSubscribed = true; Button1.Click += Button1_Click; } }