C sharp - programik tworzący dokument Solid Edge-a .part i rysujący prosty kształt

Stronę tą wyświetlono już: 281 razy

Program Solid Edge instaluje w systemie całą serię bibliotek, kod 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:

Listing 1
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using SolidEdgeFramework;
  7. using SolidEdgePart;
  8. using System.Runtime.InteropServices;
  9. using SolidEdgeConstants;
  10. namespace SE_drawing
  11. {
  12. class Program
  13. {
  14. static void addLine(SolidEdgeFrameworkSupport.Lines2d lines, double x1, double y1, double x2, double y2)
  15. {
  16. double k = 0.001;
  17. lines.AddBy2Points(x1 * k, y1 * k, x2 * k, y2 * k);
  18. }
  19. static void Main(string[] args)
  20. {
  21. SolidEdgeFramework.Application seApp = null;
  22. SolidEdgePart.PartDocument sePartDocument = null;
  23. try
  24. {
  25. seApp = Marshal.GetActiveObject("SolidEdge.Application") as SolidEdgeFramework.Application;
  26. sePartDocument = seApp.Documents.Add("SolidEdge.PartDocument");
  27. var profile = sePartDocument.ProfileSets.Add().Profiles.Add(sePartDocument.RefPlanes.Item(2));
  28. var lines = profile.Lines2d;
  29. addLine(lines, -30, -30, 30, -30);
  30. addLine(lines, 30, -30, 30, 30);
  31. addLine(lines, 30, 30, -30, 30);
  32. addLine(lines, -30, 30, -30, -30);
  33. var relations = profile.Relations2d;
  34. Console.WriteLine(lines.Count.ToString());
  35. for (int i = 1; i < lines.Count; i++)
  36. {
  37. relations.AddKeypoint(lines.Item(i), KeypointIndexConstants.igLineEnd, lines.Item(i + 1), KeypointIndexConstants.igLineStart);
  38. }
  39. relations.AddKeypoint(lines.Item(lines.Count), KeypointIndexConstants.igLineEnd, lines.Item(1), KeypointIndexConstants.igLineStart);
  40. Object[] profileArray = new Object[1] { profile };
  41. sePartDocument.Models.AddFiniteExtrudedProtrusion(1, profileArray, SolidEdgePart.FeaturePropertyConstants.igSymmetric, 5.0 / 1000);
  42. profile.Visible = false;
  43. }
  44. catch(Exception e)
  45. {
  46. Console.WriteLine(e.Message);
  47. throw;
  48. }
  49. finally
  50. {
  51. seApp = null;
  52. sePartDocument = null;
  53. }
  54. }
  55. }
  56. }

Powyższy kawałek kodu narysuje prosty obiekt przestrzenny z poniższego rysunku.

C# rysowanie obiektu 3D
Rys. 1
C# rysowanie obiektu 3D w Solid Edge St8

Komentarze