Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro: Parameter aus Parts auslesen, addieren und in Parameter in Product speichern

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:  Makro: Parameter aus Parts auslesen, addieren und in Parameter in Product speichern (4345 mal gelesen)
ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 08. Okt. 2012 13:33    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

Guten Tag zusammen,

derzeit versuche ich ein Makro zu erstellen, das mir aus mehreren CATParts unterhalb eines CATProducts einen bestimmten Parameterwert ausliest, die Summe der Parameterwerte bildet und in einem Parameter innerhalb des CATProducts speichert. Dieser Wert soll anschließend in einer MsgBox ausgegeben werden und danach aus dem CATProduct gelöscht werden.
Ich habe mich bereits durch dieses sehr inspirierende Forum geklickt aber leider nur für meine Fähigkeiten nicht transformierbare Ansätze gefunden

Bisher funktioniert:

-Unterscheidung zwischen CATProduct und CATPart (in letztem Fall mit Abbruch des Makros)
-Erstellen des Parameters innerhalb des Products
-Ausgabe des Parameterwertes per MsgBox
-löschen des Parameters

Ich benötige nun Hilfe, wie ich die Summe aus allen Parameterwerten mit der Bennennung „Oil_volume“ innerhalb der CATParts bilde und in den Paramter innerhalb des CATProducts speichere.

Wer kann und möchte mir helfen?

Danke und schöne Grüße

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: 08. Okt. 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 Nur für ashneel 10 Unities + Antwort hilfreich

Hallo ashneel,

willkommen im Forum.

Schon mal daran gedacht die auszulesenden Parameter in ein Excelsheet zu schreiben und dort die Summe zu generieren?

Da gibt es schon fast fertige Ansätze hier im Forum.

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

Auch Catia ist nur ein Mensch!      

[Diese Nachricht wurde von moppesle am 08. Okt. 2012 editiert.]

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 08. Okt. 2012 14: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

Hallo moppesle,

vielen Dank für die Willkommensgrüße und vielen Dank für die schnelle Antwort.

Die Problematik mit Excel zu lösen habe ich in betracht gezogen, allerdings kommt diese Lösung nicht in Frage, da ich in diesem Fall nur Catia Bordmittel verwenden möchte. Externe Programme kommen somit nicht in Frage.

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: 08. Okt. 2012 15: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 Nur für ashneel 10 Unities + Antwort hilfreich

Hallo ashneel,

ok. Also explizit helfen kann ich dir beim Programmieren nicht wirklich.
Aber warum mußt(willst)du dir einen Paramerter im Prudukt erstellen abfragen und dann löschen.
Die Ausgabe über eine MsgBox kannst du auch über einen Parameter, der deine Werte addiert und diesen dann ausgibt, erledigen.

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

Auch Catia ist nur ein Mensch!    

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 08. Okt. 2012 17:00    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 muss den Wert nicht unbedingt in einen Parameter schreiben, den ich anschließend lösche. Für mich ist es vom Verständis und von der Programmierung her einfacher wenn ich den Wert irgendwo zwischenspeichere bevor ich ihn ausgebe.
Man könnte das Ganze auch direkt in den Code der MsgBox programmieren, allerdings wird das Ganze dadurch für mich und nachfolgende Bearbeiter schwerer nachzuvollziehen.

Das Grundproblem wie ich die Summe der Parameter bilde und anschließend ausgebe umschiffe ich damit 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: 08. Okt. 2012 17:15    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 ashneel 10 Unities + Antwort hilfreich

Servus
Ich würde so vorgehen:
- Parameter mit der Suchfunktion in der Baugruppe suchen lassen.
- mit einer Schleife die Parameterwerte auslesen und addieren (ggf den Typ des Parameters prüfen/konvertieren)
- mit MessageBox Wert ausgeben

Gruß
Bernd

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

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 09. Okt. 2012 07: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

Guten Morgen Bernd,

vielen Dank für den Denkanstoß.
Also der Grundansatz gefällt mir. Da ich immer den gleichen Parametertyp und -namen in den Einzelteilen verwende, funktioniert die Suche über die Funktion Liste_par.Search "Name=liter_of_oil,all"
wunderbar.
Nur wie müsste nun der Code der Schleife aussehen, bzw. wie addiere ich jetzt die Paramaterwerte innerhalb der Liste? Denn wenn ich mich nicht täusche enthält die Liste jetzt nur die Parameter, weiß aber nichts über die Werte der Parameter.

Das anschließende Ausgeben des Wertes in der MsgBox ist dann kein Problem mehr.

Gruß
Elias

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: 09. Okt. 2012 07:45    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 ashneel 10 Unities + Antwort hilfreich

Servus

Anbei ein kurzes Beispiel:

Code:
Sub CATMain()

Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

Dim Volume As Double
Dim Parameter As Parameter
Volume = 0#

selection1.Search "(Name=liter_of_oil & CATKnowledgeSearch.InternalParameter),all"

For I = 1 To selection1.Count2
    Set Parameter = selection1.Item2(I).Value

    Volume = Volume + Parameter.Value

Next

MsgBox "Volumen = " + CStr(Volume) + " m^3"

End Sub


Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 09. Okt. 2012 editiert.]

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 09. Okt. 2012 09: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

Ok. Danke.
das Grundgerüst funktioniert. Allerdings erkennt die Suchmethode nun die Parameter nicht mehr und die Schleife wird übersprungen.
Ändere ich die Suchparameter so, dass die Parameter wieder erfasst werden, produziere ich die Fehlermeldung: "Das Objekt unterstützt die Eigenschaft oder Methode nicht: Parameter.Value"

So sieht der veränderte Code aus

Code:

Sub CATMain()
Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

Dim Volume As double
Dim Parameter As Parameter
Volume = 0

selection1.Search "Name=liter_of_oil,all"

Dim I As Integer
I = 1

For I = 1 To selection1.Count2
    Set Parameter = selection1.Item2(I).Value

    Volume = Volume + Parameter.Value

Next

MsgBox "Volumen = " + CStr(Volume)

End Sub


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: 09. Okt. 2012 12: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 Nur für ashneel 10 Unities + Antwort hilfreich

Servus
Um was für einen Parameter handelt es sich (Screenshot des Strukturbaums)? Um was für einen Typ handelt es sich?
Oder was für ein Objekt suchst du mit "liter_of_oil"?

Gruß
Bernd

PS Ich hab es mit einem Parameter des Typs "Volumen" getestet.

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

[Diese Nachricht wurde von bgrittmann am 09. Okt. 2012 editiert.]

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 09. Okt. 2012 13: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


strukturbaum.jpg

 
Servus,

die Parameter die ich suche und auslesen möchte sind vom Typ Real, da das Ölvolumen in Litern angegeben werden soll und die Standardeinheit von Catia m³ ist. Darauf habe ich hier leider keinen Einfluss. Damit es nicht zu verwirrungen kommt habe ich in den Einzelteilen einheitslose Parameter für die Volumina verwendet.
Der Auszulesende Parameter (im Strukturbaum rot markiert) ist publiziert.
Alle CATParts unter dem CATProduct verfügen über einen Names- und Typengleichen Parameter. Nur der Parameterwert ist unterschiedlich.

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: 09. Okt. 2012 13:56    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 ashneel 10 Unities + Antwort hilfreich

Servus
Was wird dir bei der (manuellen) Suche nach dem Parameter zurückgegeben, der Parameter oder die Veröffentlichung?
Willst du auf die Veröffentlichung zugreifen?

EDIT: ggf reicht auch eine Typ-Konvertierung:
Volume = Volume + cdbl(Parameter.Value)

Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 09. Okt. 2012 editiert.]

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 09. Okt. 2012 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

Bei der automatischen Suche wird nur(!) der publizierte Teil des Parameters markiert. Markiere ich manuell die publications der Parameter wird der Parameter selbst mit markiert und das ganze funktioniert. Lokaler Name des Parameters und Name des Parameters entsprechen der Bennennung der publication.

Die Konvertierung hatte bei der automatischen Suche keinen Einfluss. Bei der manuellen Selektion war die Konvertierung nicht nötig.

Es liegt wohl daran, dass die automatische Selektion nicht den Parameter an sich auswählt sondern nur dessen publication. Entferne ich jedoch die publication erkennt die Suche die Parameter nicht mehr.

edit: Der Zugriff auf die Publication wäre mir lieber.

[Diese Nachricht wurde von ashneel am 09. Okt. 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: 09. Okt. 2012 18: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 Nur für ashneel 10 Unities + Antwort hilfreich

Servus
Wahrscheinlich musst d dich nur von deiner Veröffentlichung auf den Parameter durchhangeln:
Code:
Set Parameter = selection1.Item2(I).Value.Valuation

Gruß
Bernd

PS: Du solltest dein Makro anpassen, dass nur Veröffentlichungen gesucht werden, nicht dass auch mal die Parameter direkt angesprochen werden.

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

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 10. Okt. 2012 07: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

Guten Morgen,

deiner Programmzeile brachte leider kein Erfolg.
Als versuch habe ich die Suche vorerst wieder so angepasst, dass der Parameter gefunden wird und habe die publications entfernt. Siehe da: Es funktioniert. Ich denke, ich werde bei dieser Lösung bleiben.
Falls dir noch etwas einfällt probiere ich es gerne aus.

Vielen Dank für deine fachkundige Hilfe und deine Zeit!

Anbei für die Nachwelt der gesamte Programmcode:

Code:

sub CATMain ()


'Unterscheidung Product Part -------------------------------------
DName = CATIA.ActiveDocument.FullName

'Product ---------------------------------------------------------
If InStr(DName, "CATProduct") Then

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

'Update All ------------------------------------------------------

Dim product1 As Product
Set product1 = productDocument1.Product
product1.ApplyWorkMode DESIGN_MODE

'parameter_suchen, auslesen, Summe bilden ------------------------

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

Dim Volume As double
Dim wert  As parameter
Volume = 0

selection1.Search "Name=liter_of_oil,all"

Dim I As Integer
I = 1

For I = 1 To selection1.Count2
Set wert = selection1.Item2(I).Value
Volume = Volume + cdbl(wert.Value)

Next

MsgBox "Necessary Oil Volume = " + CStr(Volume) + " liter"


'PART ------------------------------------------------

Else

MsgBox ("You have to select a CATProduct for correct values")


End If

End Sub


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