Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Struktur der Baugruppe scannen

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:  Struktur der Baugruppe scannen (2002 mal gelesen)
Valser09
Mitglied



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

Beiträge: 62
Registriert: 16.07.2009

erstellt am: 18. Mrz. 2010 14: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

Hallo,
nachdem nun der erste Schritt in die Programmierung gelungen ist....stellt sich auch folgendes Problem.
Ich habe ein Makro geschrieben, was prüft ob ein CATPart geöffnet ist.
Falls dies der Fall ist, wird geprüft ob das Part auch den Namen "Stock.CATPart" hat.
Nun möchte ich aber folgendes:
Es soll auch eine Baugruppe geöffnet sein können mit dem "Stock.CATPart" und das Makro soll dieses auch ansprechen können. Problem, die Baugruppe ändert ihren Namen - das "Stock.CATPart" heisst immer gleich.
Zweite Frage: Ich steuer hier Parameter an - also Parameters im Strukturbaum mit deren item-Nummer.
z.B. CATIA.ActiveDocument.Part.Parameter.Item(41).Value.
Gibt es nicht die Möglichkeit diesen Parameter aus dem Strukturbaum zu lesen???
Ich finde diesen über einen Watch nicht - nur unter dem Pfad entdecke ich ihn - aber über die Item(i)-Nummer ihn anzusprechen finde ich gefährlich....

Ideen & Hilfe???

Grüssle und vielen Dank
Fabian, der so laaaangsam einen ganz kleinen Schimmer hat!!!

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 18. Mrz. 2010 15:24    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 Valser09 10 Unities + Antwort hilfreich

Hallo Fabian,

wenn du schon mit der Watch-List arbeitest, hast du sicher schon bemerkt, dass du alle Sub-Elemente eines Products per Item("Test.CATPart") ansprechen kannst.
Alternative: Über eine Schleife alle Item-Elemente abfragen und mit dem gesuchten Namen vergleichen.

Beispiele hierzu gibt es genügend im Forum.

Zu deiner zweiten Frage gibt es auch Beispiele im Forum.
Hier kannst du den Parameter auch über den Namen ansprechen, wenn du weisst wie er heißt und in welchem Part er sich befindet.
Oder alternativ ebenfalls über eine Schleife alle Parameter durchsuchen und den gesuchten Namen abfragen.

Grüsse Dominik

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

Valser09
Mitglied



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

Beiträge: 62
Registriert: 16.07.2009

erstellt am: 18. Mrz. 2010 16:54    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 Dominik,
du meinst nach dem Motto:

For Each item (parameter) in CATIA......Stock.CATPart.Relations
If TypeOf item Is ....NameOf "Laenge_1" then
...

oder???
checke es eben noch nicht so ganz...

Grüssle und vielen Dank schon mal,
Fabian

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

Valser09
Mitglied



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

Beiträge: 62
Registriert: 16.07.2009

erstellt am: 18. Mrz. 2010 17:26    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

Was mich verwirrt:
Wenn ich nen watcher anlasse komme ich in ner Baugruppe die wie folgt aussieht:
Prod_1
  Prod_2
    Not_Stock.CATPart
    Stock.CATPart (das Richtige)

mit ner For Each Schleife auf folgenden Watcher:
"For Each oItem in oProducts
  If oItem.Application.Documents.Items.Name = "Stock.CATPart" then...."


oSel --> Application --> Documents --> Item 4 --> Name: "Stock.CATPart"
Aber irgendwie bekomme ich es nicht sauber gesucht bzw. dann übergeben...

Hilfe???

Grüssle

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 19. Mrz. 2010 08: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 Valser09 10 Unities + Antwort hilfreich

Hallo Fabian,

alternativ lässt sich dein Problem auch über eine Suchabfrage lösen:
http://ww3.cad.de/foren/ubb/Forum137/HTML/002234.shtml#000008

Der direkt Zugriff sieht ungefähr so aus:

Code:
Set productDocument1 = CATIA.ActiveDocument       
Set product1 = productDocument1.Product     
Set products1 = product1.Products       
Set product2 = products1.Item("Stock.CATPart") 
msgbox product2.partnumber


Deine Schleife kann auch so aussehen:

Code:
Set productDocument1 = CATIA.ActiveDocument
Set product1 = productDocument1.Product
Set products1 = product1.Products
For ii = 1 To products1.Count
    Set product2 = products1.Item(ii)
    msgbox product2.name
Next

Grüsse Dominik

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

Valser09
Mitglied



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

Beiträge: 62
Registriert: 16.07.2009

erstellt am: 19. Mrz. 2010 11:25    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

Hey Dominik,

vielen Dank schon mal....werde es gleich versuchen & Dir berichten!
Hoffe das klappt, somit scheint der Fehler bei der Deklaration von Set zu liegen.

Grüssle & Danke,
Fabian

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

Valser09
Mitglied



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

Beiträge: 62
Registriert: 16.07.2009

erstellt am: 22. Mrz. 2010 10:50    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

So jetzt wird wenigstens das Stock.1 selektiert.
Aber irgendwie will es nicht so recht klappen, dass nun das selektierte Part auch für die weiteren Operationen verwendet wird....weiss net warum.
Habe es schon mit einer Function versucht - ohne Erfolg....
Ideen?

Grüssle Fabian

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 22. Mrz. 2010 18:25    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 Valser09 10 Unities + Antwort hilfreich

Hallo Fabian,

wie sieht dein bisheriger Code aus?
Und hättest du vielleicht ein Beispiel (Product-Struktur)?

Grüsse Dominik

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

Valser09
Mitglied



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

Beiträge: 62
Registriert: 16.07.2009

erstellt am: 23. Mrz. 2010 08:37    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


cad_1.jpg

 
hier mal das Skript bzw. ein Teil....
Interessant ist der Bereich mit '*******' markiert!
Das Makro läuft ja durch die Baugruppe und findet das Teil.
Aber der Name lautet dann immer z.B. "CATIASelection28"...
Anbei auch ein Bild der vereinfachten Struktur...
Wie kann ich das Teil suchen und dann sauber an die nachfolgenden Prozesse übergeben?

Grüsse & vielen Dank,
Fabian

'----Allgemeiner Teil----
'Alte Werte - bzw. momentanen Werte
Dim x_min_alt, y_min_alt, z_min_alt As Integer
Dim x_max_alt, y_max_alt, z_max_alt As Integer

'Neue Werte - aktuell zu setzenden Werte
Dim x_min_neu, y_min_neu, z_min_neu As Integer
Dim x_max_neu, y_max_neu, z_max_neu As Integer

'Namensvariable - hier wird der Name reingeschrieben
'z.B. Stock.CATPart oder ...
Dim chName As String

'TXT-String Variable
Dim txtOutput As String

'Produkt und Partvariable
Dim actPart As selection
Dim actProd As ProductDocument
Dim selection As selection

'Ruft das Fenster auf und sucht das Stock.1 (CATPart)
Sub CatMain()
'**********
Set actProd = CATIA.ActiveDocument
Set selection = actProd.selection
selection.Clear

selection.Search ("Name='Stock.1'& CATProductSearch.Part,all")

Set actPart = selection

MsgBox actPart.Name
'frmDefinition_Stock.Show
'**********
End Sub

'Durchsucht das aktive Dokument (Baugruppe) auf ein
'Part mit dem Namen "Stock"
Function actPartSet(ByRef CatDoc As Document) As selection
                                                                                                                         
        Dim actProd As ProductDocument
        Set actProd = CATIA.ActiveDocument
       
        Dim selection As selection
        Set selection = actProd.selection
        selection.Clear
       
        selection.Search ("Name='Stock.1'& CATProductSearch.Part,all")
       
        Set actPartSet = selection
        'CATIA.ActiveDocument.selection.Search
        '("Name='Stock.1'& CATProductSearch.Part,all")
End Function

'Liest die Daten aus dem Stock.CATPart aus
Sub Auslesen(x_min_alt, y_min_alt, z_min_alt, x_max_alt, y_max_alt, z_max_alt)

chName = "Stock.CATPart"

'Ueberprüft ob das aktive Dokument ein CATPart ist
If isPart(CATIA.ActiveDocument) = False Then
  MsgBox ("Es ist kein CATPart geöffnet - bitte das Stock.CATPart öffnen")
  Exit Sub
End If

'Ueberprüft ob das aktive CATPart "Stock" heisst
If Not CATIA.ActiveDocument.Name = chName Then
  MsgBox ("Das geöffnete und aktive Part heisst nicht Stock.CATPart - bitte öffnen")
  Exit Sub
End If

'Ruft den Namen des Partes auf
'Call MsgBox(CATIA.ActiveDocument.Name)

'Setzt die Variablen den Variablen des Partes gleich
x_min_alt = CATIA.ActiveDocument.Part.Parameters.Item(41).Value
y_min_alt = CATIA.ActiveDocument.Part.Parameters.Item(42).Value
z_min_alt = CATIA.ActiveDocument.Part.Parameters.Item(43).Value

x_max_alt = CATIA.ActiveDocument.Part.Parameters.Item(44).Value
y_max_alt = CATIA.ActiveDocument.Part.Parameters.Item(45).Value
z_max_alt = CATIA.ActiveDocument.Part.Parameters.Item(46).Value

End Sub

'Ist das vorhandene Dokument ein Objekt vom Typ Catpart
Function isPart(ByRef CatDoc As Document) As Boolean
  isPart = TypeOf CatDoc Is PartDocument
End Function

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