Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Steuernde Parameter aus einer Teilefamilie auslesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Steuernde Parameter aus einer Teilefamilie auslesen (1794 mal gelesen)
Kricher
Mitglied
Entwickler


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

Solid Edge (ST6 - SE2019)
SolidWorks (2014 - 2019)
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Arne Peters an!   Senden Sie eine Private Message an Arne Peters  Schreiben Sie einen Gästebucheintrag für Arne Peters

Beiträge: 6369
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 12. Nov. 2009 11:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Kricher 10 Unities + Antwort hilfreich

Was ist mit der FamilyVariable?

------------------
APeters@BSS-Online.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Kricher
Mitglied
Entwickler


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

erstellt am: 12. Nov. 2009 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Arne Peters an!   Senden Sie eine Private Message an Arne Peters  Schreiben Sie einen Gästebucheintrag für Arne Peters

Beiträge: 6369
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 12. Nov. 2009 11:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Kricher 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

erstellt am: 12. Nov. 2009 11:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Arne Peters an!   Senden Sie eine Private Message an Arne Peters  Schreiben Sie einen Gästebucheintrag für Arne Peters

Beiträge: 6369
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 12. Nov. 2009 11:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Kricher 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

erstellt am: 12. Nov. 2009 11:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, Rohre aus XpressRoute gleiches Spiel.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Kricher
Mitglied
Entwickler


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

Solid Edge (ST6 - SE2019)
SolidWorks (2014 - 2019)
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Und "Mehrteiligerausschnitt" in BG.

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


Sehen Sie sich das Profil von Arne Peters an!   Senden Sie eine Private Message an Arne Peters  Schreiben Sie einen Gästebucheintrag für Arne Peters

Beiträge: 6369
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 12. Nov. 2009 12:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Kricher 10 Unities + Antwort hilfreich

Du schreibst die Teile in eine Collection oder Array und guckst, was schon drin ist.

------------------
APeters@BSS-Online.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Kricher
Mitglied
Entwickler


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

erstellt am: 12. Nov. 2009 12:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Redest Du jetzt von der Abarbeitung der Refernzstruktur für Zyklen?
Da verwende ich bereits eine Hashtable (c#) respektive eine Collection in VB.

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


Sehen Sie sich das Profil von Arne Peters an!   Senden Sie eine Private Message an Arne Peters  Schreiben Sie einen Gästebucheintrag für Arne Peters

Beiträge: 6369
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 12. Nov. 2009 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Kricher 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Arne Peters an!   Senden Sie eine Private Message an Arne Peters  Schreiben Sie einen Gästebucheintrag für Arne Peters

Beiträge: 6369
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 12. Nov. 2009 17:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Kricher 10 Unities + Antwort hilfreich

Guck Dir doch nochmal die Methoden zum Objekt an.

------------------
APeters@BSS-Online.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Kricher
Mitglied
Entwickler


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

erstellt am: 13. Nov. 2009 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

Solid Edge (ST6 - SE2019)
SolidWorks (2014 - 2019)
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nach den ersten Tests würde ich sagen, dass die Laufvariable für die Werte und die Variablendefinitionen synchron sind --> also alles ok 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Kricher
Mitglied
Entwickler


Sehen Sie sich das Profil von Kricher an!   Senden Sie eine Private Message an Kricher  Schreiben Sie einen Gästebucheintrag für Kricher

Beiträge: 261
Registriert: 10.09.2004

erstellt am: 17. Nov. 2009 11:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2019 CAD.de | Impressum | Datenschutz