Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Instanzen auflisten in Excel

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:  Instanzen auflisten in Excel (1664 mal gelesen)
moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Mai. 2012 14:36    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,
habe mir ein Makro aus dem Form an meine Bedürfnisse angepasst um das Gesamtgewicht meiner Baugruppe zu ermitteln.
Soweit liest das Makro alle Parts und Produkte aus.(Parameter)
Leider werden mehrfach verbaute Parts immer nur einmal ausgelesen,so das mein Messergebniss verfäscht wird.
Wie kann ich alle Instanzen mit den jeweiligen Parametern auch nach Excel schreiben lasen?

hat jemand Rat.
Bitte um Nachsicht. Bin Programmieranfänger.

Code:
Sub CATMain()

Dim i As Integer
Dim prod As Product
Dim m As Integer


' Exel öffnen
Dim objXL
On Error Resume Next
Set objXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Err.Clear
Set objXL = CreateObject("Excel.Application")
Set oAWBook = objXL.Workbooks.Add
End If
On Error GoTo 0
objXL.Visible = True

'Berechnung
m = 12 ' Zeile in Exel
i = 0
p = 0

For i = 1 To CATIA.Documents.Count

On Error Resume Next
If (Right(CATIA.Documents.Item(i).Name, 7) = "CATPart") Then

'soll bessere Lösung sein funktioniert noch nicht 'If TypeName(CATIA.Documents.Item(i).Name) = PartDocument

  Set prod = CATIA.Documents.Item(i).Product

  'Partname kann auch ausgegeben werden
  objXL.Cells(m, 2).Value = prod.PartNumber

  objXL.Cells(m, "a").Value = prod.Parameters.Item("Gewicht").ValueAsString
  objXL.Cells(m, "b").Value =prod.Parameters.Item("Benennung").ValueAsString
  p = p + 1

  If Err.Number <> 0 Then
Err.Clear

End If

    m = m + 1
  End If

Next

MsgBox "Es sind " & i - p & " Produkts und " & p & " Parts  geöffnet", , "Info"

End Sub


------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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: 03. Mai. 2012 17: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 Nur für moppesle 10 Unities + Antwort hilfreich

Servus
Das problem an deinem Makro ist, dass du nur die Collection der Dokumente durcharbeitest und nicht die Einzelteile/Unterbaugruppe des Produkts.
Versuch es mal so (ungetestet):
Code:
Sub CATMain()

Dim i As Integer
Dim RootProd As Product
Dim prod As Product
Dim m As Integer


' Exel öffnen
Dim objXL
On Error Resume Next
Set objXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Err.Clear
Set objXL = CreateObject("Excel.Application")
Set oAWBook = objXL.Workbooks.Add
End If
On Error GoTo 0
objXL.Visible = True

'Berechnung
m = 12 ' Zeile in Exel
i = 0
p = 0

Set RootProd = Catia.ActiveDocument.Product
For i = 1 To RootProd.Products.Count

On Error Resume Next
Set prod = RootProd.Products.Item(i)

If TypeName(prod.ReferenceDocument) = "PartDocument" then

  'Partname kann auch ausgegeben werden
  objXL.Cells(m, 2).Value = prod.PartNumber

  objXL.Cells(m, "a").Value = prod.Parameters.Item("Gewicht").ValueAsString
  objXL.Cells(m, "b").Value =prod.Parameters.Item("Benennung").ValueAsString
  p = p + 1

  If Err.Number <> 0 Then
Err.Clear

End If

    m = m + 1
  End If

Next

MsgBox "Es sind " & i - p & " Produkts und " & p & " Parts  geöffnet", , "Info"

End Sub


Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Mai. 2012 21: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


Zylinder.7z.txt

 
Hallo Bernd,

jetzt bin ich aber stutzig.
meine Variante findet alle Parts und listet sie auf.

Code:

78825W01A_007 Hintere Abdeckung 9,98kg
78825W01A_006 Vordere Abdeckung 7,07kg
78825W01A_005 Gehäuse                 7,18kg
78825W01A_004 Kolbenstange         5,31kg
78825W01A_003 Kolben                 3,45kg
78825W01A_002 Gelenkflansch         6,78kg
78825W01A_001 Befestigungswinkel 4,83kg


Bei deiner Variante werden nicht alle aufgelistet.Zusätzlich finden sich Produkte denen fälschlicherweise Werte aus Parts zugewiesen werden (Z001 und Z002)   

Code:

78825W01A_001 4,83kg Befestigungswinkel
78825W01A_002 6,78kg Gelenkflansch
78825W01A_Z001 3,45kg Kolben
78825W01A_Z002 7,18kg Gehäuse

Ich versteh nur Bahnhof

Mein Problem ist, wenn ich nun z.B. die Kolbenstange zwei mal in meiner Produktstruktur habe,wird nur eines dafon aufgelistet.
Hab mal das Produkt angehängt.


------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!        

[Diese Nachricht wurde von moppesle am 15. Mai. 2012 editiert.]

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: 03. Mai. 2012 22: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 Nur für moppesle 10 Unities + Antwort hilfreich

Servus Uwe
Bei deiner Version werden direkt alle geöffneten Dokumente (also auch in Unterbaugruppen) geprüft und die Masse ausgelesen.
Bei meiner Variante wird dir Struktur des Produkt abgearbeitet, aber nur auf der ersten Ebene. Falls du die komplette Struktur benötigst muss du ein rekursives Makro verwenden (zB hier)

Zusätzlich ist in meinem Script noch ein grober Fehler bei der Dokmententyp-Überprüfng. Die Zeile müsste:
If TypeName(prod.ReferenceProduct.Parent) = "PartDocument" Then
heißen.

Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 03. Mai. 2012 editiert.]

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