Autor
|
Thema: betrifft: Makrorecorder (1654 mal gelesen)
|
defekt Mitglied fashion design

 Beiträge: 50 Registriert: 03.05.2004
|
erstellt am: 20. Jul. 2005 23:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Ich beschäftige mich seit einiger Zeit mit dem Makrorecorder von TurboCAD und hätte da eine spezielle Frage: Ist es möglich, Prozeduren und Funktionen im Recorderskript einzubauen, oder geht das nur in der VBA-Umgebung? Das Problem ist folgendes: Ich habe die Zeichnung im Recorderskript mittels der "Click"-Funktion aufgebaut (z.B.: Click x, y, 0, 1). Diese Funktion gibt es aber in der VBA-Umgebung nicht, zumindest kann ich keine Entsprechung finden! Dort geht nur .Add(x, y, 0, true, true, true, true, true, false) Das ist irgendwie aufwendiger, ich müsste das ganze Makro umschreiben und noch dazu, wo ich die Bedeutung der letzten 6 Parameter nicht kenne. Vielleicht gibts ja für diese Click-Methode irgendeine Entsprechung, die sich in der VBA-Umgebung anwenden lässt? Jedenfalls habe ich mit VBA noch nicht die Erfahrung, und wollte zuerst versuchen, Recorderskripts abzuwandeln. Da fehlt mir aber die Möglichkeit, Funktionen und Prozeduren anzuwenden. Geht das trotzdem irgendwie? Ich möchte Zeichenfunktionen, die ich immer wieder mal brauchen kann (zum Beispiel den Mittelpunkt einer Linie ermitteln und fangen) auf kleine Funktionen aufteilen, damit die Makros übersichtlicher und leichter umzuschreiben/wiederzuverwenden sind. Bitte helft mir, ich bin auf eure Hilfe angewiesen! Vielen Dank! Andrea Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spp Mitglied
 
 Beiträge: 180 Registriert: 28.03.2002 TurboCAD Professional V11
|
erstellt am: 21. Jul. 2005 21:09 <-- editieren / zitieren --> Unities abgeben:          Nur für defekt
Hallo Andrea, in der VBA-Umgebung musst du die .Add Methode verwenden, wobei du die letzten 6 Parameter weglassen kannst, da diese optional sind. Wenn du im MacroRecorder die Option "MouseClicks" deaktivierst, wird übrigens auch hier die .Add Methode verwendet. Beschreibungen zur Syntax der Befehle findest du unter http://forums.imsisoft.com/turbocad/tcsdk/ Für die .Add Methode findet sich dort folgende Beschreibung: -------------------------------------------------
Add Method Creates and adds a new Graphic object to the collection. [...] Syntax 8 expression.Add(X, Y, Z, PenDown, Selectable, Snappable, Editable, Linkable, Calculated, Before, After) expression Required. An expression that returns a Vertices object. X Required Variant. X coordinate of the vertex. Y Optional Variant. Y coordinate of the vertex. Z Optional Variant. Z coordinate of the vertex. PenDown Optional Variant. True if the segment to this vertex is drawn. Selectable Optional Variant. True if the vertex can be selected. Snappable Optional Variant. True if the vertex can be snapped to. Editable Optional Variant. True if the vertex can be edited. Linkable Optional Variant. True if the vertex can be linked to. Calculated Optional Variant. True if the Vertex object is recalculated by the RegenMethod. Before Optional Variant. Vertex object or index to follow this one. After Optional Variant. Vertex object or index to precede this one. Return Value Vertex. The newly created Vertex object. ------------------------------------------------- mfg Sebastian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
defekt Mitglied fashion design

 Beiträge: 50 Registriert: 03.05.2004
|
erstellt am: 21. Jul. 2005 21:46 <-- editieren / zitieren --> Unities abgeben:         
Danke Sebastian, super! Habe die Parameter und ihre Bedeutung doch noch gestern nach langem Suchen im Objektkatalog gefunden (muss noch erst damit umgehen lernen). Das mit dem Deaktivieren des Klickens wusste ich noch nicht, muss ich gleich ausprobieren. Du hast mir sehr geholfen, vor allem mit der Aussage, dass diese Parameter ohnehin optional sind- denn nach dieser Info hatte ich im Objektkatalog vergeblich gesucht (also, welchen Standardwert, true oder false, die einzelnen Parameter haben); also kann ich die restlichen Parameter weglassen. À propos: wo steht eigentlich der Standardwert für jeden Parameter bzw. wie finde ich diesen raus? Jetzt habe ich noch zwei Fragen: die schon im alten Posting gestellte mit den Funktionen und Prozeduren im Recorder (wo ich mal annehme, dass das nicht geht, da ja das Codegerüst anders aufgebaut ist und das main schon keinen Anfang und kein Ende hat - wo also die Unterfunktionen hinschreiben?) und zweite Frage: gibt es eine Möglichkeit, in der VBA-Umgebung Text aus der Zwischenablage in den Code hineinzukopieren? Strg+V funktioniert nicht. Es kann doch nicht sein, dass ich Codebeispiele aus dem Internet mühsam abschreiben muss? Vielen Dank, Andrea [Diese Nachricht wurde von defekt am 21. Jul. 2005 editiert.] [Diese Nachricht wurde von defekt am 21. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H. Scheurich Mitglied
 
 Beiträge: 161 Registriert: 21.06.2002
|
erstellt am: 21. Jul. 2005 22:59 <-- editieren / zitieren --> Unities abgeben:          Nur für defekt
Hallo Andrea, auch in VBS (Visual Basic Script) kannst du Functionen und Proceduren verwenden. Das copy and paste funktioniert auch in der VBA-IDE. In deutschen Versionen ist kopieren "Strg + C" und einfügen "Strg + V". Probiere es doch mal den Quelltext vom Browser in das "Notepad" von Windows zu kopieren. Wenn das nicht geht, liegt der Fehler wo anders. Gruss, H. Scheurich.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
defekt Mitglied fashion design

 Beiträge: 50 Registriert: 03.05.2004
|
erstellt am: 21. Jul. 2005 23:25 <-- editieren / zitieren --> Unities abgeben:         
OK der Fehler lag woanders, wahrscheinlich wartete das Makro bei der Ausführung auf eine Eingabe von mir, oder funktionierte nicht richtig. Nach einem Neustart des Programms funktioniert es wieder einwandfrei. Hatte mich schon gewundert... wo es doch ein Editor wie jeder andere sein sollte. Vielen Dank! Was die Funktionen und Prozeduren angeht: der Makrorecorder verwendet VBS? auch in Version 9? Ich dachte immer, Skriptsprachen seinen nur fürs Internet, verzeih meine Unwissenheit. Kannst du mir vielleicht kurz erläutern, wies funktioniert? Vielleicht ein kurzes Beispiel? Muss nicht gleich heute sein, aber mich würds wirklich brennend interessieren. Recht schönen Dank für die Hilfe! Andrea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RexDanni Moderator
     

 Beiträge: 2026 Registriert: 06.06.2000 TurboCAD V30 Pro Platinum German Workstation HP Z4 G6 Intel Xeon W2123 3,6GHz, 8,25 MB 32GB DDR4 SDRAM Samsung SSD 870 QVO 1TB Windows 11 pro 64 for Workstations NVIDIA GeForce RTX 4060 Ti
|
erstellt am: 22. Jul. 2005 08:34 <-- editieren / zitieren --> Unities abgeben:          Nur für defekt
|
H. Scheurich Mitglied
 
 Beiträge: 161 Registriert: 21.06.2002
|
erstellt am: 22. Jul. 2005 10:08 <-- editieren / zitieren --> Unities abgeben:          Nur für defekt
|
defekt Mitglied fashion design

 Beiträge: 50 Registriert: 03.05.2004
|
erstellt am: 22. Jul. 2005 15:07 <-- editieren / zitieren --> Unities abgeben:         
|
defekt Mitglied fashion design

 Beiträge: 50 Registriert: 03.05.2004
|
erstellt am: 22. Jul. 2005 21:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Also, um mein Problem zu verdeutlichen, hier der Code des Recorderskripts mit eingebauter Function, die nicht funktioniert- Es kommt immer eine Fehlermeldung. Was habe ich falsch gemacht? Wie müsste man es machen, damit es funktioniert? --------------------------------------------------------------------- Option Explicit Dim gxLayer Dim gxURec Dim gxPlayList On Error Resume Next Set gxPlayList = ActiveDrawing.GraphicSets("PlayList") if (Err.Number <> 0) then Set gxPlayList = ActiveDrawing.GraphicSets.Add("PlayList", false) else gxPlayList.Clear End If On Error GoTo 0 Dim gxChild Set gxURec = ActiveDrawing.AddUndoRecord("Script Play Add Graphic Entity") Set gxChild = gxPlayList.Add(11,,false,"Normal Lines") With gxChild.Vertices .Clear Dim gxVrt Set gxVrt = .Add(50.0000000000000000, 200.0000000000000000, 0.0000000000000000, true, true, true, true, true, false) Set gxVrt = .Add(225.0000000000000000, 100.0000000000000100, 0.0000000000000000, true, true, true, true, true, false) End With gxChild.Closed = false ActiveDrawing.Graphics.AddGraphic gxChild gxURec.AddGraphic gxChild gxChild.Draw gxURec.Close Properties("$SNAPMODE") = "-2147479540" Properties("$SNAPMODE") = "-2147479548" Set gxURec = ActiveDrawing.AddUndoRecord("Script Play Add Graphic Entity") Set gxChild = gxPlayList.Add(11,,false,"Normal Lines") With gxChild.Vertices .Clear Set gxVrt = .Add(137.5000000000000000, 150.0000000000000000, 0.0000000000000000, true, true, true, true, true, false) Set gxVrt = .Add(100.0000000000000000, 75.0000000000000000, 0.0000000000000000, true, true, true, true, true, false) End With gxChild.Closed = false ActiveDrawing.Graphics.AddGraphic gxChild gxURec.AddGraphic gxChild gxChild.Draw gxURec.Close 'Aufruf der Function Dim Zahl As Double Zahl = 5 MsgBox Test(Zahl) gxPlayList.Delete Set gxPlayList = Nothing 'Definition der Function Function Test (X As Double) As Double Test = 2*X End Function ---------------------------------------------------------------------- Bin für jeden Hinweis sehr dankbar. Viele Grüße, Andrea Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H. Scheurich Mitglied
 
 Beiträge: 161 Registriert: 21.06.2002
|
erstellt am: 23. Jul. 2005 14:41 <-- editieren / zitieren --> Unities abgeben:          Nur für defekt
Hallo Andrea, Also hier erst einmal ein kleines Beispiel zur Thematik Funktionen und Prozeduren in VBS. '*************************************************** function pow (x,y) pow=x^y end function function add(x,y) add=x+y end function sub main dim ret ret=msgbox(cstr(pow(2,2)),0,"result function pow") ret=msgbox(cstr(add(5,3)),0,"result function add") end sub main '*************************************************** Kopiere das kurze Listing in ein leeres Recorderfenster und testes es. Dann zu deinem Listing. In VBS gibt es nur den Datentyp Variant.
Beispiel: dim x ' legt Variable x vom Typ Variant an Wie dir bestimmt aus VBA bekannt ist, kann der Datentyp Variant Daten von verschiedenen Untertypen enthalten. Zur Konvertierung eines Untertyps in einen anderen gibt es eine Vielzahl von Konvertierungsversionen. Folgende Änderungen sind somit notwendig. 'Aufruf der Function Dim Zahl Zahl = 5 MsgBox Test(Zahl) 'Definition der Function Function Test(X) Test = 2*X End Function Also dann, viel Freude beim programmieren. Gruss, H. Scheurich.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
defekt Mitglied fashion design

 Beiträge: 50 Registriert: 03.05.2004
|
erstellt am: 23. Jul. 2005 16:57 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |