Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Kann das ein Makro?

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:  Kann das ein Makro? (1194 mal gelesen)
Meeper
Mitglied



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

Beiträge: 15
Registriert: 08.08.2008

erstellt am: 07. Aug. 2009 14:04    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!

Ich arbeite mich gerade in die Thematik Makros ein und habe auch schon ein Buch von R. Ziethen "Catia V5 Makroprogrammierung mit Visual Basic Script" durchgeackert. Die Forensuche habe ich auch schon bemüht.

Ich will natürlich nicht, dass mir hier einer Makros schreibt, ich will nur wissen ob sich meine Problematik auch mit einem Makro lösen lässt. Los geht's:

In einer Konstruktionstabelle (Excel) sind viele verschiedene Konfigurationen eines L-Winkels hinterlegt (unterschiedliche Schenkellängen und Radien).
Über einen Parameter in CATIA kann ich bequem die Konfiguration (entspricht einer Zeile in Excel) in der Konstruktionstabelle anwählen. Das soll dann das Makro machen, also alle Konfigurationen 1 bis 100 durchgehen.
An jeder Konfiguration des L-Winkels werden zwei Längen gemessen. Mit "Messung beibehalten" steht der Wert im Strukturbaum und wird auch korrekt geupdatet, wenn sich die Konfiguration ändert. Diese zei Längen sollen dann in die Konstruktionstabelle geschrieben werden, in die Zeile der jeweiligen Konfiguration (also dahinter).

Nun meine Frage: kann ich das umsetzen? Mir geht es erstmal nicht um das WIE, sondern nur um das OB? Nicht dass ich mich jetzt in irgendwas verrenne und am Ende hat es keinen Sinn.

Habt Ihr noch Literaturtipps für mich, die mir bei o.g. Problem helfen können? Das Buch von Ziehten ist zwar ganz nett, deckt aber nicht das Problem der Kommunikation mit anderen Programmen wie Excel ab.


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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 07. Aug. 2009 14: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 Nur für Meeper 10 Unities + Antwort hilfreich

Hallo Meeper,
dein Problem lässt sich auf auf jeden Fall mit einem Makro lösen. Mit der Messung muss allerdings aufpassen, da sich diese nicht automatisch beim Update neu berechnet. Es müsste also die Messung bzw. der entpsrechende Parameter dafür händisch aktualisiert werden.
Das Auslesen des Parameters und Schreiben dann nach Excel ist kein Problem.

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

DanielFr.
Moderator
Manager


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

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: 07. Aug. 2009 14: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 Meeper 10 Unities + Antwort hilfreich

Hallo,

ist überhaupt kein Problem da musst du dir keine Gedanken machen das an dem Script irgendwas überhaupt nicht funktioniert. Das ganze kannst du in CATvba schreiben (externe Verweise auf Excel (Excel.exe)). Dann kannst du alle Funktion, Klassen, etc. aus Excel in CATIA nutzen. Um das Layout festzulegen kannst du dir mit dem Makrorekorder in Excel den Code aufzeichnen und dann mit leichten Anpassungen in den CATvba-Script übernehmen.

Es gibt aber zwei Sache bei denen  du unbedingt aufpassen solltest.

1.
Wenn du dir in CATVba ein Excel Objekt erzeugst, dieses Verwendest und anschließend mit "myApp.Quit" (bzw. myApp = Nothing) wieder zerstören willst funktioniert das nicht (ein BUG oder soll ich lieber sagen ein Feature  )
D.h. wenn du einmal ein Excel-Objekt erzeugt hast bleibt der Task im Taskmanager verfügbar obwohl er geschlossen sein sollte (durch das Quit). Hierzu gibt es aber eine Abhilfe über die API (siehe folgenden Code)

2.
Der Makrorecorder aus Excel zeichnet immer ein select auf (z.B. Range("A1:B6").select....selection.machirgendwas). Das verbraucht nur unnötig Ressourcen. Das Select brauchst du in den wenigsten Fällen. In der Regel kannst du die Zelle bzw. den Bereich sofort ansprechen und brauchst das select nicht.

CODE ZUM KILLEN DES EXCEL OBJEKTS

Code:

'API Zugriff auf Modulebene
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Integer, ByRef lpdwProcessId As IntPtr) As IntPtr

    'Ecxel beenden
    Private Sub KillExcel()

        'Objekte freigeben
        myWorkSheet = Nothing
        myPrintWorkbook = Nothing
        'Excel beenden
        Dim processId As IntPtr

        'Zugriff auf die API um die ProzessID von Excel auszulesen
        GetWindowThreadProcessId(myExcel.Hwnd, processId)

        'Excelprozess übernehmen
        Dim excelProcess As Process = Process.GetProcessById(processId.ToInt32())

        'Den Prozess zerstören ohne das irgendwas anderes mitgerissen wird
        excelProcess.Kill()

  End Sub



ANMERKUNG
Das ist eine Auszug aus einem VB.NET Programm es sind also noch kleine Anpassungen zu tätigen um den Code in CATvba nutzen zu können (z.B. SET-Anweisungen)

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 07. Aug. 2009 15:02    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 Meeper 10 Unities + Antwort hilfreich

Hallo Daniel,

ist das ein spezielle Problem von .net?
Ich erzeuge in VB6 ständig Excel-Objekte und "beseitige" die dann wieder mit .quit, ohne das im Task eine excel.exe übrig bleibt??

Gruß

------------------
tomtom1972

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

Meeper
Mitglied



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

Beiträge: 15
Registriert: 08.08.2008

erstellt am: 07. Aug. 2009 15: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

Vielen Dank für die schnellen Antworten und Hinweise! Ich werde dann das Projekt mal in Angriff nehmen, nun da ich weiß dass es geht 

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

DanielFr.
Moderator
Manager


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

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: 07. Aug. 2009 15: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 Nur für Meeper 10 Unities + Antwort hilfreich

Hallo,

@Tom: Ich hab hier gerade ein VB6 Projekt liegen das den Task auch nicht sauber schließen kann. Es funktioniert mal und mal geht es nicht... . Naja ich hab mikr angewöhnt das Excel Objekt so zu zerstören den das funktioniert immer 

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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