Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  TurboCAD
  Recorderscript nach VBA importieren?

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Turbocad
Autor Thema:  Recorderscript nach VBA importieren? (1432 mal gelesen)
defekt
Mitglied
fashion design


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

Beiträge: 50
Registriert: 03.05.2004

erstellt am: 13. Nov. 2004 16: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

Hallo!
Ich hab da mal eine bisher unbeantwortete Frage:

Im Word-internen VBA ist es möglich, einen mit dem Makrorecorder erstellten Code in die VBA-Umgebung zu importieren und dort ein VBA-Makro zu erstellen, das nach Variablen fragen kann.
Man schreibt einfach einen Text, nimmt das Ganze dabei mit dem Makrorekorder auf, den entstandenen Code importiert man in die VBA-Umgebung, ändert die gewünschten Wörter in Variablen, deklariert sie und erstellt ein Dialogfeld, das den Benutzer nach Werten für diese Variablen fragt.

Exakt dasselbe möchte ich in TurboCAD machen.
Dafür müssen aber die Skriptsprachen von VBA und dem Makrorekorder gleich sein oder zumindest compatibel, damit man den Recordercode nicht aufwändig umschreiben muss, sondern nur Werte durch Variablen ersetzen muss.
Geht das mit TurboCAD oder passen die Skriptsprachen nicht zusammen?

Ich frage mich nämlich schon die ganze Zeit über, was ein Makrorecorder für einen Sinn haben soll, wenn ich damit immer nur ganz exakt die gleichen Abläufe machen kann, aber keine variierenden Werteeingaben möglich sind. Das schränkt doch die Möglichkeiten extrem ein?
Muss ich wirklich jede Zeichnung, die variierende Werte verlangt, per Hand codieren? Das kann ja nicht sein, oder?

Ich freue mich auf hilfreiche Antworten, danke!

lg Andrea

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

H. Scheurich
Mitglied



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

Beiträge: 161
Registriert: 21.06.2002

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


Rechteck-script.zip

 
Hallo Andrea,

so weit ich informiert bin, ist der Quelltext beider "Script-Sprachen" nicht austauschbar.
Es besteht jedoch die Möglichkeit im Macrorecorder-Fenster, Quelltext von Hand
hinzu zu fügen und "Konstanten" durch "Variablen" zu ersetzen. Es ist auch möglich
Eingabewerte vom Benutzer abzufragen. Somit kann ein aufgezeichnetes Macro,
im Macrorecorder-Fenster angepast werden.
Als Beispiel habe ich das erstellen eines Rechteckes aufgezeichnet und anschließend
die Eckpunkte des Rechteckes (Länge und Breite) durch Variablen ersetzt. Weiterhin
wurden Abfragen für "Länge" und "Breite" eingefügt. Bezug für "Länge" und "Breite"
ist der "Nullpunkt".

Gruß,

H. Scheurich.

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

RexDanni
Moderator





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

Beiträge: 2017
Registriert: 06.06.2000

TurboCAD V2020/21 Pro Platinum German
Workstation HP Z4 G6
Intel Xeon W2123 3,6GHz, 8,25 MB
16GB DDR4 SDRAM
256 HP T Turbo Drive PCle SSD
Windows 10 pro 64 for Workstations
NVIDIA Quadro M4000 8GB

erstellt am: 16. Nov. 2004 07:38    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 defekt 10 Unities + Antwort hilfreich

Hallo,

ich finde das schöne an dem neuen Macrorecorder ist, das man sehr schnell ein Script hat das sich dann weiter anpassen läßt.
So spart man sich schon mal eine menge Zeit.
Und wenn man nicht weis wie eine bestimmte Funktion aussieht, kann man diese einfach aufzeichnen und dann einfügen.
Damit bekomm ich sogar mal was hin 

Servus
hans jörg 

------------------
www.cnc-modellbautechnik.de

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

fcaspar
Mitglied
Konstrukteur


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

Beiträge: 347
Registriert: 09.06.2000

erstellt am: 16. Nov. 2004 08:17    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 defekt 10 Unities + Antwort hilfreich

Hallo H. Scheurich,

da mich dieses Thema auch brennend interessiert, ich aber im Scriptrecorder noch nicht so weit vorgedrungen war, daß ich auch Variablen einsetzen konnte, hab ich das Beispielmakro getestet. Nur beim Abspielen tut sich außer der Anzeige eines leeren Ausgabefensters nichts. Wo ist der Haken? Ich vermisse im Script den Befehl:

Start "Einfügen|Linie|Rechteck"


Ciao Frank

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

H. Scheurich
Mitglied



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

Beiträge: 161
Registriert: 21.06.2002

erstellt am: 16. Nov. 2004 08:23    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 defekt 10 Unities + Antwort hilfreich

Hallo Frank,

klick mal auf "Grenzen anzeigen". Es kann sein das in dem aktuellen
Bildschirmausschnitt das Rechteck nicht sichtbar ist.

Gruß,

H. Scheurich.

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

fcaspar
Mitglied
Konstrukteur


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

Beiträge: 347
Registriert: 09.06.2000

Solidworks 2008
DBWorks R10 SP2.6

erstellt am: 18. Nov. 2004 13:51    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 defekt 10 Unities + Antwort hilfreich

Ne tut mir leid, da wird kein Recheck gezeichnet beim Ausführen des Macros. Außerdem sollte ja eine bzw. zwei InputBox aufgehen, ich bekomme aber nur ein leeres Fenster mit nem OK-Button. Vielleicht muß irgendeine Einstellung gesetzt sein, oder ein bestimmter Layer vorhanden. Ich habs jedefalls in einer leeren Zeichnung getestet.

Habs gefunden: Dein Stil Standard Linien existiert bei mir (und vermutlich bei einigen anderen nicht, da der voreingestellte Name "Normale Linien" ist. Dies geändert funktioniert das Macro.

Ciao Frank

[Diese Nachricht wurde von fcaspar am 18. Nov. 2004 editiert.]

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

fcaspar
Mitglied
Konstrukteur


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

Beiträge: 347
Registriert: 09.06.2000

erstellt am: 18. Nov. 2004 18: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 defekt 10 Unities + Antwort hilfreich

Um den Faden jetzt noch weiter zu spinnen und auch teilweise die Frage von Andrea zu beantworten:

Dieses vorliegende Recorderscript kann in ein Modul im VBA kopiert werden, sub name() und end sub dazu und schon steht es als makro zur Verfügung. Stellt sich für mich die nächste Frage. Wie kann ich vorher den Startpunkt mit der Maus für das Rechteck festlegen, wenn GetMouseClick offensichtlich nicht funktioniert?

Ciao Frank

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

H. Scheurich
Mitglied



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

Beiträge: 161
Registriert: 21.06.2002

erstellt am: 19. Nov. 2004 16: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 defekt 10 Unities + Antwort hilfreich

Hallo Frank,

es ist auch möglich mit Hilfe von "Events" Koordinaten zu erfassen.
Diese werden bei vielen Aktionen von TurboCAD gesendet.

z.B. "imsiEventMouseDown" beim drücken der linken Maustaste

Im "Event-Handler" wird eine Reaktion auf das "Event" vorgenommen.

z.B. das auswerten der Koordinatenwerte.

So ist es auch möglich, das du einen Startpunkt für das Rechteck
mit der Maus festlegen kannst.

Gruß,

H. Scheurich.

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

fcaspar
Mitglied
Konstrukteur


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

Beiträge: 347
Registriert: 09.06.2000

Solidworks 2008
DBWorks R10 SP2.6

erstellt am: 20. Nov. 2004 13:29    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 defekt 10 Unities + Antwort hilfreich

Hallo H.,

wenn Du mir jetzt noch etwas auf die Sprünge helfen könntest, wie man das Event beispielsweise anwendet, wäre das super.

Ciao Frank

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

Gerhard.S
Mitglied
Bauingenieur


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

Beiträge: 18
Registriert: 08.12.2001

erstellt am: 22. Nov. 2004 19:41    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 defekt 10 Unities + Antwort hilfreich

Hallo H.,

wie lese ich aus der Aktion "imsiEventMouseDown" die Koordinate aus.


Gruss
G.Schönhofer

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

H. Scheurich
Mitglied



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

Beiträge: 161
Registriert: 21.06.2002

erstellt am: 22. Nov. 2004 22: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 defekt 10 Unities + Antwort hilfreich


Events_X.zip

 
Hallo,

ja, jetzt weiß ich nicht recht wie ich sagen soll. Jedenfalls, das was wir vor haben,
können wir, wie es sich zur Zeit darstellt, so nicht realisieren. Ziel war und ist es
die Koordinaten eines Punktes, welcher mit der Maus gewählt wurde, im Programm zu erfassen.
Als erstes funktioniert in der deutschen Version die Funktion "GetMouseClick" nicht.
Meine nächsten Überlegungen gingen zur "Event" Auswertung. Diese funktioniert, wie ich
nun festellen mußte, zur Koordinatenermittlung nur mit "imsiEventMouseDown". Die "Events", die
ich zur Koordinatenermittlung einsetzen wollte, werden von der Application nicht gesendet, obwohl sie in der SDK
Dokumentation aufgeführet sind. Ich habe es in C++, VB und VBA getestet und kam immer auf das selbe Ergebnis,
keine "Events" "imsiEventPointSnapped" und "imsiEventPointPick".
Das hat zur folge, das beim auswerten des "imsiEventMouseDown" Events nicht die "gefangenen Koordinaten"
erfast werden, sondern die Koordinaten der aktuellen Mausposition. Das ist zwar ein kleiner Schritt vorwärts, aber nicht das,
was wir brauchen. Ganz ehrlich gesagt, nach dem derzeitigen Erkenntnisstand und dem Zustand der deutschen TC10.1-Version
schein es nicht möglich zu sein, "gefangene Punkte" programmtechnisch zu erfassen. Schade. Hoffentlich fällt euch noch etwas dazu
ein. Ich habe heute eine Anfrage zum Thema an den IMSI-Support geschickt und hoffe das bald einen Antwort mit einer Lösung
kommt.

Nun zu der Frage wie die Events ausgewertet werden.

(Hinweis: Das steht in der SDK-Dokumentation.!)
Ja, ja ich weiß. Die SDK-Dokumentation. Es ist nicht alles so verständlich. Geht mir auch so. Ich werde es mal versuchen
"rüber zu bringen".

Eine Möglichkeit:

  Eine Klassen anlegen mit der Objekte zur Eventauswertung erstellt werden können.
  Nennen wir sie mal "clsTC".
  Diese Klasse oder besser die Objekte der Klasse kann man als "Eventhandler" bezeichnen.
  In der Klasse müssen Funktionen zur Reaktion auf die benötigten "Event" vorhanden sein.
  Die Name der Functionen sind von TC vorgegeben. In unserem Fall das Event "imsiEventMouseDown"
  und die dazu benötigte Ereignisbehandlungsroutine

  MouseDown(WhichDrawing As Drawing, WhichView As View, _
          WhichWindow As Window, Button As ImsiMouseButton, _
          Shift As Long, X As Long, Y As Long, Cancel As IMSI_BOOL)

In dieser Routine die in VBA eine Function oder Procedure sein kann, werden Reaktionen
auf das auftreten des Events "MouseDown" implementiert.
Einfachste Auswertung, das anzeigen der "Screen-Werte" von X und Y.

MsgBox "MouseDown Event: X = " & X & ", Y = " & Y

Soweit zu der Klasse "clsTC". Es ist wirklich nur die einfachste Möglichkeit. In einem "richtigen" Programm muß etwas mehr getan werden.

Nun zur Anwendungsklasse oder in VBA ein Modul (Frame geht auch).

Gehen wir mal davon aus, das ein Modul in VBA von TC aufgerufen wird.
Lassen wir auch das Modul beim Namen "Modul1".
Hier benötigen wir ein Object (Instanz) der Klasse "clsTC" welches wir neu erstellen.

Dim handler as new clsTC

weiterhin eine Public-Variable zum aufnehmen der EreignisVerbindungs-ID

Public idEventConnection as long

In "Modul1" wird eine Procedure eingefügt in der das "Event" bei TC bestellt wird.
Siehe Macro.

Das ist keineswegs ein nutzbares Programm. Es soll nur zum erklären der Vorgehensweise
helfen.

Nun hoffe ich, das ich es verständlich erklären konnte, nichts wesentliches vergessen
habe und bald neue, nutzbare Infos von IMSI kommen.

Gruß,

H. Scheurich.


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

defekt
Mitglied
fashion design


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

Beiträge: 50
Registriert: 03.05.2004

erstellt am: 15. Jun. 2005 20:47    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!

Hat sich denn seit dieser Diskussion nichts Wesentliches getan?
Ich warte schon ganz gespannt auf die Lösung dieses Problems, vor allem, weil mit der Möglichkeit, angeklickte Punkte an das Skript zu "übergeben", so vieles mehr möglich ist.

Die Ausführungen weiter oben von Herrn Scheurich waren für mich nicht sehr verständlich, denn ich verstehe eigentlich nix von objektoriertierter Programmierung- ich komme mit den Events, Klassen, Modulen, Eigenschaften usw. nicht wirklich zurecht, da muss ich mich erst gründlich einarbeiten (mit Excel vielleicht, das hat auch ein bisschen was mit Zahlen und Rechnereien zu tun - die Hilfe und das Handbuch von TC sind da ja nicht sehr aufschlussreich, zum Lernen für einen Anfänger schon gar nicht geeignet).

Es wäre super, wenns da ein Tutorial gäbe, wie man solch eine Klasse erstellt (so dass es auch komplette Dummies wie ich kapieren) oder wie das Problem sonst zu lösen geht. Ich bin da noch nicht sehr weit gekommen.

Kann sich zum Beispiel jemand vorstellen, ob und wie Folgendes funktionieren könnte:
Ich klicke der Reihe nach 5 Punkte an, weise ihnen die Namen A bis E zu, diese Punktnamen wurden vorher als Variablen im Skript deklariert, haben jetzt die Koordinaten der angeklickten 5 Punkte zugewiesen bekommen, und dann baut sich beim weiteren Ablauf des Makros eine Zeichnung auf, die diese angeklickten Punkte A-E als Referenzpunkte verwendet (zum Beispiel A als Nullpunkt, B als Scheitelpunkt, C als Mittelpunkt eines Kreises usw.)
Klar könnte ich einen Kreis auch so zeichnen, ohne das Skript, aber es geht mir jetzt um eine komplexe Zeichnung, die nicht einfach aus einem Kreis besteht, und wo ich Referenzpunkte anklicken möchte, nach denen sich das Skript richtet.
Wäre sowas mit TC in Verbindung mit VBA möglich?
Wenn es diese Möglichkeit gäbe und mir ein Genie erklärt wie das geht, bin ich superglücklich...

Viele Grüße
Andrea

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