Autor
|
Thema: Parameterausgabe im Product (1556 mal gelesen)
|
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 20. Apr. 2006 16:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Wer kann einen blutigem Anfänger auf die Sprünge halfen Möchte aus einem Geöffneten Product den Wert bestimmter Parameter (Auswerferlaenge und Ausdurch) aus einzelnen Parts ausgeben. Bei meinem Makro funktioniert es zwar aber es wird immer nur die Werte des zu erst gefundenen Parts Angezeigt. Wer ist so nett und kann mir sagen was ich falsch mache.. Language="VBSCRIPT"
Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Search "Name=Auswereferlaenge,all" Set oParameter = Selection1.Item(1).Value selection1.Search "Name=Ausdurch,all" Set Durch = Selection1.Item(1).Value For I = 1 to Selection1.Count MsgBox Durch.ValueAsString MsgBox oParameter.ValueAsString Next End Sub
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 20. Apr. 2006 22:29 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Hallo Berges, entschuldige, aber die Ausrede "blutiger Anfänger" laß ich in Deinem CODE nicht so einfach gelten. Etwas sollte man schon von den Grundzügen beherrschen oder über logisches Denken ausschließen können! Nun meine (bescheidenen) Verbesserungsvorschläge: Code: Language="VBSCRIPT"Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Search "Name=Ausdurch,all" Dim selection2 As Selection Set selection2 = productDocument1.Selection
selection2.Search "Name=Auswerferlaenge,all" Dim oParameter As String Dim Durch As String For I = 1 to Selection1.Count oParameter = Cstr(Selection1.Item(I).Value) MsgBox Durch Next For J = 1 to Selection2.Count
Durch = Cstr(Selection2.Item(J).Value) MsgBox oParameter Next End Sub
mfg, Lusilnie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 21. Apr. 2006 09:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie Danke für die netten Worte , aber ich habe mir die Code nur aus diesem Forum heruntergeladen und sie für meinen Zweck wieder zusammen gebaut. Leider bleibt das Programm bei der Zeile (oParameter = Cstr(Selection1.Item(I).Value)) mit einer Fehlermeldung hängen. Hast Du eine Ahnung warum. Für deine weitere Hilfe wäre ich dir sehr dankbar. Bis dann Berges
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexE78 Mitglied Ing.
Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 21. Apr. 2006 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Guten Morgen, kann jetzt zwar nicht sagen, warum die .Item-Funktion fehlschlägt, aber ich hoffe, ich kann trotzdem helfen. Dein ursprünglicher Code war schon fast richtig. Aber innerhalb der For-Schleife wurden die Werte für 'Durch' und 'oParameter' nicht neu zugewiesen. Die Zuweisung der beiden Werte muß in der Schleife stattfinden, z.B: selection1.Search "Name=Auswereferlaenge,all" For I = 1 to Selection1.Count Set Durch = Selection1.Item(I).Value MsgBox Durch.ValueAsString Next ... Noch ein Hinweis: Es bringt nichts, mit 'Set selection1 = productDocument1.Selection Set selection2 = productDocument1.Selection' zu arbeiten, da es pro Dokument IMMER NUR EINE SELECTION gibt. veränderst du selection1, ändert sich selection2 auch, da es sich jeweils um einen Verweis auf ein und dasselbe Objekt handelt. mfg Alex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 21. Apr. 2006 11:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Mit dem Vorschlag von AlexE78 komme ich auch nicht weiter. Ich bekomme immer nur den Wert des Parameters vom ersten gefundenen Part. Die weiteren Parts findet er zwar aber er liest den Wert nur vom ersten Part immer aus. Die Parameter haben unterschiedliche Wert z.b. 160 145,50 u.s.w. Der Parametername ist bei allen Parts gleich. Ich bekomme immer eine zwar so viele Dialogboxen wie Parts mit den Parametern existieren aber die Werte sind immer die gleichen (vom ersten Part). M.f.G. Berges
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 22. Apr. 2006 15:42 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Hallo Berges, der Fehler ist relativ simple, der Wert des Parameters ist nicht unter selection1.Item(I).Value sondern unter selection1.Item(I).Value.Value abgelegt. Deshalb gibt es die Fehlermeldung! Habe mal den Code erneut "in Form" gebracht, hoffe er hilft Dir: Code: Language="VBSCRIPT"Sub CATMain() Dim oParameter() Dim Durch() Dim productDocument1 As productDocument Set productDocument1 = CATIA.ActiveDocument Dim selection1 As selection Set selection1 = productDocument1.selection selection1.Clear selection1.Search "Name=Auswerferlaenge,all" Dim Imax As Integer Imax = selection1.Count ReDim oParameter(Imax) Dim I As Integer If Imax > 0 Then For I = 1 To Imax oParameter(I) = selection1.Item(I).Value.Value MsgBox oParameter(I) Next Else MsgBox "Element mit Namen 'Auswerferlaenge' nicht gefunden!" End If selection1.Clear selection1.Search "Name=Ausdurch,all" Dim Jmax As Integer Jmax = selection1.Count ReDim Durch(Jmax) Dim J As Integer If Jmax > 0 Then For J = 1 To Jmax Durch(J) = selection1.Item(J).Value.Value MsgBox Durch(J) Next Else MsgBox "Element mit Namen 'Ausdurch' nicht gefunden!" End If End Sub
Dabei werden die gefundenen Werte der Suche in ein Array oParameter(I) mit I=1...Gesamtanzahl geschrieben, um sie vielleicht später weiter zu verwenden. mfg, Lusilnie
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 24. Apr. 2006 10:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie Genau das ist es. Danke für deine Arbeit . Echt klasse diese Forum. Ich fände es gut wenn es hier eine Rubrik Userprogramme gäbe in den die Leute die es möchten Ihre Programme jeden User zu Verfügung stellen würde. Es würde m.e. die CADTA Gemeinde weiter bringen. m.f.G. Berges
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 27. Apr. 2006 18:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Habe mein Script noch mal geändert da ich aus dem Part was den Parameter Auswerferlaenge hat weitere Parameter ausschreiben möchte. Dieses funktioniert auch soweit bis ein Part kommt was diesen Parameter nicht hat. Wie kann ich das Part abfragen ob dieser Parameter vorhanden ist und dann eine If Schleife starten kann. Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim Name As String Dim oParameter As String Dim length1 As String Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Search "CATProductSearch.Part,all" Dim Imax As Integer Imax = selection1.Count ReDim oParameter(Imax) If Imax > 0 Then For I = 1 To Imax Name = selection1.item(I).Value.PartNumber Set documents1 = CATIA.Documents Set partDocument1 = documents1.Item(Name&".CATPart") Set length1=partDocument1.Part.Parameters.Item("Auswerferlaenge") oParameter=length1.ValueAsString MsgBox oParameter Set length1=partDocument1.Part.Parameters.Item("Ausdurch") oParameter=length1.ValueAsString MsgBox oParameter Set length1=partDocument1.Part.Parameters.Item("Ref") oParameter=length1.ValueAsString MsgBox oParameter Next End if End Sub Ich hoffe Ihr könnt mir helfen
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 01. Mai. 2006 21:18 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Hallo Berges, so eine Abfrage erfolgt zum Beispiel über das Prinzip "Fehler erlauben und auswerten". Habe mal Deinen CODE angepaßt:
Code: Sub CATMain()Dim productDocument1 As document Set productDocument1 = CATIA.ActiveDocument Dim Name As String Dim oParameter As String Dim oParameterArray() Dim length1 As Object Dim selection1 As selection Set selection1 = productDocument1.selection selection1.Search "CATProductSearch.Part,all" Dim Imax As Integer Imax = selection1.Count ReDim oParameterArray(Imax) If Imax > 0 Then For I = 1 To Imax Name = selection1.Item(I).Value.PartNumber Set documents1 = CATIA.documents Set partDocument1 = documents1.Item(Name & ".CATPart") On Error Resume Next Set length1 = partDocument1.Part.Parameters.Item("Auswerferlaenge") If Err = 0 Then On Error GoTo 0 oParameter = length1.ValueAsString MsgBox oParameter Set length1 = partDocument1.Part.Parameters.Item("Ausdurch") oParameter = length1.ValueAsString MsgBox oParameter Set length1 = partDocument1.Part.Parameters.Item("Ref") oParameter = length1.ValueAsString MsgBox oParameter Else On Error GoTo 0 End If Next End If End Sub
Ich hoffe, Du erkennst daraus das Prinzip! mfg, Lusilnie
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 02. Mai. 2006 10:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie Genau das ist es . Ist schon KLASSE wie du hier den Leuten auf die Sprünge hilfst. Noch mal VIELEN DANK!!! Ich Habe das Programm jetzt noch vervollständigt. Es schreibt die Werte in eine Excel Tabelle die unter C:/Temp abgelegt wird. Ich verwende es im Mold Tooling Design um Auswerferlängen (Einbaulänge) auszulesen. Es müssen aber in den Parts die Parameter Auswerferlaenge (Einbaulänge) und Ausdurch für den Durchmesser vorhanden sei. Bis dann
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 08. Mai. 2006 14:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich war so erfreut das ich mit Eurer Hilfe das Makro zum Laufen gebracht habe. Leider habe ich mit diesem noch ein Problem. Wenn die PartNumber nicht gleich dem Speichernahmen ist steigt mein Makro an dieser Stelle ---Set partDocument1 = documents1.Item(Name & ".CATPart")---- aus. Wie kann ich an Stelle der PartNumber den Speichernamen bekommen? Für Eure HILFE wäre ich dankbar.
------------------ KOBUE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 08. Mai. 2006 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Hallo Berges, um direkt auf den Dokumentnamen anstatt des Partnames zuzugreifen, mußt Du nur 2 Zeilen anpassen: aus : Name = selection1.Item(I).Value.PartNumber wird : Name = selection1.Item(I).Value.ReferenceProduct.Parent.Name und aus : Set partDocument1 = documents1.Item(Name & ".CATPart") wird : Set partDocument1 = documents1.Item(Name) Dann sollte Dein Macro ohne Probleme laufen! mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 09. Mai. 2006 08:59 <-- editieren / zitieren --> Unities abgeben:
|
Jules_Vernes Mitglied Systemadmin
Beiträge: 145 Registriert: 04.10.2005 Catia V5R24SP4
|
erstellt am: 09. Mai. 2006 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für Berges
Hallo Zusammen ich muss an dieser Stelle mal ein großes Lob für Lusilnie aussprechen. Du gibts fast in jeden Post eine top Antwort und hilft damit echt vielen Leuten, weiter so Lobpunkte sind untewegs. Grüsse Jules Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berges Mitglied Techniker
Beiträge: 119 Registriert: 16.08.2001 Catia V5 R24/ Sp1 unter WIN 7
|
erstellt am: 09. Mai. 2006 10:13 <-- editieren / zitieren --> Unities abgeben:
|