Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Auslesen PartNunber auf unterschiedlichen Ebenen

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:  Auslesen PartNunber auf unterschiedlichen Ebenen (1229 mal gelesen)
Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 20. Mrz. 2019 14:12    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 zusammen,

ich möchte die PartNumber aller Parts im Products auslesen in einer Schleife und bin soweit, dass ich alle Parts finde und selektieren kann, wenn ich aber die PartNumber auslesen möchte schaffe ich es nur auf erster Ebene.

Das habe ich soweit:

        myProductDoc = myCatiaApp.ActiveDocument
        myProduct = myProductDoc.Product

        myProductDoc.Selection.Search("CATProductSearch.Part,all")
        myCountPart = myProductDoc.Selection.Count()

        'MsgBox(myCountPart)

        'mySelection = myProductDoc.Selection
     
        For x = 1 To myProductDoc.Selection.Count()
            myCatiaApp.StartCommand("Activate Terminal Node")
            myCatiaApp.StartCommand("Load")

            myName = myProductDoc.Product.Products.Item(x).Name  https://ww3.cad.de/foren/ubb/icons/icon8.gif
            --> Hier muss der Fehler liegen

        Next

THX
Grüße

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

Big-Fish
Mitglied



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

Beiträge: 13
Registriert: 23.04.2014

erstellt am: 20. Mrz. 2019 14: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 Tweety79 10 Unities + Antwort hilfreich

Hallo Tweety79,

probiers mal mit dem Code Schnipsel:

Ist allerdings C#,die for Scheife ist aber fast identisch mit vb.net/vba. Die Variabelen musst du noch anpassen.

Am Ende schreibt er die ganzen Filenames aller Parts im Produkt in eine Excel untereinander(dazu fehlen hier ein paar Zeilen). Ich weiss nicht ob dir die Filenames oder die Partnumbers reichen.

Ich denke es liste auch alle dokumente im Catia auf. Kannst du aber auch auf die Dokumente im Assambly beziehen.

Code:

int anzahl = catiaapp.Documents.Count;

            for (int i = 1; i < anzahl;  i++ )
            {
                //MessageBox.Show(i.ToString());
                //MessageBox.Show(catiaapp.Documents.Item(i).FullName);
             
                var dokument = catiaapp.Documents.Item(i);
                string name = dokument.FullName;
                string pfad = dokument.Path;
             
                string Dateiname = name.Substring(pfad.Length+1);

                excel.Cells[i, 1] = Dateiname;


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

Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 20. Mrz. 2019 15:42    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 Big-Fisch,

ich jag den Code durch den Converter nach vb.NET.
Danke schon mal, muss ich ausprobieren.

Ich frage mich, ob die Parts wirklich auf allen Ebenen gefunden werden?

var dokument = catiaapp.Documents.Item(i) - sieht auf den ersten Blick nach Ebene 1 aus.

Grüße

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

Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 20. Mrz. 2019 16:06    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 Big-Fish,

habe es getestet. Ich erreiche alle Ebenen, aber auch alle Dokumente, also auch Products, nicht nur gewünschte Parts.

Ich versuche eine Abfrage dazwischen zu schalten, ob das Dokument ein Part ist.
Vielleicht kann ich die Parts so aussieben.

Wie der andere Weg geht, von vorn herein nur Parts abzugreifen, wüsste ich aber auch gerne.
Jemand einen Hinweis? Bestimmt irgendwas mit ReferenceProduct.Part ? Ich krieg's gerade nicht zusammen.

THX!!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 20. Mrz. 2019 18: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 Nur für Tweety79 10 Unities + Antwort hilfreich

Servus

Entweder mit einer rekursiven Schleife über die Products-Collection (zu rekursiv oder Treewalk oder ProdScan solltest du was finden).
Von einer Instanz sollte .ReferenceProduct.Parent das zugehörige Dokument sein (zB PartDocument)
Wenn du mit myProductDoc.Selection.Search gesucht hast, warum arbeitest du dann nicht die selektierten Elemente per Schleife ab?
Hinweis: In Documents-Colletion sind alle geöffneten Dokumente enthalten (zB auch in anderen Fenstern)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 21. Mrz. 2019 10:23    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 Bernd,

die Zeile my.ProductDoc.Selection ist auskommentiert.

Genau das wollte ich ja in der Schleife abarbeiten, bekomme es aber nciht hin.

Wie sieht das dann aus?

Gruß

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Mrz. 2019 14:35    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 Tweety79 10 Unities + Antwort hilfreich

Servus

Willst du jetzt die Schleife abarbeiten?

Code:
myProductDoc.Selection.Search("CATProductSearch.Part,all")
myCountPart = myProductDoc.Selection.Count()
  For x = 1 To myCountPart
  MyPart = myProductDoc.Selection.Item2(x).Value
  MsgBox MyPart.PartNumber
next
Wie wäre es wenn mal öfters das Watchfenster oder die Doku nutzt.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 22. Mrz. 2019 17:40    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

Servus,

danke Bernd.

Ich bin inzwischen weiter; ich habe zwei Baugruppen offen und durchsuche BG B nach PartNumber aus BG A. Wenn PartNumber nicht gefunden wird, wird sie in eine ListBox geschrieben. So der Plan.

Hier mein Code dazu:

myCatiaApp.Windows.Item(1).Activate()

        mySelection = myCatiaApp.ActiveDocument.Selection
        mySelection.Search("CATProductSearch.Part,all")
        myCountPart = mySelection.Count

        For i = 1 To myCountPart


            myPartNumber = mySelection.Item(i).Value.ReferenceProduct.Name
            'ReDim Preserve strPartNumberArray(i)
            'strPartNumberArray(i) = myPartNumber

            mySelectionB = myCatiaApp.Documents.Item(2).Selection
            mySelectionB.Search("Name='myPartNumber*',sel")

            If mySelectionB.Count = 0 Then

                ListBoxA_o_G.Items.Add(myPartNumber)

            End If

            myCatiaApp.Windows.Item(1).Activate()

        Next

Der Unterschied der beiden BG liegt in einem Part - dessen PArtNumber allein sollte in der ListBox erscheinen, es erscheinen aber alle. Keins wird in BG B gefunden.

Ist vielleicht an diesen beiden Zeilen was verkehrt?:

            mySelectionB = myCatiaApp.Documents.Item(2).Selection
            mySelectionB.Search("Name='myPartNumber*',sel")

Danke und Grüße

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

Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 22. Mrz. 2019 18:28    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

Ich habe auch den Serach umgeändert auf:

mySelectionB.Search("(Name='" & myPartNumber & "'),all")

Funktioniert auch nicht ...

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 22. Mrz. 2019 18:40    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 Tweety79 10 Unities + Antwort hilfreich

Servus

Mit deiner Einschätzung an was es liegt könnte, liegst du richtig. Auch deine Verbesserung beim Filter geht in die richtige Richtung.

Ist Documents.Item(2) wirklich die zweite Baugruppe? Das könnte ja auch ein Einzelteil der ersten Baugruppe sein. (die Documents-Collection enthält alle geladenen Dokumente).
Da es nur eine Selektion gibt, ist nach der Suche der Inhalt der mySelection auch weg. Somit fällt die Schleife ab dem zweiten Durchlauf auf die Nase.

Ich würde eher so vorgehen: Suche in der 1. Baugruppe durchführen -> Namen (PartNumber sprichst du in deine Code nicht an) in Array/Liste schreiben (doppelte entfernen) -> in die zweite Baugruppe wechseln dort nach den Namen suchen.
Den Filter würde ich dann dort so weit wie möglich einschränken zB:

Code:
mySelectionB.Search("CATProductSearch.Part.Name=" & sNameAusListe & ",all")

Falls die Baugruppen nur eine Ebene haben wäre vielleicht auch eine Schleife über die Products-Collection einfacher/schneller.

Gruß
Bernd

PS: Bitte Code in entsprechende Tags posten.

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Tweety79
Mitglied
Entwicklung Automotive


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

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 26. Mrz. 2019 14:23    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

Servus,

könntest Recht haben ...
Wie schaufelt man die Namen in ein Array?

Grüße

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

Big-Fish
Mitglied



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

Beiträge: 13
Registriert: 23.04.2014

erstellt am: 26. Mrz. 2019 15:23    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 Tweety79 10 Unities + Antwort hilfreich

mySelectionB ist dein Array.

Eine For Schleife dient zur Abarbeitung eines Arrays.
Das Array hat "mySelectionB.Count2()" Zeilen und arbeitet jede Zelle mit Namen n nacheinander ab.

Du kannst jederzeit auf eine spezielle Zelle (mit Namen "n")zugreifen.

Code:
for n = 1 to mySelectionB.Count2()

Aktion

next


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