Stronę tą wyświetlono już: 2469 razy
Program Solid Edge instaluje w systemie całą serię bibliotek, pod które można się podpiąć i zaprogramować coś ciekawego. Poniżej zamieszczam króciutki kawałek kodu napisanego w C#, którego jedynym celem jest narysowanie zarysu obiektu i wyciągnięcie jego. Cała operacja wykonuje się automatycznie a rysowany na potrzeby tego przykładu obiekt to zwykły prostopadłościan o wysokości 5mm i przekroju kwadrata o boku długości 30mm. Nie przynudzając dłużej oto kod tej jakże zawiłej aplikacji:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SolidEdgeFramework;
using SolidEdgePart;
using System.Runtime.InteropServices;
using SolidEdgeConstants;
namespace SE_drawing
{
class Program
{
static void addLine(SolidEdgeFrameworkSupport.Lines2d lines, double x1, double y1, double x2, double y2)
{
double k = 0.001;
lines.AddBy2Points(x1 * k, y1 * k, x2 * k, y2 * k);
}
static void Main(string[] args)
{
SolidEdgeFramework.Application seApp = null;
SolidEdgePart.PartDocument sePartDocument = null;
try
{
seApp = Marshal.GetActiveObject("SolidEdge.Application") as SolidEdgeFramework.Application;
sePartDocument = seApp.Documents.Add("SolidEdge.PartDocument");
var profile = sePartDocument.ProfileSets.Add().Profiles.Add(sePartDocument.RefPlanes.Item(2));
var lines = profile.Lines2d;
addLine(lines, -30, -30, 30, -30);
addLine(lines, 30, -30, 30, 30);
addLine(lines, 30, 30, -30, 30);
addLine(lines, -30, 30, -30, -30);
var relations = profile.Relations2d;
Console.WriteLine(lines.Count.ToString());
for (int i = 1; i < lines.Count; i++)
{
relations.AddKeypoint(lines.Item(i), KeypointIndexConstants.igLineEnd, lines.Item(i + 1), KeypointIndexConstants.igLineStart);
}
relations.AddKeypoint(lines.Item(lines.Count), KeypointIndexConstants.igLineEnd, lines.Item(1), KeypointIndexConstants.igLineStart);
Object[] profileArray = new Object[1] { profile };
sePartDocument.Models.AddFiniteExtrudedProtrusion(1, profileArray, SolidEdgePart.FeaturePropertyConstants.igSymmetric, 5.0 / 1000);
profile.Visible = false;
}
catch(Exception e)
{
Console.WriteLine(e.Message);
throw;
}
finally
{
seApp = null;
sePartDocument = null;
}
}
}
}
Powyższy kawałek kodu narysuje prosty obiekt przestrzenny z poniższego rysunku.