Dear English speaking user. My English is not the best, which is why I wrote the text in German. Whether you or I click on Google Translate, the result is the same
In Dynamo BIM kann durch Verbinden von Blöcken und darin enthaltenen Funktionen Skripts erstellt werden. Man kann auch Python-Code schreiben und verwenden. Der integrierte Python-Editor ermöglicht lediglich die farbliche Hervorhebung einiger Python-Keywords wie def, class usw. So schnell wird es auch keine IDE-Funktionalitäten geben, welche vor allem bei der Suche nach Fehlern schmerzlich vermisst werden. Es ist möglich, eine Dynamo-Datei, eine JSON-Datei mit modifizierter Extension, in jedem Editor zu öffnen. Durch das Maskieren von Steuerzeichen vor dem Einfügen in die Datei ist eine Bearbeitung direkt in der Dynamo-Datei nicht möglich. Da Dynamo von IronPython 2.7 auf Python 3.8 gewechselt hat und zeitnah IronPython 2.7 nicht mehr unterstützt wird, ist eine Überarbeitung vom Python Code unausweichlich. Der Druck und die Vorstellung, diese Sisyphusarbeit im integrierten Editor zu erledigen, brachten mich auf die von hinten durch Brust ins Auge Lösung aus folgenden Punkten:
- Dynamo-Dateien können immer verändert und geändert werden.
- Konvertierung von Python-Code aus Dynamo-Datei in eine Python-Datei
- Information der Quelle speichern
- Aufbereiten vom Code ermöglichen.
- Überarbeitung vom Code
- Vorgabe: Erste Zeile für die Angaben der Quelle reserviert
- Konvertierten Code aus der Python-Datei in die Quelle einfügen.
- Bereinigung von Python-Kommentaren (Formatierung & Type-Check)
Es hätte eine VS Code Extension oder etwas wahrscheinlicher ein Python-Skript werden, Wenn ich nicht von einer IDE gelesen hätte, die Namensgeber einer Verletzung ist und, kaum zu glauben, eine Partei im Krieg der Editoren ist. Ich wollte/musste einfach mehr darüber erfahren.
- die Verletzung existiert, kann aber einfach vermieden werden.
- der Krieg hat sich bis heute fortgesetzt.
- Emacs beeindruckte durch die vielen Packages und die Möglichkeiten, die daraus resultieren.
- Verwendet Lisp für Installation und Konfiguration.
- VIM überzeugte vor allem durch das besondere Konzept, auf dem Navigation und Bearbeiten von Text basiert.
- Verwendet Vimscript für Installation und Konfiguration
- Evil-Mode ermöglicht VIM Funktionen in Emacs anzuwenden.
- Gemeinsamkeit von Emacs und VIM:
- Beide werden ausschliesslich mit der Tastatur bedient
- Stammen aus einem anderen Jahrtausend
Obwohl die Vorgeschichte bereits ein paar Jahre her ist, faszinieren mich die beiden Editoren immer noch. Dank WSL kann Emacs unter Linux installiert werden. Lösungen für Probleme lassen sich schnell finden und können oft durch Kopieren von Befehlen angewendet werden. Das Framework doomemacs erlaubt die Installation von vorkonfigurierten Modulen. Module lassen sich nach der Installation meist ohne oder mit sehr wenig Konfiguration verwenden. Um mehr in die Welt von Doom/Emacs einzutauchen und beim Schreiben von Lisp Code Fortschritte zu machen, habe ich die Idee in meinem ersten Emacs-Package verwirklicht.
Im Paket gibt es je einen Minor-Mode für Dynamo- oder Python-Dateien. Neben verschiedenen Optionen für Import bzw. Export gibt es in jedem Mode zusätzliche Funktionen, um die Bearbeitung und den Prozess zu unterstützen. Nachdem der Entschluss gefasst wurde, das Package zu veröffentlichen. Musste die Konfigurationen von LSP, Stubs Dateien, usw. aus dem Package entfernen werden, um die Abhängigkeiten zu verringern. Eine neue Seite der Hooks wurde ersichtlich. Diese nicht nur für die Konfiguration nützlich, sondern haben Einfluss auf die Implementierung der Minor Mode. Ein Hook und die registrierten Funktionen werden beim Aktivieren oder Deaktivieren von Mode’s ausgeführt. Durch eine neue Funktion und die Registrierung der Funktion beim Hook vom Minor-Mode, konnte der Code aus dem Package in die Funktion verschoben werden. Bei der Überarbeitung konnten die Abhängigkeit von anderen Packages auf ein Minimum reduziert werden und in den beiden Minor Mode’s sind nur noch die notwendigen Funktionen enthalten. Das Package befolgt somit die Unix-Philosophien Do One Thing and Do It Well und Keep it Simple, Stupid.
Durch Minor-Mode für Dynamo- und Python-Dateien zusammen mit den DOOM vorkonfigurierten Packages wie Magit, ORG und dem Python Module mit den IDE-Funktionen, ermöglichen den ganzen Prozess zum Bearbeiten von Dynamo-Dateien ausschliesslich in EMACS und keinem weiterem Programm abzuarbeiten.
Um den Einstieg zu vereinfachen, hier ein paar - hoffentlich nützliche - Information
- WSL Installation
- Anleitung für WSL mit
- node-js
- pyenv
- pyright
- Emacs
- DOOM
- Konfiguration-Vorlage für
- Datei lesen
- Information Source-Datei/Block
- Code kopieren
- Leere Zeilen vor und nach dem Code entfernen.
- Information Source-Datei/Block
- Kommentare entfernen
- Type Checker
- Formatierung
- Einrückung in TAB umwandeln
- Codierung für JSON-String
- String im Python-Block ersetzten.
- pydyn-python-mode-on
Aktiviert den Python Minor Mode
- pydyn-python-mode-off
Deaktiviert den Python Minor Mode
- pydyn-python-goto-dynamo-node
Öffnet die Dynamo-Datei und verschiebt den Cursor zum Python-Block auf die Zeile, in der sich der Code befindet.
- pydyn-python-if-remove-bracket
Löscht unnötige Klammern in if Statements. Das Ersetzen muss vom Benutzer bestätigt werden.
- pydyn-python-to-dynamo-node
Konvertiert und ersetzt den Code aus der aktuellen Datei im Python-Block.
- pydyn-python-to-dynamo-script
Konvertiert und ersetzt den Code aus den Python-Dateien in allen Python-Blöcken des ausgewählten Skripts.
- pydyn-python-to-dynamo-folder
Konvertiert und ersetzt den Code aus den Python-Dateien in allen Python-Blöcken in allen Dynamo-Dateien innerhalb des ausgewählten Ordners und Unterordners.
- pydyn-python-ignore-toggle
Erstellt oder löscht den Type-Checker-Kommentar in der Zeile, in der sich der Cursor befindet.
- pydyn-python-ignore-to-inputs
Fügt die Type-Checker-Kommentare zu allen Dynamo-Inputs. Das ist Bestandteil der Dynamo-zu-Python-Konvertierung.
- pydyn-python-ignore-to-errors
Fügt Type-Checker-Kommentare zu allen bekannten Type-Checker Fehler ein. Weil diese Fehler keine Fehler sind und/oder diese nicht gelöst werden können, wird diese nicht mehr als Fehler angezeigt
- pydyn-python-backslash-ensure
Überprüft die Anzahl der Backslashs in einem String.
- pydyn-python-formatter-disable
Deaktiviert das Formatieren für die aktivierte Region
- pydyn-python-formatter-enable
Aktiviert das Formatieren durch Löschen der Python-Kommentare, sofern sich der Cursor innerhalb eines deaktivierten Bereichs befindet.
- Code aus Python-Block auslesen
- Decodieren des Strings
- Datei erstellen/überschreiben
- Information zum Zurückschreiben
- Code einfügen
- Einrückung anpassen (IronPython: TAB / Python 3: Space)
- Optional
- Kommentare vom Python Template entfernen:
- Type-Checker Kommentare bei bekannten Fehlern einfügen
- pydyn-dynamo-mode-on
Aktiviert Dynamo Minor Mode
- pydyn-dynamo-mode-off
Deaktiviert Dynamo Minor Mode
- pydyn-dynamo-jump-to-node
Verschiebt den Cursor zum ausgewählten Python-Block.
- pydyn-dynamo-goto-python
Öffnet die Python-Datei, sofern sich der Cursor innerhalb eines Python-Blocks befindet
- pydyn-dynamo-at-point-to-python
Konvertiert den Code in eine Python-Datei, sofern sich der Cursor innerhalb eines Python-Blocks befindet.
- pydyn-dynamo-script-to-python
Konvertiert alle Python-Blöcke der ausgewählten Dynamo-Datei
- pydyn-dynamo-folder-to-python
Konvertiert alle Python-Blöcke aus allen Dynamo-Dateien innerhalb eines Ordners und Unterordner
- pydyn-dynamo-clean-orphan-code-file
Löscht alle Python-Dateien, wenn der Python-Block nicht mehr in der aktuellen Dynamo-Datei befindet.
- pydyn-dynamo-clean-orphan-code-folder
Überprüft alle Dynamo-Dateien im ausgewählten Ordner und Unterordner. Dabei werden Python-Dateien gelöscht, wenn der Python-Block nicht mehr in der aktuellen Dynamo-Datei befindet.
- pydyn-dynamo-python-code-preview (under construction)
Zeigt den Code in einem Fenster an, sofern sich der Cursor innerhalb eines Python-Blocks befindet. Es wird aber keine Python-Datei erstellt.