Autor
|
Thema: Feature Name von Body mit Parameter füttern? (3624 mal gelesen)
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 27. Sep. 2010 14:42 <-- editieren / zitieren --> Unities abgeben:
|
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 27. Sep. 2010 19:31 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus, anbei ein VBA-Makro, dass nach einen Parameter mit dem Namen "Bodyname" sucht. Wenn dieser vorhanden ist, wählst du als nächstes den Body aus der umbenannt werden soll. Wenn dieser Parameter nicht vorhanden ist wird er erzeugt. Danach wieder Body auswählen. Wichtig: Statusbar beachten. Anbei ein Link zum Erstellen eines neuen VBA-Projects. Zum Einfügen der Bas Datei im Visual Basic Editor: File -> Import File -> Bas Datei auswählen. Hast du dir sowas vorgestellt? PS: falls es noch Verbesserungsvorschläge zu meinem Programmierstil gibt: nur her damit ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 27. Sep. 2010 22:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, danke für das Makro. Leider kann ich zu deinem Programmierstil nichts sagen da ich keine Programmierkenntnisse habe. Es ist leider nicht ganz das was ich gesucht habe. Ich würde gerne zu einem Body der z.B "Fertigteil" heißt den Wert eines Parameters z.B. Benennung="Platte1" automatisch nach der Änderung des Parameter Benennung zuweisen lassen. "Fertigteil Platte1". Nur mit Parametern hab ich das schon gemacht.Kann mir vorstellen das es nicht so einfach ist oder gar nicht funzt. Aber trotzdem danke für deine Bemühungen. Gruß Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 28. Sep. 2010 07:47 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus, Zitat: Ich würde gerne zu einem Body der z.B "Fertigteil" heißt den Wert eines Parameters z.B. Benennung="Platte1" automatisch nach der Änderung des Parameter Benennung zuweisen lassen. "Fertigteil Platte1".
Ob das geht weiß ich nicht. Vielleicht mit einer Regel??? Anbei mein geändertes Makro. Ich gehe davon aus, dass du mit einem Startmodell arbeitetst und der Body "Fertigteil" immer vorhanden ist. Falls dieser fehlen sollte bricht das Makro ab. Es wird jetzt nach einem Body mit dem Namen "Fertigteil*" gesucht. Falls dieser aber schon z.B.: Fertigteil_Platte1 heißt, ist es egal, weil er den Namen mit "Fertigteil_" + Parameterwert umändert. Den Unterstrich kannst immer noch rauslöschen falls du ihn nicht brauchst. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 28. Sep. 2010 08:14 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 28. Sep. 2010 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Hallo Christian, also ich habe mal kurz über das Script geschaut und mir sind folgende Kleinigkeiten aufgefallen: 1. Alle Variablen werden nur lokal in der Hauptroutine verwendet. Trotzdem sind sie als Public deklariert. Das ist nicht notwendig und verwirrt nur 2. Du gibst bei allen Variablen als Suffix deinen Datentyp an (bei zwei aber nicht?) 3. Achte darauf das die Variablennamen wirklich eindeutig sind (d.h. der Name der Variable auch mit dem tatsächlichen Aufgabenbereich der Variable übereinstimmt). Ein Beispiel ist "Set objDokument = CATIA.Windows". Da ist besser "Set objWindows = CATIA.Windows" 4. MsgBoxen welche nur Hinweise darstellen und nicht ausgewertet werden müssen (z.B. vbYesNo) brauchen nicht als Ergebnis an eine Variable übermittelt werden (Das Ergebnis bei einer vbOKOnly MsgBox ist immer vbOK). Das spart dir Ressourcen in Arbeitsspeicher! 5. Jede interaktive Suche (SelectElement) muss nach dem selektiervorgang des Anwenders auch ausgewertet werden. Falls der Anwender während der interaktiven Suche ESC drückt gibt die Funktion "Cancel" zurück. D.h. die Suche war nur gültig wenn der String (strSel) ein "Normal" beinhaltet. Das ist wichtig sonst bekommst du Luafzeitfehler in den nachfolgenden Zeilen 6. Vor einer Suche sollte die Eigenschaft CATIA.HSOSynchronized auf False gestellt werden. CSO und HSO werden dann während der Suche nicht synchronisiert was einer erheblichen Performancevorteil (ab R19) schafft. Im Anschluss muss die Eigenschaft aber wieder auf true gesetzt werden sonst erhält man bei interaktiven Befehlen (selectElement) falsche Ergbnisse Du siehst es sind wirklich nur Kleinigkeiten [EDIT] Sorry das geänderte Script von mir in der Version 1.1 hatte ich vergessen [/EDIT] ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 28. Sep. 2010 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Daniel, erstmals danke für deine Rückmeldung und das du dir Zeit genommen hast dir mein Script anzusehen und auch gleich zu verbessern. zu 2. da wußte ich den Suffix nicht. Gibt es hierzu eine Liste? zu 3. blöder Fehler Werd mir deine Verbesserungsvorschläge gleich zu Herzen nehmen und meine Makros etwas umschreiben. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 28. Sep. 2010 10:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, Yepp- Starmodell. Makro kann ich gut gebrauchen. Danke Hallo Daniel, Zitat: Dann kannst du eine Reaction erstellen die dann ein Script auslöst. Der Event wird, je nach Einstellung, bei jeder Änderung deiner Parameters abgefeuert und löst das Umbenennung-Script aus.
Hab leider wenig Erfahrung mit einer Reaction.Kann auch nicht programmieren. (verstehe aber ein wenig um was es beim Prog. geht) Kannst du mir einen Anstoß geben? Gruß Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 05. Okt. 2010 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Daniel, hab jetzt in jedes Makro bei dem eine Suche gestartet wird "CATIA.HSOSynchronized = False" integriert. Nun hab ich das Problem, dass nach dem ersten Aufruf eines Makros, dass eine Suche beinhaltet, die weiteren Makros an dieser Stelle mit einem Automation Error einfach abrechen. Nachdem ich Catia neu gestartet hab kann ich z.B.: 3 Makros ausführen und beim 4 scheitert es wieder. Kennst du dieses Problem? In diesem Thread wurde nur auf eine stabilere V5 Version hingewiesen bzw. überrall eine Schleife zu erstellen. Gibt es vielleicht sonst noch irgendeine Einstellung dazu bzw. eine Lösung, damit ich nicht jedesmal Catia neu starte muß? ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 05. Okt. 2010 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Hast Du nach der Suche wieder auf CATIA.HSOSynchronized = TRUE geschaltet? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 05. Okt. 2010 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|
Hahnedan Mitglied
Beiträge: 5 Registriert: 02.09.2014 CATIA V5
|
erstellt am: 02. Sep. 2014 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Zitat: Original erstellt von moppesle: Hallo Christian,danke für das Makro. Leider kann ich zu deinem Programmierstil nichts sagen da ich keine Programmierkenntnisse habe. Es ist leider nicht ganz das was ich gesucht habe. Ich würde gerne zu einem Body der z.B "Fertigteil" heißt den Wert eines Parameters z.B. Benennung="Platte1" automatisch nach der Änderung des Parameter Benennung zuweisen lassen. "Fertigteil Platte1". Nur mit Parametern hab ich das schon gemacht.Kann mir vorstellen das es nicht so einfach ist oder gar nicht funzt. Aber trotzdem danke für deine Bemühungen. Gruß Uwe
Kann mir jemand sagen, wie ich das nur mit Parametern anstelle? Ich möchte einfach den Body Name abhängig von einem Multi String Parameter machen. Alternativ auch mit einer Regel. Aber mit Makro ist bei mir nicht zielführend. [Diese Nachricht wurde von Hahnedan am 02. Sep. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 02. Sep. 2014 10:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Hahnedan, wilkommen im Forum. Bitte Systeminfo ausfüllen. Das kannst du mit einer "Reaction" machen. Gewünschten Parameter als Sources auswählen. Event auf "ValueChange" stellen Dann in der "Knowledgeware action" den Body doppelklicken und im Language Browser ".Name anhängen. Könnte dann in etwa so aussehen. Body1.Name =Benennung ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 02. Sep. 2014 10:55 <-- editieren / zitieren --> Unities abgeben:
|
Hahnedan Mitglied
Beiträge: 5 Registriert: 02.09.2014
|
erstellt am: 02. Sep. 2014 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|