Geskriptete Vektorzeichen-App (à la Satimage Smile)

Ich habe die Smile-App von Satimage verwendet , um Vektordiagramme (für technische Illustrationen, Laserschnittmuster usw.) über AppleScript zu erstellen, das mit Zeichenbefehlen erweitert wurde. Es ist wie das Gegenteil von PaintCode , das Zeichnungen in Code umwandelt. (Ich bin Mathematiker, kein Künstler, also will/muss ich Bilder mit Formeln und Gleichungen beschreiben.)

Leider hat macOS Mojave die OSAX-Funktionalität zerstört, wodurch Smile völlig unbrauchbar wurde.[*] Außerdem kann die ach so rudimentäre Smile-Benutzeroberfläche ziemlich frustrierend sein. Es ist Zeit, nach einer Alternative zu suchen.

Der "Code" muss nicht AppleScript sein. Ich habe ein paar Open-Source-Apps (normalerweise Qt) zum Bearbeiten von TikZ, einer programmatischen Grafiksprache, gesehen. Diese sind jedoch darauf ausgerichtet, den TikZ-Code für den Import in LaTeX-Dokumente und so weiter zu optimieren; Ich suche eher einen eigenständigen Dokumenteditor, der direkt in PDF oder EPS exportieren kann. (Aber wenn es einen wirklich guten Mac-ähnlichen TikZ-Editor gibt , würde ich ihn in Betracht ziehen.)


[*] Es gibt anscheinend eine AppleScript-Problemumgehung mit einer zusätzlichen SatimageOSAX-App , aber ich habe sie nicht mit Smile zum Laufen gebracht. Außerdem ist es nur ein Patch, der irgendwann kaputt gehen wird.

Ich empfehle einen Blick auf Python und Matplotlib ( matpltotlib.org ) zu werfen - beide sind standardmäßig in Mojave installiert und sehr einfach zu bedienen - als Mathematiker geht das schnell - man kann es für 2D/3D-Grafiken verwenden, die unterstützten Bilder sind PNG/EPS/JPG/SVG usw. Eine Anmerkung zum .eps-Format – hat einen Sicherheitsfehler und Apple konvertiert solche Bilder sofort in .pdf, wenn sie in der Vorschau geöffnet werden.
@Yoan: Ich werde es mir ansehen. (Ich habe Python noch nie benutzt, aber ich habe das obligatorische XKCD gesehen , also bin ich entsprechend fasziniert.) Obwohl ich Befehlszeilen-Spielereien nicht völlig abgeneigt bin, um Sachen zu installieren, verwende ich eine GUI- basierten Computer aus einem bestimmten Grund. :) Die Matplotlib-Seite erwähnt drei Distributionen von Drittanbietern, die "einfach funktionieren": Anaconda , Canopy und ActiveState . Irgendwelche Gedanken dazu?
Ja, Anaconda, auf jeden Fall. Hat mehrere Anwendungen, Spider ist eine IDE mit Texteditor und Ipython-Debugger, alles was Sie brauchen, um es in einer GUI zu tun. Die Python-Version in Mohave ist 2.7.10, aber Anaconda hat die neueste, 3.7.0. Es wird empfohlen, es in Ihrem $HOME-Pfad zu installieren. Dies ist als solches sehr nützlich, insbesondere wenn Sie Emacs verwenden (unterstützt Latex, Python, Org-Modus usw.). Python 2.7 wird von Apple verwendet, um Software auf Ihrem Computer zu warten/zu installieren, daher ist es ratsam, zumindest am Anfang nicht einzugreifen.

Antworten (3)

MetaPost

Eine Open-Source- und vollständige Bildzeichensprache mit viel Unterstützung und Dokumentation ist MetaPost .

Das MetaPost-System (von John Hobby) implementiert eine Bildzeichensprache, die der von MetaFont sehr ähnlich ist; der Unterschied besteht darin, dass MetaPost Vektorgrafikdateien anstelle von lauflängencodierten Bitmaps ausgibt; Als Ausgabeformate stehen PostScript und SVG zur Verfügung.

MetaPost ist in der Lage, komplexe Bilder und Formen zu erstellen :

Mit MetaPost erstelltes Beispielbild

beginfig(11)
    pair A, B, C;
    A:=(0,0); B:=(1cm,0); C:=(0,1cm);
    draw A--B;
    draw B--C dashed evenly;
    draw C--A dashed withdots;

endfig;

Komplexes Bild gezeichnet mit MetaPost

beginfig(117)
  u:=2cm;
  pair A, B, C, D, E;
  path p, q, r;

  A = u*up;
  p := (-.2)[ A, A rotated 72 ] -- (1.2)[ A, A rotated 72 ];
  for i=0 upto 5:
    draw p rotated 72i;
  endfor;
  B := 1/2[ A, A rotated 72 ];
  C := .8*B;

  p := B --- C .. (C rotated (2*72)){right};
  % On allonge le chemin p
  p := ( (point 0 of p) - 4mm*unitvector(direction 0 of p))
       --
       (point 0 of p)
       & p &
       (point 2 of p)
       --
       ( (point 2 of p) + 4mm*unitvector(direction 2 of p));

  E = p intersectionpoint (p rotated 72);
  q := p cutbefore fullcircle scaled -2mm shifted E;
  r := p cutafter fullcircle scaled  2mm shifted E;

  for i=0 upto 4:
    draw q rotated 72i;
    draw r rotated 72i;
    draw A rotated 72i withpen pencircle scaled 4bp;
    draw B rotated 72i withpen pencircle scaled 4bp;
    draw C rotated 72i withpen pencircle scaled 4bp;
  endfor;
endfig;

Sie können MetaPost als Teil von BasicTex installieren .

Skizzieren

Sketch richtet sich eher an Designer als an Ingenieure und bietet eine programmierbare Schnittstelle und AppleScript-Unterstützung.

Randnotiz

Nebenbei bemerkt, Apple hat einmal eine Beispiel-Anwendung zum Zeichnen von Vektoren namens Sketch verteilt. Ein Zweck von Sketch bestand darin, zu demonstrieren, wie AppleScript in eine Anwendung integriert werden kann.

Faszinierend. MetaPost war all die Jahre genau dort im "Schriftsatzprogramm"-Popup von TeXShop! Die Aussicht, sich an ein weiteres benutzerdefiniertes Skriptparadigma zu gewöhnen, ist etwas abschreckend, aber MP scheint gut für die Art von Figuren geeignet zu sein, die ich normalerweise mache (viel Symmetrie). Ich werde eine Weile experimentieren. In der Zwischenzeit lasse ich die Frage offen, ob es noch mehr Alternativen gibt.
Übrigens: Wissen Sie, ob es eine Möglichkeit gibt, TeXShop dazu zu bringen, das gerenderte MP-Bild automatisch anzuzeigen? Zurück in den Finder zu gehen, um die generierte .ps-Datei zu öffnen, ist schon mühsam ... und ich musste es nur zweimal tun! :) (Hmmmm ... Ich frage mich, ob ich eine Ordneraktion "Überwachter Ordner" einrichten kann, um neu erkannte .ps-Dateien in der Vorschau zu öffnen.)
Ich gehe davon aus, dass ein Ansatz mit überwachten Ordnern funktionieren würde. Vielleicht lohnt es sich, eine neue Frage zu stellen , um mehr Antworten zu erhalten. Wenn Sie Ihren ersten Versuch eines Watch-Folder-Workflows oder -Skripts teilen können, werden Sie wahrscheinlich andere anziehen, die gerne dabei helfen, ihn zu verfeinern oder Probleme zu beheben.
Zumindest das Erlernen dieses Skripting-Paradigmas wird Ihnen etwas geben, das macOS überdauern und auf andere Plattformen portierbar sein könnte! Ich hoffe, MetaPost funktioniert für Sie.
Leider glaube ich nicht, dass MetaPost eine praktikable Lösung ist. Beim Lesen des Handbuchs (!?!) finde ich Folgendes: "Aufgrund des mathematischen Modells, das zur Beschreibung von Pfaden in MetaPost verwendet wird, sind dies alles keine genau kreisförmigen Pfade, sondern sehr gute Annäherungen". (Tatsächlich sehe ich im generierten PostScript, dass „Kreise“ verschiedene Bezier- curvetos anstelle von arcs umfassen.) Annäherungen wären für meine Illustrationen in Ordnung, aber ich brauche „echte“ Kreise für meine Laserschneidprojekte, die mein Hauptanliegen sind .
Übrigens: Ich habe eine Ordnerüberwachungsaktion, um gerenderte Bilder automatisch anzuzeigen. Es gibt eine ärgerliche Verzögerung von ein paar Sekunden, und ich muss mein aktuelles Skript verfeinern, um den Ordner nicht mit jeder Änderung an der Figur mit einem weiteren zu verunreinigen, filename.###.pdfaber es funktioniert.
Es tut uns leid zu hören, dass die kreisförmigen Pfade Annäherungen sind. Vielleicht ist eine Open-Source-CAD-Anwendung besser für Ihre Anforderungen geeignet?

Open Source - Computergestütztes Design

Eine weitere Möglichkeit für Ihre Laserschneidprojekte ist eine vollständige CAD-Anwendung (Computer Aided Design). Es gibt einige Open-Source-Optionen (kostenlos und von der Community gepflegt) sowie viele kommerzielle Optionen.

  1. LibreCAD

    LibreCAD ist eine kostenlose Open-Source-CAD-Anwendung für Windows, Apple und Linux. Support und Dokumentation sind kostenlos von unserer großen, engagierten Community aus Benutzern, Mitwirkenden und Entwicklern.

  2. QCAD - 2D-CAD

    QCAD ist eine kostenlose Open-Source-Anwendung für computergestütztes Zeichnen (CAD) in zwei Dimensionen (2D). Mit QCAD können Sie technische Zeichnungen wie Pläne für Gebäude, Innenräume, mechanische Teile oder Schaltpläne und Diagramme erstellen.

  3. FreeCAD

    FreeCAD ist ein parametrischer Open-Source-3D-Modellierer, der hauptsächlich zum Entwerfen realer Objekte jeder Größe entwickelt wurde. Die parametrische Modellierung ermöglicht es Ihnen, Ihr Design einfach zu ändern, indem Sie in Ihren Modellverlauf zurückkehren und seine Parameter ändern.

Danke. Nach oberflächlicher Überprüfung: LibreCAD erlaubt das Zeichnen von "Befehlszeilen", aber nicht das Zeichnen von Skripten (Schleifen/Bedingungen/usw.) an sich . QCAD erstellt Skripte, aber sie müssen an anderer Stelle abgetippt und eingefügt werden; keine wirkliche Integration. FreeCAD sagt, dass es Python-skriptfähig ist, und es hat eine raffinierte Python-Konsole, die zeigt, wie die Dinge gemacht werden; Soweit ich das beurteilen kann, erfolgt die Skripterstellung jedoch über eine klobige Makroschnittstelle. (.svg-Export zeigt jedoch an, dass Kreise Kreise sind !) Als App-Hersteller entscheide ich mich vielleicht einfach für Xcode; Der Workflow wird seltsam sein, aber ich werde Kraft und Flexibilität haben.

Vergessen Sie nicht, dass PostScript selbst eine Programmiersprache mit klaren Befehlen zum Erstellen von Vektorobjekten ist.

Es gibt viele Ressourcen zum Programmieren in PostScript, nicht zuletzt auf der Website von Adobe.

+1. Da ist das ... Postscript ist nicht die "schönste" Sprache, selbst bei bescheidener Komplexität, aber meine Diagramme sind ziemlich komplex. :) Ich würde das Zeug nicht in TextEdit eingeben wollen! Eine dedizierte Postscript-Bearbeitungsumgebung mit Syntaxfärbung und Autovervollständigung und allem Schnickschnack könnte dies zu einer praktikablen Option machen, aber ich glaube nicht, dass eine solche Umgebung existiert.
Ich habe ein Modul zum Färben der Syntax für BBEdit erstellt, aber keine automatische Vervollständigung! Eine weitere Option könnte die Verwendung einer Scripting Bridge sein, um über Sprachen wie Python (Ruby?) oder AppleScript auf die CoreGraphics-APIs von MacOS zuzugreifen. Sobald Sie das Framework verstanden haben, ist das Erstellen von Funktionen zum Ausführen von Bezier-Kurven, Polygonen und Transformationen ziemlich einfach.