Ich suche nach einer Vektorsoftware wie Illustrator, die über eine Art Konsole verfügt, die es ermöglicht, Ankerparameter numerisch zu optimieren und auch Dinge wie "Segmente und Anker benennen", "Zwei Anker zwingen, identisch oder symmetrisch zu einem Punkt zu sein, oder eine Achse, so dass jede Änderung, die an einer vorgenommen würde, automatisch in die andere eingefügt würde", "bewege einen Anker A so, dass der Abstand von A zu einem anderen Anker B auf Achse C x ist".
Dinge wie dieses. Gibt es dafür ein Plugin oder braucht man eine neue Software?
OK, jetzt ertragen Sie mich, aber es gibt eine solche Kategorie von Programmen: CAD. Es hängt also ein wenig von Ihren Komplexitätsanforderungen ab, dass Sie die Dinge möglicherweise richtig auswählen müssen. Die CAD-Software kann dies nicht nur tun, sondern auch ohne große Probleme in der GUI.
Diese kosten hart Geld. Solver für geometrische Beschränkungen sind ziemlich gängige Engineering-Tools.
Animation 1 : Eine einfache Demo, die den geometrischen Solver in Aktion zeigt (die fragliche Anwendung ist Creo)
Ich habe herumgespielt und langsam einen Solver wie diesen für den Illustrator erstellt, aber das Illustrator-Objektmodell ist etwas restriktiv.
Sie können auch in den meisten Grafikanwendungen Skripte erstellen. Ein guter Anfang könnte dieser Beitrag über Illustrator-Skripte und eps/svg-Generierung sein .
Das SVG-Format ist textbasiert. SVG-Dateien können mit Notepad bearbeitet werden. Binäre (Raster-) Daten sind Base-64 (soweit ich weiß).
https://developer.mozilla.org/en-US/docs/Web/SVG
Darüber hinaus unterstützt Illustrator Scripting und kann theoretisch so eingerichtet werden, dass es mit solchen Optionen umgeht.
Die Verarbeitung lässt dich das tun. Und Sie können die Arbeit in eine Vektordatei exportieren.
Für den Einsatz in der Maschinenwerkstatt gibt es eine breite Palette von MCAD, die dies problemlos können: SolidWorks, Inventor, Alibre, solidedge und seine großen Brüder UGNX, Catia, ProE ... usw
Für das Web habe ich Inkscape (www.inkscape.org) plus Javascript (einschließlich Jquery-Skripte) verwendet, um eine SVG-basierte Grafik zu steuern.
Diese Frage ist eigentlich ziemlich weit gefasst. Können Sie Vektorgrafiken programmgesteuert manipulieren? Ja. Das ist eigentlich das, was Vektorillustrationssoftware tut. Es fügt einfach auch eine GUI hinzu, mit der der Benutzer mit ihm interagieren kann.
Ich denke, Sie fragen vielleicht mehr nach einer Befehlszeilen-Benutzeroberfläche. Wie bereits erwähnt, haben die meisten CAD-Programme dies als Option. Teilweise als Vermächtnis von damals, als die Befehlszeile aufgrund von GUI-Einschränkungen ein wertvolles Werkzeug war.
Darüber hinaus kann eine Menge Software über eine Befehlszeile und/oder Code skriptgesteuert werden. Zum Beispiel kann Inkscape, ein Softwarepaket für Vektorillustrationen, vollständig über Python geschrieben werden: http://wiki.inkscape.org/wiki/index.php/Tips_For_Python_Script_Extensions
Sie können auch SVG oder Postscript und dergleichen in einem Texteditor schreiben, wenn Sie dies wünschen. Sie könnten eine Reihe von Softwareprodukten verwenden, um dann Ihren eigenen Code zu erstellen, der die Dateien direkt manipuliert.
Zwei Dinge fallen mir ein:
Geogebra ist eine Software für mathematische Konstruktionen und ähnliches und könnte alles können, was Sie wollen, obwohl es eher darauf abzielt, Geometrie und Mathematik zu erforschen, als schöne Grafiken zu erstellen.
TikZ ist ein Paket für LaTeX, mit dem Sie Diagramme und ähnliches codieren können und das auch alles können sollte, was Sie wollen. Es ist sehr leistungsfähig, aber vollständig quellenbasiert (also kein Wysiwyg) und es kann schwierig sein, sich daran zu gewöhnen.
Obwohl sich diese stark von Ihrer durchschnittlichen Grafiksoftware unterscheiden, sind sie kostenlos und daher kostet es Sie nichts als Zeit, sie auszuprobieren und eine Vorstellung davon zu bekommen, ob sie Ihre Anforderungen erfüllen.
Ich denke, mit Microsoft Expression Blend können Sie dies tun. Sie können dies auch programmgesteuert mit der XAML-Sprache von Microsoft direkt tun.
DA01