Autor
|
Thema: Makro bei Ergeignis starten (1444 mal gelesen)
|
cading12 Mitglied
Beiträge: 4 Registriert: 17.06.2009
|
erstellt am: 17. Jun. 2009 22:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich habe folgendes Problem: ich möchte ein Makro bei geöffnetem Catia automatisch starten lassen, wenn eine Bedingung erfüllt ist. Also konkret, wenn von einem externen skript (Perl) ein File geschrieben wird (Bedingung 'if File exist' oder so ähnlich), soll ein Makro gestartet werden das die Werte im File einliest. Die Werte sind Levels im Strukturbaum die mit dem Makro eingeblendet werden sollen. Das File einlesen und die entsprechenden Levels ins Show zu stellen, das kriege ich hin. Ich kann mir auch vorstellen, bei Catia start ein Makro zu starten, dass dann mit einer "endlos" Schleife immer nach dem File sucht und wenn es gefunden ist, in ein sub springt, dass das eigentliche Makro ausführt. Solche Endlosschleifen sind halt nicht die "feine Programmierart". Hat jemand eine schauere Lösung????? vielen Dank schonmal für euer Hilfe, cading12 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: 18. Jun. 2009 06:30 <-- editieren / zitieren --> Unities abgeben: Nur für cading12
Hallo, also das mit dem Endlosscript würde ich auf GAR KEINEN FALL MACHEN. Was passiert wenn ein zweites Script ausgeführt wird, Ressourcenmanagement....! Aber ich hab auch eine andere Lösung für dich: Vorraussetzungen: Ein kompiliertes (*.exe) VB Programm das dir in CATIA die Levels in Show stellt. Mit VB.NET Express geht das ganz einfach da du dort ganz einfach CATIA instanzieren kannst und dann programmiert es sich wie der interen Vb Editor von CATIA. 1. Du startest die Perl -> die schreibst den Pfad und ruft im Anschluss die kompilierte *.exe -Datei mitsamt Übergabenwerten (z.B. den Pfad) auf
FERTIG ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cading12 Mitglied
Beiträge: 4 Registriert: 17.06.2009
|
erstellt am: 18. Jun. 2009 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, vielen Dank für deine schnelle Antwort!!! Das ist ja echt super hier! Bei der Endlosschleife habe ich mir schon gedacht, dass mir das jeder Programmierprofi an die Gurgel springt.... Hmm also mit vb.net habe ich leider noch keine Erfahrung. Habe bisher nur mit CATScript oder dem internen vb editor bisschen "rumgewurstelt" Also das heißt ich muss mit sowas wie "CATIA = GetObject(, "CATIA.Application") von außen auf das bereits laufende Catia zugreifen und da die Parameter bzw. Levels zum einblenden übergeben. Das muss ich dann nicht unbedingt compilieren, oder? Muss ich dazu noch was runterladen? oder ist da standardmässig auf xp alles nötige drauf? Mit "runterladen" ist es immer so eine Sache auf dem Firmenrechner. Danke und Gruß, Kathrin
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: 18. Jun. 2009 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für cading12
Hallo Kathrin, also erst mal würde ich dir das Visual Basic Express 2005 SDK ans Herz legen da dieses Microsoft .NET 2.5 verwendet was heute auf den meisten Rechnern schon installiert ist. Das SDK musst du dir aber runterladen (direkt bei Microsoft...sollte also für eure Admins keine Gefahr darstellen ) Die Programmiersprach ansich ist die selbe wie im internen VB Editor von CATIA. Du wirst dich also extrem schnell damit zurechtfinden. In dem VB.NET Programm erzeugst du dir das Objekt (bzw. wie du schon sagtest du musst auf eine laufende Instanz zugreifen) mit dem du dann genauso arbeiten kannst wie mit dem CATIA-Objekt aus dem internen VB Editor (natürlich nur wenn auch der Namespace von CATIA importiert wurde bzw. der Verweis auf das CATIA Objekt existiert) Kompilieren musst du es auf jeden Fall denn du brauchst ja eine vom Computer ausführbare Instanz des Programms (die *.exe). Ich würde jetzt an deiner Stelle erst mal abklären ob du das SDK installieren darfst (bwz. ob es dir ein Admin installiert). Dann kann ich dir mal ein Beispiel schicken ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cading12 Mitglied
Beiträge: 4 Registriert: 17.06.2009
|
erstellt am: 18. Jun. 2009 08:47 <-- editieren / zitieren --> Unities abgeben:
Sehr gut, dann werde ich das mal abklären. Leider weiss ich, dass es bei uns mit der Genehmigung der anscheinend sichersten Sachen schon Probleme geben kann (ist halt ein grösserer Laden...) Jedenfalls haben wir .Net Framework 3.5 drauf. Das habe ich erst kürzlich für eine andere Anwendung installieren lassen (auch das war nicht einfach) Ansonsten lade ich mir das ganze auf meinen privaten Rechner, compiliere es da zu .exe und kopiere es auf den Firmenrechner. Wenn du mir ein kleines Beispiel hättest, wäre das super!!!! Danke Dir! Kathrin 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: 18. Jun. 2009 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für cading12
Hi, folgendes Problem: Wenn du mit VB.NET 2008 entwickelst brauchst du das .NET Framework 3.5 auf ALLLEN Rechner auf denen dein kompiliertes Programm ausgeführt wird, den dieses brauchst .NET 3.5. Wenn du mit VB.NET 2005 entwickelst brauchst du "nur" das Framework 2.5 und hier ist die Wahrscheinlichkeit höher das es auf allen Rechnern installiert ist. Ggf. Kannst du das ja mal mit den Admins abklären und fragen ob alle Rechner .NET 3.5 haben (dann würde ich es mit VB.NET 2008 entwickeln) Das Beispiel muss ich daheim noch schnell schreiben . Habe hier gerade kein CATIA und auch kein VB.NET 2005 (das hab ich daheim auch nicht kann ich aber runterladen ) Denke ich werde heute Abend dazukommen und dir ein Beispiel anhängen ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cading12 Mitglied
Beiträge: 4 Registriert: 17.06.2009
|
erstellt am: 18. Jun. 2009 18:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, also ich hab jetzt eine scheinbar ganz einfache Lösung für mein Problem und musste dazu nicht mal was runterladen. Habe ein vb Script geschrieben, dem ich die Argumente der Levles übergebe und das Argument show=0 oder 1, jenachdem ob ich das angegebne Level auf Hide oder Show setzen will. Das Ganze funktioniert dann mit einem geöffneten CatPart. Code: on error resume next'##### Argumente einlesen set Arg = WScript.Arguments '##### Da die Levels von Perl mit 0 beginnen, muss ich +1 dazu addieren und in Integer umwandeln p=CInt(Arg(0))+1 'Part Level, bei mir standardm. auf 1, da ich nur ein CATParrt habe s=CInt(Arg(1))+1 'Set Level e=CInt(Arg(2))+1 'Element Level show=CInt(Arg(3)) '[1, 0] Set CATIA = GetObject(, "CATIA.Application") Set DOKUMENT = CATIA.ActiveDocument Set AUSWAHL = DOKUMENT.Selection Set visPropertySet1 = AUSWAHL.VisProperties Set TEIL = DOKUMENT.Part Set GS = Teil.HybridBodies AUSWAHL.Add GS.Item(s) Set SHOWHIDE = visPropertySet1.Parent SHOWHIDE.SetShow show Set GE = GS.Item(s).HybridShapes AUSWAHL.Add GE.Item(e) Set SHOWHIDE = visPropertySet1.Parent SHOWHIDE.SetShow show AUSWAHL.Clear
und dann einfach z.B showlevels.vbs 1 2 4 0 ... vielleicht kann es ja auch jemand brauchen... Gruß, Kathrin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 18. Jun. 2009 20:56 <-- editieren / zitieren --> Unities abgeben: Nur für cading12
Hallo Daniel, ich muss dir wiedersprechen: man kann sehr wohl aus VB2008 für .NET Framework 2.0 entwickeln. Alles was man braucht ist, unter My Project - Compile - Advanced compile options... ganz unten "Target framework" auf die benötigte umzustellen. Ich verwende es, um für .NET 3.0 aus VB Express 2008 zu entwickeln und funktioniert einwandfrei. Gruß, Zoltan 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: 19. Jun. 2009 06:15 <-- editieren / zitieren --> Unities abgeben: Nur für cading12
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|