Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Mit Makro Parameter ändern

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:  Mit Makro Parameter ändern (8587 mal gelesen)
nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 07. Feb. 2008 10: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


parameters.jpg

 
Hallo Forum Besucher

Ich habe ein Problem beim erstellen eines Makros für CATIA V5 ..

Es geht um Folgende problemlösung
In einem Assembly befinden sich Unterprodukte und unter diesen Produkten befinden sich wiederrum Parts
Struktur Abbildung:

HAUPTPRODUKT
| - UNTERPRODUKT
|  |- UNTERPRODUKT
|      |-PART
|      |-PART
|      |-PART
| - UNTERPRODUKT
|    |-PART
|    |-PART
|    |-PART
..... usw.

Inerhalt der Einzelnen PARTS befindet sich ein Parameter den ich Mit hilfe eines Macros in ALLEN Parts des Assemblys
auf einen bestimten Wert setzen möchte ( ALLE DEN SELBEN WERT NATÜRLICH ) ...

Da ich noch nicht der Beste ( Anfänger ) in Macroprogrammierung bin möchte ich euch gerne um eine Hilfestellung bitten !!!???

Ich habe zwar eine Vorstellung wie das laufen könnte aber keine Idee wie ich das umsetzen könnte ...

Ich wäre euch echt Dankbar um Mithilfe...

PS: Im Screenshot ist eine Veranschaulichung wie das Assembly Aufgebaut ist und wo die Besagten Parameter stehen ...

VIELEN DANK IM VORRAUS

               

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

flomator
Mitglied
BA-Student


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

Beiträge: 41
Registriert: 27.06.2007

erstellt am: 07. Feb. 2008 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 Nur für nreim1 10 Unities + Antwort hilfreich

hi,

ich bin zwar auch blutiger anfänger was macroprogrammierung angeht, hätte dir allerdings ein tipp wie du zumindest die parameter finden kannst, hoffe das hilft dir weiter:

-----------------------------------------------
Sub CATMain()

Dim Liste As Selection
Set liste = CATIA.ActiveDocument.Selection
liste.Clear
liste.Search ".parameter.Name=Abstand*;Alle"

End Sub
------------------------------------------------

gruß flo

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

jkaestle
Mitglied



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

Beiträge: 1091
Registriert: 08.02.2002

erstellt am: 07. Feb. 2008 16: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 Nur für nreim1 10 Unities + Antwort hilfreich

Hallo,
Du kannst z.B. rekursiv durch die ganze Struktur gehen. Wenn die Komponente auf die Du triffst ein Part ist, dann wird der Parameter geändert.
Soweit die Theorie. Wie das praktisch aussieht findest Du z.B. hier. Das Problem ist zwar etwas anders gelagertals bei Dir, aber es zeigt wie man rekursiv durch die Struktur geht.
http://ww3.cad.de/foren/ubb/Forum137/HTML/002119.shtml
http://ww3.cad.de/foren/ubb/Forum137/HTML/002223.shtml


Hier noch was zum erkennen des Documenttyps:
http://ww3.cad.de/foren/ubb/Forum137/HTML/001045.shtml

Damit solltest Du weiterkommen

------------------
Viele Grüße
Jochen Kästle

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 08. Feb. 2008 08: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

Hallo Ihr Alle

Also ich habe bis heute noch ein bisschen an meinem makro gearbeitet und mir auch eure Tips angesehen !

@jkaestle
Deine Links haben mich auch auf ein paar ideen gebracht, Danke dafür

Ich habe das Makro auch erfolgreich zum Laufen gebracht, habe aber noch ein paar Stolpersteine drin wobei ihr mir hier villeicht noch helfen könntet !!!

Mein Makro läuft also erfolgreich durch die ganze Struktur und ändert mir auch brav meine Parameter. Jetzt kommt es aber zu einem Problem was ich vorher noch nicht bedacht habe.
Manche Parameter die ich ändern möchte sind irgendwann wärend der Konstruktionsphase mit einer Rule belegt worden, das hat den Effekt das mein Makro sich genau bei diesen Parametern mit einer Fehlermeldung verabschiedet.

Nun kann man zwar einfach mit dem Befehl "On Error Resume Next"
Das Makro weiterlaufen lassen, aber besagte Parameter werden dabei einfach übersprungen. Jetzt bin ich nicht der Fan davon die Rules einfach löschen zu lassen sondern möchte eher folgende möglichkeiten haben

1. Entweder das Makro Zeigt bei besagtem Parameter eine Meldung an die Lautet PARAMETER ind Part xxxxxxxxxx konnte nicht geändert werden, Bitte prüfen ! und dann soll das Makro beendet werden..

2. Was mir Persönlich besser gefallen würde wäre daß das Makro weiter durchläuft " On Error ... " mir aber am ende eine Meldung anzeigen würde bei welchen Parts es zu Problemen gekommen ist. So eine Art Liste mit Partnummern o.ä.

Sieht hier jemand eine möglichkeit das umzusetzen ???!!!

PS: Am Ende werde ich das Makro hier rein Posten damit das ganze auch Drüchte trägt ....

Mfg:

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. Feb. 2008 09:11    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 nreim1 10 Unities + Antwort hilfreich

Servus
Meine Idee zur Ausgabe der "Fehlermeldung":
- Am Anfnag eine Variable (String) erzeugen (ggf als global definieren):  Dim Fehler as String
- beim Auftauchen des Fehlers:
  on error
  Fehler = Fehler & Partname & Chr(13) & Chr(10)
  next
- Am Ende des Macros, Meldung ausgeben:
  MsgBox Fehler


Gruß
Bernd

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

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 08. Feb. 2008 09:32    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 bgrittmann

Leider Funktioniert dein Beispiel so nicht ganz da ich eine For Next Schleife durchlaufe und dabei mehrere Fehler auftauchen...

Oder ich habe bei der umsetzung deiner Idee einen fehler gemacht ... evtl. könntest du es ja mal anders Definieren ...

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. Feb. 2008 09:55    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 nreim1 10 Unities + Antwort hilfreich

Servus
Du müsstest den Code "On error .." in der for-Next-Schleife (beim ändern des Parameters) einbauen. Dabei sollte das "On error resume next" einfach ersetzt werden.

Gruß
Bernd

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

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 08. Feb. 2008 10:10    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


error.jpg

 
Hi Bernd

Das habe ich ja auch versucht, das Problem dabei ist aber das CATIA bzw. das Skript sofort nen fehler usgibt sobals ich

on error
Fehler = Fehler & Partname & Chr(13) & Chr(10)
next

In meinen Code einfüge ... Siehe Screenshot CATScript kennt den befehl on error ( ohne Resume Next oder GoTo ) nicht

Mfg: Nico

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 08. Feb. 2008 11: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 nreim1 10 Unities + Antwort hilfreich

Moin Nico,

es wäre eventuell einfacher, wenn du die entsprechende Codestelle
posten würdest aber versuch es mal wie folgt:

on error resume next
for ....
  err.clear
  'tut irgendwas
  if err.number <> 0
    Fehler = Fehler & Partname & Chr(13) & Chr(10)
  end if
next

' ausgabe von Fehler

Gruß
Proofin

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 08. Feb. 2008 12:18    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 Alle zusammen...

Also hier mal Der Quelllcode

Momentander stand: Makro läft sauber duch die Struktur und Überspringt einfach die Fehler !!!
Das Soll aber nicht sinn der sache sein, also für am sinnvollsten halte ich das wenn Das Makro Komplett durch die Struktur Läuft mir aber bei jedem Fehler eine MessageBox bringt mir dem Part bzw. instance Namen und nach dem Klick auf OK Trozdem das Skript weiter ausführt ...

Könntet ihr mir dabei bitte noch behilflich sein ?!

Code:


Sub CATMain()

Dim myproduct As Product
Set myproduct = CATIA.ActiveDocument.Product


' Scannen der Produktstruktur Beginnen
    ScanProductStructure myproduct

MsgBox "Reset all Parameters Done"

End Sub


Sub ScanProductStructure(myproduct2 As Product) ' aus myproduct wird myproduct3

Dim currentprod As Product

On Error resume next

For i = 1 To myproduct2.Products.Count
    Set currentprod = myproduct2.Products.Item(i)

        If currentprod.Products.Count = 0 Then 

currentprod.Parameters.Item("STOCKLIST\CHANGE_ID").Value = 0
currentprod.Parameters.Item("STOCKLIST\CHANGE_STATUS").Value = ""

        Else: 

ScanProductStructure currentprod.ReferenceProduct

        End If


Next

End Sub


Vielen Dank Nochmal für eure Hilfestellungen

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 08. Feb. 2008 13:49    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 nreim1 10 Unities + Antwort hilfreich


Ich würde es so machen:

Code:

Sub ScanProductStructure(myproduct2 As Product) ' aus myproduct wird myproduct3

Dim currentprod As Product
Dim ii As Integer

On Error Resume Next

  For ii = 1 To myproduct2.Products.Count
     
      Set currentprod = myproduct2.Products.Item(ii)
 
      If currentprod.Products.Count = 0 Then
        Err.Clear

        currentprod.Parameters.Item("STOCKLIST\CHANGE_ID").Value = 0
        currentprod.Parameters.Item("STOCKLIST\CHANGE_STATUS").Value = ""

        If Err.Number <> 0 Then
          MsgBox "Fehler in: " & currentprod.Name, vbOK
        End If
 
      Else
 
        ScanProductStructure currentprod.ReferenceProduct
 
      End If
 
 
  Next
 
  On Error GoTo 0

End Sub


Gruß
Proofin

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. Feb. 2008 17:48    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 nreim1 10 Unities + Antwort hilfreich

Servus

@Proofin: Danke für die Berichtigung. Ich bin eben auch noch Anfänger 

Gruß
Bernd

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

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 11. Feb. 2008 07:44    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

@ Proofin
SUPER .... Das hat einwandfrei Funktioniert ....

Also hier zur Zusammenfassung das Komplette Makro, damit sich eure Mühen auch gelohnt haben und der Sinn eines Forums bestehen bleibt ....

Was kann das Makro:
Es Durchläuft eine Komplette Assembly ( Also sämtliche Produkte und Parts ) und ändert Diverse Parameter ....

Ist zwar kein Revolutionäres Skript, aber vieleicht sucht ja jemand soetwas....

Code:

Sub CATMain()

Dim myproduct As Product
Set myproduct = CATIA.ActiveDocument.Product


' Launch the scan of the complete product structure
    ScanProductStructure myproduct


MsgBox "Reset all Parameters Done"

End Sub

Sub ScanProductStructure(myproduct2 As Product) ' aus myproduct wird myproduct3
Dim currentprod As Product
Dim ii As Integer

On Error Resume Next

  For ii = 1 To myproduct2.Products.Count
     
      Set currentprod = myproduct2.Products.Item(ii)
 
      If currentprod.Products.Count = 0 Then
        Err.Clear

        currentprod.Parameters.Item("STOCKLIST\CHANGE_ID").Value = 0
        currentprod.Parameters.Item("STOCKLIST\CHANGE_STATUS").Value = ""

        If Err.Number <> 0 Then
          MsgBox "Fehler in: " & currentprod.Name, vbOK
        End If
 
      Else
 
        ScanProductStructure currentprod.ReferenceProduct
 
      End If
 
 
  Next
 
  On Error GoTo 0

End Sub



PS: Für alle fleissigen Helferlein Natürlich 10 Punkte alleine schon weil ihr euch mühe gegeben habt ...    

Mfg: Bis Später

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

flomator
Mitglied
BA-Student


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

Beiträge: 41
Registriert: 27.06.2007

erstellt am: 12. Feb. 2008 11: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 Nur für nreim1 10 Unities + Antwort hilfreich

hi ihr,

ich habe einen gleichen aufbau der product_struktur wie nreim1.
die einzelnen parts und products sind mit rules verknüpft.
nun möchte ich dass mir ein makro alle rules, die in der konstruktion vorkommen löscht.
kann mir da jemand weiterhelfen?? bei der programmierung erkennt er mir "rule" nicht!!
komme nicht voran.
danke schon mal im voraus für euer bemühen.

grüße

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

Happykleiner
Mitglied
Maschinenbautechniker

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

Beiträge: 6
Registriert: 10.09.2007

MS Windows 7 Professional 64Bit
CATIA V5 R19 SP9 HF40

erstellt am: 27. Mai. 2010 20: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 nreim1 10 Unities + Antwort hilfreich

Das Makro greift leider nicht aus Parameter zu, die direkt unter einem Produkt stehen. Was müsste man ändern, damit dies auch noch geht? (Für Neugierige: Ich muss in mehreren Anlagen jedem enthaltenen Part und Produkt einen Parameter mit der selben Projektnummer verpassen. Da ich die Info erst gegen Projektende erhalten habe, stand das nun leider nicht in meinen Startmodellen und ein einzelnes Durchklicken wäre sehr aufwendig.)

Danke für die Hilfe.

------------------
Ich weiß nicht ob es besser wird, wenn es anders wird.
Ich weiß nur, dass es anders werden muss, wenn es besser werden soll...

[Diese Nachricht wurde von Happykleiner am 29. Mai. 2010 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