| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: GetProfiles für geführte Ausprägung/Ausschnitt (1141 mal gelesen)
|
Mrole Mitglied
Beiträge: 118 Registriert: 02.04.2003
|
erstellt am: 17. Jan. 2007 11:13 <-- editieren / zitieren --> Unities abgeben:
Hi Programmierer, erst amal ein gutes neues Jahr noch! Wieder mal was zur SE API: Laut Hilfe gilt die GetProfiles Methode für geführte Ausprägungen/Ausschnitte nicht. Kann man auf die Profile vielleicht anders zugreifen? In den ProfileSets sind diese zwar aufgeführt, allerdings fehlt hier der Bezug zum Feature..., also nicht optimal. Kennt das Problem jemand? Grüße Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 200 Registriert: 19.11.2004
|
erstellt am: 17. Jan. 2007 14:12 <-- editieren / zitieren --> Unities abgeben: Nur für Mrole
Hallo Mrole, wenn man sich in der API Beschreibung anschaut, was alles an Parametern der Add-Methode des SweptProtrusions- bzw. SweptCutOuts-Objekts angegeben werden muß, so scheint die GetCrossSections-Methode eines SweptProtrusion- bzw. SweptCutOut-Objekts eine Referenz auf das Profile-Objekt zurückzuliefern, wenn bei der Angabe der CrossSection der CrossSectionType vom Typ igProfileBasedCrossSection war. Über ein in Try/Catch eingebettetes DirectCast sollte also das Umwandeln der ersten gelieferten CrossSection in ein Profile-Objekt möglich sein.
------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marcus Sachs Mitglied Senior Consultant / Technische Leitung
Beiträge: 204 Registriert: 17.05.2000 Die Ungeduldigen kommen immer zu spät. Jean Dutourd (*1920), frz. Schriftsteller
|
erstellt am: 17. Jan. 2007 17:14 <-- editieren / zitieren --> Unities abgeben: Nur für Mrole
Hallo Herr Kunert, auch wenn mein Beitrag nichts Neues bringt: Gratulation zu den beiden Sätzen! Ich denke die hätten es verdient zumindest bei Harald Schmidt vorgelesen zu werden! Für alle Nichtprogrammierer, wie mich :-)) ein echter Leckerbissen. @ Mrole, na dann mal los und auch Dir ein gutes neues und erfolgreiches Jahr. ------------------ Gruß Marcus Sachs Unitec Informationssysteme GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 200 Registriert: 19.11.2004
|
erstellt am: 17. Jan. 2007 20:59 <-- editieren / zitieren --> Unities abgeben: Nur für Mrole
Hallo Herr Sachs, da haben Sie vollkommen recht, aber wer sich wie Mrole wohl schon eine Zeit lang die Zähne an dem Problem ausgebissen hat, wird jeden Hinweis dieser 2 Sätze zu deuten wissen. Für alle anderen Interessierten: Im Gegensatz zu vielen anderen Formelementobjekten bieten die Objekte für eine geführte Ausprägung (SweptProtrusion) oder einen geführten Ausschnitt (SweptCutOut) keine 'Profile' Eigenschaft, um eine Referenz auf das dem Formelement zugrunde liegende Profil zu erhalten. Deshalb verfolge ich die Idee, das Pferd umgekehrt aufzuzäumen, indem ich zunächst die API nach den Parametern begutachte, die man angeben muss/kann, wenn man per API eine geführte Ausprägung/Ausschnitt erstellen möchte (per Add-Methode der SweptProtrusions/SweptCutOuts Auflistungsobjekte). Dort ist die Rede von SectionCurve(s) und CrossSection(s), die entweder mittels Körperkanten (Edges) oder Profilen definiert werden können. Den jeweiligen Typ muss man im Parameter CrossSectionType übergeben (entweder igProfileBasedCrossSection oder igEdgeBasedCrossSection). Die SectionCurve ist offensichtlich die Führungskurve, die durchaus aus mehreren Segmenten aufgebaut sein kann. Die CrossSection(s) ist/sind in der Regel das/die an der Führungskurve senkrecht entlanggeführte(n) Profil(e) (ein CrossSection kann aber auch aus Körperkanten gebildet sorden sein). Ein Blick in die API Dokumentation zu den Objekten SweptProtrusion bzw. SweptCutOut zeigt eine Methode "GetSectionCurves" und "GetCrossSections". Letztere Methode liefert den/die Querschnitt(e) in einem Array (falls die geführte Ausprägung/Ausschnitt mehr als einen Querschnitt besitzt). Jetzt muss man noch das Problem lösen, ob es sich bei dem ersten Objekt im Array um ein Edge-Objekt oder um ein Profile-Objekt handelt. Dies macht man über sogenanntes Type Casting, also eine gezielte Typumwandlung. Da die Typumwandlung eine Ausnahme auslöst, wenn der gewünschte Zieltyp nicht verträglich ist, macht man dies in C#.NET und/oder VB.NET in einem try/catch-Block. Im catch-Block wird die Ausnahme abgefangen und man weiß, dass man keine Referenz auf ein Profile-Objekt erhalten hat ------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de [Diese Nachricht wurde von wksyspro am 19. Jan. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mrole Mitglied
Beiträge: 118 Registriert: 02.04.2003
|
erstellt am: 19. Jan. 2007 11:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Herr Kunert, vielen Dank für die Hinweise! Das ist richtig, da kann man eine ganze Weile rumprobieren, wie man so was eindeutig erfassen kann. Ich werd es gleich mal ausprobieren... Hab grad schon wieder was anderes entdeckt, es geht um Konische Gewinde: Laut Hilfe ist die ThreadSetting Property read-/writeable: This read-write property sets and returns a member of the FeaturePropertyConstants constant set to specify the thread setting type for an associated Hole object. Valid values are igRegularThread, igStraightPipeThread, or igTaperedPipeThreadSetting. Syntax Object.ThreadSetting In der Konstantenliste ist die entsprechende Konstante allerdings nicht aufgeführt, demnach kann auch im Programm ein metrisches Regelgewinde nicht in ein konisches Rohrgewinde geändert werden. Ist das vielleicht ein Bug? Schönes WE Viele Grüße Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 200 Registriert: 19.11.2004
|
erstellt am: 19. Jan. 2007 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für Mrole
Hallo Roland, die Konstante heißt wohl "igTaperedPipeThread" statt "igTaperedPipeThreadSetting". Die Auflistung der Konstantenwerte in der Hilfe ist unvollständig. Aber mit dem Objektbrowser lässt sie sich finden, wenn man entweder im Projekt einen Verweis auf SolidEdgePart oder SolidEdgeConstants vorgenommen hat (zumindest unter SE V19). Wünsche allen auch ein schönes WE!
------------------ Viele Grüße, Wolfgang Kunert www.wksyspro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mrole Mitglied
Beiträge: 118 Registriert: 02.04.2003
|
erstellt am: 24. Jan. 2007 08:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Herr Kunert, vielen Dank für den Hinweis, die Änderung in ein konisches Gewinde funktioniert, wenn ich zusätzlich die Einheit auf Inch umstelle. Allerdings kann ich die Gewindelänge nicht richtig einstellen, bzw. wird die Gewindelänge nicht automatisch mit der Gewindebezeichnung angezogen, so wie es bei der manuellen Erstellung funktioniert... Die Gewindelänge wird wohl in mm eingelesen, jetzt hab ich das Problem, dass der Wert bei der Umstellung der Einheit nicht auf die richtige Länge in Inch umgewandelt wird. Können Sie das Problem vielleicht nachvollziehen? Viele Grüße Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|