Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Funktion aus Makro heraus starten

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:  Funktion aus Makro heraus starten (3707 mal gelesen)
Pausenbrot
Mitglied



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

Beiträge: 20
Registriert: 24.10.2007

erstellt am: 20. Nov. 2009 15:03    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,

gibt es ein Befehl, mit dem ich eine Funktion aus einem Makro heraus starten kann ohne die Fkt. mühsam im VBA nachzuprogrammieren?

Nach Muster:
- Makro starten
- Fkt.startet ... Fkt. beendet
- Makro läuft weiter

Gruß
das Pausenbrot

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

Mörchen
Ehrenmitglied V.I.P. h.c.
CAD-Trainerin (CATIA V5)



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

Beiträge: 3830
Registriert: 14.03.2007

Release 19 SP2

erstellt am: 20. Nov. 2009 15:05    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 Pausenbrot 10 Unities + Antwort hilfreich

Hallo Pausenbrot,

ich hab zwar vom Programmieren keine Ahnung, aber vielleicht geht das:

Mit den folgenden Regeln wird ein Makro gestartet
LaunchMacroFromFile(„Dateipfad“)

Gruß
Mörchen

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

Pausenbrot
Mitglied



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

Beiträge: 20
Registriert: 24.10.2007

erstellt am: 20. Nov. 2009 15: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

Nee Mörchen,

das war nicht gemeint. Eine ext. Anwendung lässt sich über die Shell-Fkt. starten.
Ich möchte eine Catia-Fkt. starten z.B."c:Symmetry"

Gruß Pausenbrot

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

pittyplatsh
Mitglied



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

Beiträge: 62
Registriert: 27.12.2008

CATIA V5 R16 SP3

erstellt am: 20. Nov. 2009 15:43    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 Pausenbrot 10 Unities + Antwort hilfreich

Kommt drauf an wie die Anwendung sein soll:

Du kannst natürlich sämtliche Tools von Catia per Macro aufrufen über

Code:
CATIA.StartCommand("Tool")

In den Anführungszeichen steht dann der Name des Tools, welches gestartet werden soll. Damit wird nur das Tool gestartet und der User muss eventuelle weitere Eingaben wie gewohnt vornehmen. Die Namen sämtlicher Tools sind meines Wissens nicht dokumentiert und müssen ein wenig durch probieren, überlegen herausgefunden oder in den Installationsdateien gesucht werden.

Du kannst aber auch Operationen komplett durch ein Macro übernehmen lassen (hier wird aber leider nicht alles unterstützt, jedoch ist es mit 90% oder mehr möglich).

Was für eine Funkion möchtest du denn auslösen lassen?

Liebe Grüße,
pitty

[Diese Nachricht wurde von pittyplatsh am 20. Nov. 2009 editiert.]

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 20. Nov. 2009 15: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 Nur für Pausenbrot 10 Unities + Antwort hilfreich

Du meinst wohl:
CATIA.Startcommand "CompassDisplayOff"
(oder deine Kommandos also ohne das c

Hättest du aber auch über die Suche gefunden.

grüße Dominik

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

Pausenbrot
Mitglied



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

Beiträge: 20
Registriert: 24.10.2007

erstellt am: 20. Nov. 2009 15: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

Danke,

so klapp dass schon mal.
Jetzt noch der Haken:
Die Catia-Fkt. wird gestartet aber das Makro läuft im Code weiter. Die Catia-Fkt. ist erst nutzbar, nachdem das Makro beendet ist.
Kann man Catia zum warten zwingen?

Gruß Pausenbrot.

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 20. Nov. 2009 16:07    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 Pausenbrot 10 Unities + Antwort hilfreich


Auch die sleep-Funktion findest du hier im Forum.

Welche Funktion willst du denn nutzen?
Eventuell kann man diese Funktion auch direkt über ein Makro bedienen.
Alternativ externes Programm (außerhalb von CATIA, z.B. VB2008) erstellen.

grüße Dominik

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

pittyplatsh
Mitglied



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

Beiträge: 62
Registriert: 27.12.2008

CATIA V5 R16 SP3

erstellt am: 20. Nov. 2009 16:08    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 Pausenbrot 10 Unities + Antwort hilfreich

Habe mich leider damit in der Makro-Programmierung noch nicht viel beschäftigt. Mir schwirren aber 2 Gedanken im Kopf rum:

1) Ein Tool gibt sicherlich an CATIA einen Befehl zurück dass dieses weiterarbeiten kann. Vlt kann man diesen Befehl ebenfalls nutzen?
2) Du könntest eine MsgBox aufploppen lassen die dir jedoch erlaubt im Hintergrund weiterzuarbeiten (Gibt es im VisualBasic eine Eigenschaft dafür). Nach ausgeführter Funktion wird diese noch mit OK bestätigt und weiter gehts im Text.

Oder aber wie schon beschrieben die Ausführung vom Makro übernehmen lassen und über Inputs und UserSelections die Werte abfragen.

Liebe Grüße,
pitty

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 20. Nov. 2009 16:54    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 Pausenbrot 10 Unities + Antwort hilfreich

Hallo zusammen,
Zitat:
Original erstellt von pittyplatsh:

Du kannst aber auch Operationen komplett durch ein Macro übernehmen lassen (hier wird aber leider nicht alles unterstützt, jedoch ist es mit 90% oder mehr möglich).


Ganz ehrlich... Wenn überhaupt sind es 10% oder weniger! ich pers. fluche schon etwas länger, da man mit vba für CATIA leider immer Auswege finden muss und teilweise Sachen, die man einfach aus dem .Net kennt, nur durch tricksen und hoch komplexe eigene Programmierungen lösen kann.
Zitat:
Original erstellt von V5Playaz:

Auch die sleep-Funktion findest du hier im Forum.

Welche Funktion willst du denn nutzen?
Eventuell kann man diese Funktion auch direkt über ein Makro bedienen.
Alternativ externes Programm (außerhalb von CATIA, z.B. VB2008) erstellen.

grüße Dominik



Das würde ihn nicht weiterbringen, da Sleep das gesamte Programm schlafen legt und damit auch CATIA und das Makro! Außerdem lassen sich Fenster, die man unter vba nicht kontrollieren kann, noch schlechter außerhalb kontrollieren.
Zitat:
Original erstellt von pittyplatsh:
Habe mich leider damit in der Makro-Programmierung noch nicht viel beschäftigt. Mir schwirren aber 2 Gedanken im Kopf rum:

1) Ein Tool gibt sicherlich an CATIA einen Befehl zurück dass dieses weiterarbeiten kann. Vlt kann man diesen Befehl ebenfalls nutzen?
2) Du könntest eine MsgBox aufploppen lassen die dir jedoch erlaubt im Hintergrund weiterzuarbeiten (Gibt es im VisualBasic eine Eigenschaft dafür). Nach ausgeführter Funktion wird diese noch mit OK bestätigt und weiter gehts im Text.


zu 1.) Die Tools geben nichts zurück bzw. nur in den seltensten Fällen, werden Ereignisse generiert bzw. kann man auf Ereignisse reagieren.

zu 2.) Naja und wenn jemand Enter drückt? Oder ausversehen bestätigt? Das ist in meinen Augen keine saubere Lösung.

Hier mein Vorschlag:
Du musst warten, bis die Funktion (Das Fenster) geöffnet ist und dann evtl. etwas verarbeiten und dann wiederum warten, bis das Fenster zu ist.

Beispielcode:

Code:

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub CATMain()

Dim hWndTmp1        As Long
Dim FuncTitle      As String

FuncTitle = "FensterÜberschrift" 'Der Name des Fenster ist immer der Inhalt, der Oben in der Leiste steht. Allerdings ist diese Sprachabhängig!
     
      'Schleife, die solange läuft, bis das Fenster offen ist
      Do

            'Code für die Bearbeitung
            hWndTmp1 = FindWindow(vbNullString, FuncTitle)
            DoEvents

      Loop Until hWndTmp1 <> 0
                       
      'Schleife, die solange läuft, bis das Fenster wieder geschlossen ist
      Do
                 
            'Code für die Bearbeitung               
            hWndTmp1 = FindWindow(vbNullString, FuncTitle)
            DoEvents

      Loop Until hWndTmp1 = 0

End Sub


HTH

------------------
MFG
Rick Schulz
      Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein."

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

Pausenbrot
Mitglied



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

Beiträge: 20
Registriert: 24.10.2007

erstellt am: 24. Nov. 2009 17: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

Hallo Herr Schulz

die Lösung funktioniert und ist mal wieder recht 'tricky'.

Was mir auffiel:
Das Fenster welches ich abfange, öffnet sich zu langsam. Also der MakroCode ist schon wieder aus der Schleife raus.

Wie kann man das Makro eine Sekunde verharren lassen bevor es in die Schleife rennt?

Gruß das Pausenbrot

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

Pausenbrot
Mitglied



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

Beiträge: 20
Registriert: 24.10.2007

erstellt am: 24. Nov. 2009 19: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

Ist ja klar. Jetzt ist mir ein Licht aufgegangen:

Warten bis Fenster aufgegangen.
Weiter wenn Fenster geschlossen.

Stand ja oben schon alles beschrieben. Also nix mit Makro verzögern.

Gruß v. Pausenbrot

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

ThomasJay
Mitglied
Dipl-Ing


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

Beiträge: 159
Registriert: 19.04.2011

CATIA V5 R19

erstellt am: 28. Apr. 2011 14:20    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 Pausenbrot 10 Unities + Antwort hilfreich

wäre es möglich eine Geometrisches Set zu erzeugen bevor man die Funktion startet, sodass das Ergebnis in diesem neue und leeren Set abgelgegt wird, und dass ich danach mit einer Bedingung fortfahre die true wird, wenn dieses Set ein oder mehrere Elemente enthält?

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