Zeichenmaschine

-- V1 vereinbaren für das RagTime-Zeichnen-Maß für cm. RagTime rechnet mit 28.3465 für 1 cm.
set V1 to 2.83465

-- P vereinbaren für 10 Bezierkurvenpunkte in mm (jeweils 3 Koordinaten x, y)
-- für Bezierpunkt 1 und -1 sind nur je 2 Werte angegeben, für Bezierpunkt 3 und weitere je 3 Werte
set P01 to {100 * V1, 22 * V1}
set P01b to {100 * V1, 22 * V1}
set P02a to {0, 22 * V1}
set P02 to {0, 22 * V1}
set P02b to {0, 22 * V1}
set P03a to {0, 18 * V1}
set P03 to {0, 18 * V1}
set P03b to {0, 18 * V1}
set P04a to {13 * V1, 18 * V1}
set P04 to {13 * V1, 18 * V1}
set P04b to {13 * V1, 18 * V1}
set P05a to {13 * V1, 13 * V1}
set P05 to {13 * V1, 13 * V1}
set P05b to {13 * V1, 13 * V1}
set P06a to {0, 13 * V1}
set P06 to {0, 13 * V1}
set P06b to {0, 13 * V1}
set P07a to {0, 8 * V1}
set P07 to {0, 8 * V1}
set P07b to {6.5 * V1, 8 * V1}
set P08a to {6.5 * V1, 1 * V1}
set P08 to {13 * V1, 1 * V1}
set P08b to {13 * V1, 1 * V1}
set P09a to {13 * V1, 0 * V1}
set P09 to {13 * V1, 0 * V1}
set P09b to {13 * V1, 0 * V1}
set P10a to {100 * V1, 0 * V1}
set P10 to {100 * V1, 0 * V1}

make at beginning of drawing "Kurvenpunkte" of document 1 new Bezier curve with data {P01, P01b, P02a, P02, P02b, P03a, P03, P03b, P04a, P04, P04b, P05a, P05, P05b, P06a, P06, P06b, P07a, P07, P07b, P08a, P08, P08b, P09a, P09, P09b, P10a, P10}
select Bezier curve 1 of drawing "Kurvenpunkte" of document 1
set name of selection to "Konterprofil"

Moin, Liste!
RagTime 6 als Zeichenmaschine einzusetzen, ist richtig lohnend. Obiges Skript wurde extern mit dem Scripteditor aufgenommen, nachgearbeitet, ausprobiert und dann in das RagTime-Dokument unter Extras > Befehle und Skripte als Skript eingefügt und in einen Knopf gezogen.

3 Fragen:
- Kann der Name für die neue Bezierkurve gleich mit in der Anweisung “make at beginning of drawing "Kurvenpunkte" new Bezier curve³ vergeben werden (der Umweg über select und set wirkt etwas umständlich)?
- Unter welchen Umständen kann "of document 1" weggelassen werden?
- Wie kann ich oben die übersichtliche Vereinbarung für die Bezierkurvenpunkte (set P...) so schreiben, daß die Werte aus Rechenblattzellen kommen?

Das Inhaltsverzeichnis im AppleScript-Forum
http://db.ragtime.de/FAQD/fmpro?-db=pag.fp5&-format=datensatz2.html&-lay=allfields&RecID=478&-token.0=&-TOKEN.2=&-find
hat mir sehr weitergeholfen. Danke an die Entwickler!

Norbert Lindenthal

_________________________________________________
Die macnews.de Mailingliste Ragtime:
http://lists.macnews.de/cgi-bin//listinfo/ragtime

Neu: Das Mailinglistenarchiv unter
http://forum.macnews.de/lists

Zeichenmaschine

#3820 On 2 Oktober, 2005 12:36 Lutz Cleffmann said,

Sieht ja alles recht interessant aus. Vielleicht kann mal jemand für
die Blöden hier erklären, was dieses Skript tut bzw. tun soll.
Wir sind ja nicht alle Apple-Skript-Profis.

Danke
Lutz Cleffmann
--
_________________________________________________
Die macnews.de Mailingliste Ragtime:
http://lists.macnews.de/cgi-bin//listinfo/ragtime

Neu: Das Mailinglistenarchiv unter
http://forum.macnews.de/lists

Re: Zeichenmaschine

#3825 On 2 Oktober, 2005 18:51 Listenteilnehmer said,

Moin, Lutz,
was soll mein Skript? Bei meiner Faszination für genaue Zeichnungen, die ich gerne mit RagTime mache, weil ich auch Bilder und Tabellen und Texte und Auswertungsgraphiken zueinanderordnen und drucken kann, fiel mir zunächst die Möglichkeit auf, mit der Objektkoordinaten-Palette auch einzelne Punkte genau einstellen zu können. Also forderte ich von RagTime, eine Objekterstellungsschleife zu ermöglichen, die sich für mehrere Zeichnungsobjekte die Maße aus einem Rechenblatt holt. Jemand gab mir den Tip, daß AppleScript das erledigt. Und dann entdeckte ich, daß AppleScript sogar die Steuerärmchen der Bezierkurvenpunkte beziffern kann, was mit der Maus nicht gelingt.
Im Moment fertige ich an einer Tischfräse Holzleisten mit Konterprofil, wie man sie von Möbeltüren kennt. Die Maße für eine solche Leiste kann man aus den 10 Punkten P01 bis P10 als Millimterangaben herauslesen, wie ich sie vor dem Skript als Variablen vereinbare, weil sie in dieser Spaltendarstellung zum späteren Ändern schneller gefunden werden.
Nun bin ich gespannt, ob es einen Profi gibt, der mir auf die Sprünge helfen kann, wie ich Zellinhalte als Zahlenwerte in Variablenlisten, also innerhalb geschweifter Klammern, einlesen kann.
Faszinierend ist, wenn es mal läuft, wie schnell eine solche genaue Zeichnung fertig ist. Ich freue mich auf RagTime 6, weil damit die Veröffentlichung solcher Zeichnungsobjekte auf Netzseiten ebenso rasant geht.
Schönes langes Wochenende!
Norbert Lindenthal

_________________________________________________
Die macnews.de Mailingliste Ragtime:
http://lists.macnews.de/cgi-bin//listinfo/ragtime

Neu: Das Mailinglistenarchiv unter
http://forum.macnews.de/lists

Zeichenmaschine

#3827 On 3 Oktober, 2005 06:36 Thomas Kaegi said,

Hallo Norbert

Wenn du das Rechenblatt mit den Werten "Tabelle" nennst und die Werte
für die a-Punkte in den Spalten A/B, für die Hauptpunkte in Spalten
C/D und für die b-Punkte in Spalten E/F eingibst, dann können die
ersten beiden Zeilen deines Scripts wie folgt aussehen:

set P01 to {(cell "C1" of table "Tabelle" of document 1) * V1, (cell
"D1" of table "Tabelle" of document 1) * V1}
set P01b to {(cell "E1" of table "Tabelle" of document 1) * V1, (cell
"F1" of table "Tabelle" of document 1) * V1}

Für die übrigen Zeilen analog.

Ich bin kein AppleScript-Guru und bin jeweils froh, wenn meine
Scripts funktionieren. Gut möglich also, dass es auch einfacher geht.
Noch ein Tipp: Scripts sind nach kurzer Zeit sehr schwer
nachzuvollziehen. Füge viel Kommentar in deine Scripts ein -
kommentiere jeden Schritt!

Mit freundlichem Gruss
Thomas
--
_________________________________________________
Die macnews.de Mailingliste Ragtime:
http://lists.macnews.de/cgi-bin//listinfo/ragtime

Neu: Das Mailinglistenarchiv unter
http://forum.macnews.de/lists

Re: Zeichenmaschine

#3830 On 3 Oktober, 2005 10:50 Listenteilnehmer said,

Moin, Thomas,
Deine Ideen haben sehr weitergeholfen. Bis zu
range war ich gekommen, durch Dich nun zu cell.
Ich kämpfe nun mit dem Problem, wie ich die
Definition von Punkten unterdrücken kann, falls
ihre Werte "empty" sind. Mit if-Abfragen wird das
Skript schon für 10 Punkte recht langsam.
V1 ist ins Rechenblatt verlagert. Immerhin
gelingt es mir schon mal, auf Zellinhalte direkt
zu verweisen.

Im folgenden Beispiel werden für die ersten 3
Bezierpunkte je 3 x- und je 3 y-Werte aus den
zugehörigen 18 Zellen gelesen. Meinen Anfang
hatte ich auf 10 Bezierpunkte ausgelegt. Dafür
würden 90mal " of table "Kurve" of document 1" zu
schreiben sein. Das fördert nicht die Kürze und
Übersichtlichkeit.

if range "I11:J11" of table "Kurve" of document 1
is not "" then set P01a to {(cell "I11" of table
"Kurve" of document 1), (cell "J11" of table
"Kurve" of document 1)}
if range "K11:L11" of table "Kurve" of document 1
is not "" then set P01X to {(cell "K11" of table
"Kurve" of document 1), (cell "L11" of table
"Kurve" of document 1)}
if range "M11:N11" of table "Kurve" of document 1
is not "" then set P01b to {(cell "M11" of table
"Kurve" of document 1), (cell "N11" of table
"Kurve" of document 1)}
set P01 to {P01X} if range "I12:J12" of table "Kurve" of document 1
is not "" then set P02a to {(cell "I12" of table
"Kurve" of document 1), (cell "J12" of table
"Kurve" of document 1)}
if range "K12:L12" of table "Kurve" of document 1
is not "" then set P02X to {(cell "K12" of table
"Kurve" of document 1), (cell "L12" of table
"Kurve" of document 1)}
if range "M12:N12" of table "Kurve" of document 1
is not "" then set P02b to {(cell "M12" of table
"Kurve" of document 1), (cell "N12" of table
"Kurve" of document 1)}
set P02 to {P02a} if range "I13:J13" of table "Kurve" of document 1
is not "" then set P03a to {(cell "I13" of table
"Kurve" of document 1), (cell "J13" of table
"Kurve" of document 1)}
if range "K13:L13" of table "Kurve" of document 1
is not "" then set P03X to {(cell "K13" of table
"Kurve" of document 1), (cell "L13" of table
"Kurve" of document 1)}
if range "M13:N13" of table "Kurve" of document 1
is not "" then set P03b to {(cell "M13" of table
"Kurve" of document 1), (cell "N13" of table
"Kurve" of document 1)}
set P03 to {P03a} make at beginning of drawing "Kurvenpunkt" of
document 1 new Bezier curve with data
{P01&P02&P03}

Nun suche ich den Weg, wie ich in der
data-Übergabe diejenigen Punkte weglassen kann,
die "empty" beinhalten, denn Bezierkurven lassen
sich nicht mit "empty" als Werte zeichnen.

Immerhin funktioniert die Zeichenmaschine, wenn
für 10 Punkte von 60 möglichen Werten 24 für die
Bezierkurve notwendige Werte angegeben sind. Ich
fülle die fehlenden 36 Zellen mit 2
Rechenblattformeln.

Herausforderung bleibt noch der erste und der
letzte Bezierpunkt, der statt 3 nur 2 Koordinaten
bekommt, und leere zeilen, falls die Bezierkurve
weniger als 10 Bezierpunkte braucht.

Danke für die Hilfe,
Norbert Lindenthal

--- StripMime Report -- processed MIME parts ---
multipart/alternative
text/plain (text body -- kept)
text/html
---
_________________________________________________
Die macnews.de Mailingliste Ragtime:
http://lists.macnews.de/cgi-bin//listinfo/ragtime

Neu: Das Mailinglistenarchiv unter
http://forum.macnews.de/lists

Re: Zeichenmaschine

#3836 On 3 Oktober, 2005 23:20 Listenteilnehmer said,

Moin, Thomas,
Deine Ideen haben sehr weitergeholfen. Die Zusammenstellung einer Werteliste für die Bezierkurvenpunkte habe ich ins Rechenblatt verlagert. Schaue ich in die eine Zelle, in der die Werteliste zusammengetragen ist, steht dort alles so, wie AppleScript sie als data bräuchte. Mein AppleScript liefert mit get ebenfalls meine korrekte Werteliste, jedenfalls wenn ich mit Augen lese. Nur ein Knackpunkt bleibt. Die Liste erscheint als Text in Tütteln und wird von AppleScript leider nicht als Werteliste verstanden und weitergeführt, sondern als Text.

Mein Script unter Befehle und Skripte sieht nun sehr einfach aus, und es ist schnell:

set P to cell "P8" of table "Kurve" of document "Zeichenmaschine.rtd"
make at beginning of drawing "Kurvenpunkte" of document "Zeichenmaschine.rtd" new Bezier curve with data {P}

mit
get {P}

erhalte ich
{"{283.46500, 62.36230}, {283.46500, 62.36230}, {0.0, 62.36230}, {0.0, 62.36230}, {0.0, 62.36230}, {0.0, 51.02370}, {0.0, 51.02370}, {0.0, 51.02370}, {37.85045, 51.02370}, {37.85045, 51.02370}, {37.85045, 51.02370}, {37.85045, 37.85045}, {37.85045, 37.85045}, {37.85045, 37.85045}, {0.0, 37.85045}, {0.0, 37.85045}, {0.0, 37.85045}, {0.0, 23.67720}, {0.0, 23.67720}, {17.00790, 23.67720}, {20.84255, 3.83465}, {37.85045, 3.83465}, {37.85045, 3.83465}, {37.85045, 0.0}, {37.85045, 0.0}, {37.85045, 0.0}, {283.46500, 0.0}, {283.46500, 0.0}"}
(für 10 Bezierpunkte).

Hier stören die Tütteln am Anfang und am Ende zwischen den geschweiften Klammern.
Wie kann ich aus diesem String eine Werteliste ohne Tütteln machen?

Norbert Lindenthal

_________________________________________________
Die macnews.de Mailingliste Ragtime:
http://lists.macnews.de/cgi-bin//listinfo/ragtime

Neu: Das Mailinglistenarchiv unter
http://forum.macnews.de/lists