| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: Steuernde Parameter aus einer Teilefamilie auslesen (2506 mal gelesen)
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 12. Nov. 2009 09:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich versuche per API die steuernden Parameter einer Teilefamilie auszulesen und bekomme es nicht richtig hin. Modell: Ein einfacher Zylinder, bei dem die Höhe über eine Variable gesteuert werden kann. Die steuerende Variable habe ich V100 genannt. Ich habe drei Member mit unterschiedlichen Höhen ausgeprägt (und auch auf Dateiebene generiert). Code: --> eigentlich verwende ich c#, aber hier mal in VB, da dies wohl mehr Leute verwenden: Dim doc As SolidEdgePart.PartDocument Set doc = m_SEapp.ActiveDocument Dim famMembers As FamilyMembers Set famMembers = doc.FamilyMembers Dim famMem As FamilyMember For Each famMem In famMembers Dim i As Integer For i = 1 To famMem.VariableCount Dim nVal As Object Set nVal = famMem.Variable(i) Dim numDim As Long Dim allDimensions() As Object famMem.GetDimensions numDim, allDimensions If nVal.Type = igDimension Then Dim dimObj As SolidEdgeFrameworkSupport.Dimension Set dimObj = nVal Dim dblVal As Double dblVal = dimObj.value Dim dispName As String dispName = dimObj.VariableTableName End If Next Next
Mein Problem ist jetzt, dass ich damit zwar die Variable finde, diese aber scheinbar immer den Wert des Muttermodels(Generic) hat. Ich bekomme nie den Wert für die jeweilige Ausprägung. Mach ich es generell falsch, oder funzt das einfach nicht? Ich habe V20 SL15 verwendet. Danke Kricher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Nov. 2009 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für Kricher
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 12. Nov. 2009 11:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Arne, da bekomme ich wie erwartet nur den Wert für das Generic selbst! Verwendet das überhaupt jemand? Im Moment muss ich von einem Bug in SE ausgehen. Schade finde ich auch, dass ich nicht über die Member auf die Tabelleninformation für das jeweilige Member zugreifen kann. Nebenbei gefragt, wieso referenziert ein Generic eigentlich seine Member (anders herum verstehe ich das ja). Das finde ich verwaltungstechnisch (PDM) wirklich übel! Ich werde mir das ganze mal in der ST2 anschauen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Nov. 2009 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Kricher
Es wird in beide Richtungen referenziert. Sonst wäre es nicht möglich beim "Teil ersetzen" erstmal die anderen Familienmitglieder angeboten zu bekommen. Der Master weiß ja, was generiert ist und ob es aktuell ist. Das das PDM-Seitig nicht so leicht abzubilden ist, will ich nicht bestreiten. Aleridngs weiß ein PDM ja immer, wo wleches Teil ist. Ohne PDM ist es schwieriger, weil der Master auch nicht verschoben werden sollte. Mir fehlt leider etwas die Zeit, die Variblen für Dich zu testen. Ich muss hier noch was fertig machen und dann Samstag nach NZ. ------------------ APeters@BSS-Online.de
[Diese Nachricht wurde von Arne Peters am 12. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 12. Nov. 2009 11:47 <-- editieren / zitieren --> Unities abgeben:
Dennoch vielen Dank für Deine Mühe. Hoffentlich hat noch jemand einen anderen Einfall. Im Kontext von PDM macht sowas aus zweierlei Hinsicht Probleme (für jene die es Interessiert): 1) Baugruppe mit Referenz auf das Member wird aus PDM geladen --> Da das Member auf sein Generic verweist und dieses wiederum auf alle anderen Member würden unter normalen Umständen erst mal alle Member mitgeladen werden, obwahl diese ja eigentlich nicht im Kontext der BG verbaut sind. 2) Freigabe (Workflow in PDM) eigentlich nicht korrekt möglich, weil ja in der regel ein Modell nicht freigegeben werden kann, wenn nicht auch die referenzierten Modelle freigegeben sind! da hier referenztechnisch ein Kreis besteht, ist dies ja eigentlich nicht möglich! Läßt sich natürlich alles umgehen, ist aber eben unschön. Meiner Meinung nach ist weniger manchmal mehr
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Nov. 2009 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für Kricher
Punkt 1 ist ein Problem. Ich habe das beim kunden auch schon erlebt, wen man einfach nur mit dem Revision-Manager kopieren möchte. Zumal der Master dann evtl. Pfade drinstehen hat, die nicht verfügbar sind. Das ist tatsächlich MIST. Mt RevisionManager und Programm könnte man da m.W. an der richtigen Stelle bremsen. Da lässt sich programmieren, bei welcher Art von Link da schluss ist. Ich hatte sowas auch schon "Baugruppe hat Rohr gehört zu Baugruppe hat Rohr gehört zu Baugruppe..... ------------------ APeters@BSS-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 12. Nov. 2009 11:59 <-- editieren / zitieren --> Unities abgeben:
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 12. Nov. 2009 12:02 <-- editieren / zitieren --> Unities abgeben:
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Nov. 2009 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für Kricher
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 12. Nov. 2009 12:11 <-- editieren / zitieren --> Unities abgeben:
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Nov. 2009 12:31 <-- editieren / zitieren --> Unities abgeben: Nur für Kricher
Ja genau. Nicht mehr von der Familie. ------------------ APeters@BSS-Online.de Ps.: Ich bin kein Entwickler. Ich programmiere nur. [Diese Nachricht wurde von Arne Peters am 12. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 12. Nov. 2009 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für Kricher
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 13. Nov. 2009 08:53 <-- editieren / zitieren --> Unities abgeben:
Dank Arne hab ich noch mal geschaut und wohl auch eine Lösung gefunden. Scheinbar wurde die jeweilige Variablendefinition (also von welchen Typ usw. eine Variable ist) von den Werten getrennt. Keine Ahnung wozu ich dann die Value-Eigenschaft in der Variablendefinition habe (und was das für ein Wert ist????) Mit nachfolgendem Code bekomme ich jetzt zumindest den Wert einer jeden Variablen:
Code:
Dim doc As SolidEdgePart.PartDocument Set doc = m_SEapp.ActiveDocument Dim famMembers As FamilyMembers Set famMembers = doc.FamilyMembers Dim famMem As FamilyMember Dim i As Integer For i = 1 To famMembers.count Set famMem = doc.FamilyMembers.Item(i) Dim k As Integer For k = 1 To famMem.VariableCount Dim dblVal As Double dblVal = famMem.value(k) Next Next
Kombiniert mit dem vorherigen Code bekommt man dann scheinbar mit der gleichen Laufvariable (k) den Variablennamen zu den Werten (muss ich aber noch testen, weil wenn dem nicht so ist, hat man wohl keine Möglichkeit einen Wert einer Variablen zuzuordnen). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 13. Nov. 2009 09:43 <-- editieren / zitieren --> Unities abgeben:
|
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2020) SolidWorks (2014 - 2020) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 17. Nov. 2009 11:27 <-- editieren / zitieren --> Unities abgeben:
Soooooo, und jetzt bin ich bei den Baugruppenfamilien und schon ist der Spaß vorbei Eine völlig andere interne Modellierung für das eigentlich gleiche Problem (ET-Familien)! Ich werd noch bekloppt. Evtl. sollte mal das eine Proggyteam anschauen was das andere verbrochen hat, um sowas wie Einheitlichkeit zu schaffen. Im Resultat finde ich aber beide Umsetzungen grottig. Über die Occurrences kommt man nicht direkt auf die Membereingeschaften. Über die AssemblyFamilyMember kommt man nicht auf die Parameter, sondern muss die Collection AssemblyFamilyMembers verwenden, wobei man den jeweiligen Member aktivieren muss usw. usw. Der Dateinamen ist mit dem Membernamen VERSEUCHT (warum nicht einfach ein Property im AssemblyDocument für den Namen???). Musste mich mal abreagieren, ist aber meiner Meinung nach echter Bockmist. Ist mir schleierhaft, wer so ein undurchschauberen mis.. verzapft. Ich bin von der API in einigen Bereichen mittlerweile echt genervt. Du machst die Sache A und willst später die fast gleiche Sache B umsetzen und das erfordert dann oftmals eine erneute Erfindung des Rades Geschmeidig geht anders! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |