Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  TurboCAD SDK VBA
  betrifft: Makrorecorder

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:  betrifft: Makrorecorder (1654 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: 20. Jul. 2005 23:50    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 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



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

Beiträge: 180
Registriert: 28.03.2002

TurboCAD Professional V11

erstellt am: 21. Jul. 2005 21: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 defekt 10 Unities + Antwort hilfreich

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


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: 21. Jul. 2005 21:46    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 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



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: 21. Jul. 2005 22:59    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 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


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: 21. Jul. 2005 23:25    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

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





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: 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 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 VBA'ler,

macht es Euch was aus wenn ich diesen Beitrag ins  TurboCAD VBA Forum verschiebe?

Ist eigentlich dafür gedacht, damit das Forum etwas übersichtlicher bleibt.
(Um was zu sehen müsst Ihr "alle Beiträge anzeigen" einstellen)

Hans Jörg  

------------------
TurboCAD Training Center
CNC Modellbautechnik Bayer

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. Jul. 2005 10: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

Hallo Hans Jörg,

richtig, schiebe den Beitrag mal in's VBA/SDK-Forum, denn dort gehört
er hin und das Forum bekommt etwas Bewegung.

Gruss,
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: 22. Jul. 2005 15: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

Hätte ich den Beitrag im SDK-Forum schreiben sollen? Ich dachte, das geht nicht, weil es gesperrt ist. Wollte schon mal einen Beitrag betr. TCAD-SDK dort verfassen, ging aber nicht.

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: 22. Jul. 2005 21:39    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!
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



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: 23. Jul. 2005 14: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 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


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: 23. Jul. 2005 16:57    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

Wow, super, vielen, vielen Dank!
Beides funktioniert tadellos!
Hat also nur am Datentyp gelegen...
nochmals danke an alle für die Mühe und die wertvolle Hilfe!

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)2025 CAD.de | Impressum | Datenschutz