Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  c# SelectionSet mit Item aus Unterbaugruppe

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge
Autor Thema:  c# SelectionSet mit Item aus Unterbaugruppe (2536 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: 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: 05. Jan. 2010 16:09    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 Ihr und frohes neues Jahr!

Habe mal eine Frage zu SelectionSet im Kontext von c#.
Ich bekomme es einfach nicht hin ein Dokument über das SelectionSet zu bestimmen, sobald es sich in einer Unterbaugruppe (also beispielsweise B1->B2->P1) befindet.
Ich habe in so einem Fall B1 in SE geöffnet und P1 ausgewählt (also in Edgebar selektiert).
Über VB und VB.Net bekomme ich es hin (haben am Ende eine Occurrence-Instanz und somit den Dateinamen)!
Hat das mal jemand gemacht und kann mir da Tips geben.
Das Problem ist letztlich, das es sich in so einem Fall um eine Instanz vom Typ igReference (ich meine hier die Instanz im SelectionSet) handelt, die ich nur über die Methode Object bekomme.

Ich habe folgendes Versucht und bekomme dann eine Zugriffsverletzung:

Code:

object oSelObj = oSelSet.Item(i);
SolidEdgeFramework.Reference refObj = null;
refObj = (SolidEdgeFramework.Reference)oSelObj;
object test = refObj.Object;

Bei der letzten Methode knallt es dann mit einer Zugriffsverletzung!
Leider gibt mir die nachfolgende Methode
oSelSet.Item(i);
immer eine Instanz vom Typ Object zurück. Letztlich möchte ich nur Instanzen vom Typ:
igPart, igSubAssembly und igReference
verwenden.
Kann man irgendwie (Reflection?) den Typ von diesen Objects bestimmen?
Im Moment mache ich einfach einen Cast in den Typ, gekapselt durch Try-Catch.

Hoffe jemand kann mir da weiterhelfen.

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: 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: 05. Jan. 2010 18:01    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

Habe grade bemerkt, dass das ganze immer für die erste Verbauung funzt!
Also beispielsweise:
B1->B2
      ->P1
      ->P2

Selektiere ich P2 habe ich eine Zugriffsverletzung, wähle ich P1 funzt es???????

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: 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: 05. Jan. 2010 18:34    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 hier mal ein kurzes Beispiel in VB (nicht so auf die Form schauen, ist nur mal eben hingeknallt  )

Code:

Private Sub cmdTest_Click()

    On Error Resume Next

    Dim oSelSet As SolidEdgeFramework.SelectSet
    Set oSelSet = m_SEapp.ActiveSelectSet
    Dim i As Integer
    For i = 1 To oSelSet.count
        Dim nType As Long
        nType = oSelSet.Item(i).Type
        If nType = igReference Then
            Dim refObj As Reference
            Set refObj = oSelSet.Item(i)
            Dim oOcc As SolidEdgeAssembly.Occurrence
            Set oOcc = refObj.object
            MsgBox "Filename = " + oOcc.OccurrenceFileName
        End If
    Next
       
    If Err Then
        Err.Clear
    End If

End Sub


Das Beispiel funzt nur, wenn ein Dokument in einer Referenzebene > 1 selektiert wird!!!
Warum geht es nicht in c# 

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: 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: 06. Jan. 2010 15:08    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

Hochschieb 
Keiner eine Idee      

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: 7321
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 06. Jan. 2010 16:10    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

Hier macht glaube ich keiner C.
Was meinst Du mit Referenzebene > 1 ?
Was ist mit Suboccurrances?

------------------
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: 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: 06. Jan. 2010 17:05    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

Hi Arne,

Zitat:

Was meinst Du mit Referenzebene > 1 ?


Alles was sich nicht direkt unterhalb der Hauptbaugruppe, sondern n-Ebenen Tiefer befindet.

Soweit ich weiß handelt es sich bei allen Objekten (zumindest Dokumente) in der SelectionSet die in Referenzebenen >1 Verbaut sind, um Referenz-Instanzen und nicht um Suboccurrances.
Suboccurrances sind es nur, wenn man durch die Struktur über Occurrences traversiert. Wie gesagt, in anderen Sprachen (auch in VB.Net) kann ich auch mit einem Cast nach Reference auf die Instanzen zugreifen. Nur mit c# bekomme ich es nicht hin, wenn ich innerhalb einer beliebigen Unterbaugruppe ein Dokument auswähle, welches nicht die erste Verbauung ist!

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: 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: 08. Jan. 2010 09:21    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

Hi Ihr,

habe das Problem endlich gelöst 
Letztlich ist es kein Problem von c# und dem Code-Abschnitt gewesen, sondern von Aufrufen in einer vorherigen Routine. Da geht dann was in der SelectionSet kaputt.
Also, ich kann bei c# bleiben 

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

lb-racer
Mitglied
Techniker


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

Beiträge: 450
Registriert: 13.12.2005

System: ST10 MP12 auf Win10 Pro x64
CPU: i7-10750H
Grafik: RTX 3080 16GB Laptop
RAM: 32GB

erstellt am: 01. Aug. 2013 18:14    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

Danke vielmals für den Code, da muß man mal dahintersteigen, wenn man nicht täglich damit zu tun hat ...

bei mir ist soll der User ein Vorkommnis (prt oder asm) einer beliebigen Ebene selektieren, dann soll der Dateiname ausgegeben werden.

habe den Code ergänzt, um auch Vorkommnisse der 1.Ebene zu bekommen:

Code:
    Set objSEApp = GetObject(, "SolidEdge.Application")
   
    Dim oSelSet As SolidEdgeFramework.SelectSet
    Set oSelSet = objSEApp.ActiveSelectSet
   
    Dim i As Integer
    For i = 1 To oSelSet.Count
        Dim nType As Long
        nType = oSelSet.Item(i).Type
        If nType = igReference Then
            Dim refObj As Reference
            Set refObj = oSelSet.Item(i)
            Dim oOcc As SolidEdgeAssembly.Occurrence
            Set oOcc = refObj.Object
            Dateiname = oOcc.OccurrenceFileName
        Else
            Dateiname = objSEApp.ActiveSelectSet(i).OccurrenceFileName
        End If
       
        UserForm1.tb_Status = "Dateiname: " & Dateiname
        DoEvents    'zum Refreshen
       
        Exit For    'nur 1 Objekt sinnvoll !!!
   
    Next i


weiß vielleicht jemand, wie ich mittels dem Dateinamen an eine benutzerdefinierte Eigenschaft rankomme ?

lg,
Matthias

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

wolha
Moderator
CAD - Consultant


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

Beiträge: 5563
Registriert: 30.01.2002

Win 10 Pro
Solid Edge 2023
CAMWorks
Primus PDM
FEMAP
Dynamic Designer
Teamcenter

erstellt am: 01. Aug. 2013 20:39    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

Hallo Matthias,


sollte über ein SEDocument aus der ObjOccurence.OccurrenceDocument kommen.

...

Set objSEDocument = objOccurrence.OccurenceDocument

und dann

über objSEDocument.properties(Gruppe).Item(ItemNr.).Value


zBsp:
strDocumentNumber = objSEDocument.properties("ProjectInformation").Item(1).Value

das ist jetzt nur so schnell aus dem Gedächtnis
sollte Dich aber auf die richtige Fährte bringen.

------------------
mfg

Wolfgang Hackl
CAD/CAM - Consult
http://www.cadcam-consult.com

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

lb-racer
Mitglied
Techniker


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

Beiträge: 450
Registriert: 13.12.2005

System: ST10 MP12 auf Win10 Pro x64
CPU: i7-10750H
Grafik: RTX 3080 16GB Laptop
RAM: 32GB

erstellt am: 02. Aug. 2013 13:04    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

Hi Wolfgang,

also so gehts bei mir in Excel VBA:

Code:
        Dim objPropertySets As SolidEdgeFileProperties.PropertySets
        Dim objProperties As SolidEdgeFileProperties.Properties
        Dim objProperty As SolidEdgeFileProperties.Property
        Set objPropertySets = New SolidEdgeFileProperties.PropertySets
        objPropertySets.Open Dateiname, False
        Set objProperties = objPropertySets.Item("Custom")
        Set objProperty = objProperties.Item("LBTEC_ID")
        LBTEC_ID = objProperty.Value
        objPropertySets.Close
        Set objPropertySets = Nothing

vielen Dank und schönes Wochenende 

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)2023 CAD.de | Impressum | Datenschutz