Neue Ruby-Erweiterung: ModelHistory
-
Danke, azuby.
Leider momentan zu viel anderes um die Ohren. Aber so schnell wie möglich komme ich wieder.
[N Lindenthal]
-
@azuby said:
… off topic
@N Lindenthal
Bin durch Zufall gerade auf Folgendes gestoßen: Wähle mal in irgend einem Modell ein Element aus, bewege dich davon dann weg und gib dann in der Ruby-Konsole folgendes ein:[code]Sketchup.send_action 'viewZoomToSelection:'[code]So, gehen wir mal davon aus, du hast Gruppen und Komponenten im Modell, die einen Namen haben. Dann muss nur noch durch die Elemente des Modells iteriert werden, bei jedem geprüft, ob es eine Gruppe oder Komponente ist und wenn ja dann noch der Name gecheckt werden. Wenn man eine gefunden hat, wo der Name passt, dann sendet man einfach das Kommando von oben.azuby
weiter OT (bald öffne ich den verständlichen Faden)
Das ausgewählte Objekt kommt nach vorne ('viewZoom…'). Nun muß also '…ToSelection:' durch den Namen des Objekt ausgetauscht werden. Azuby eröffnet den Lichtblick.Die Objektnamen kenne ich ja schon vorher, denn deshalb haben die Elemente von mir ihre Namen erhalten. Wie schreibe ich denn nun den Elementnamen in der Rubyzeile? (Sketchup.send_action 'viewZoomTo"Block":' funktioniert nicht [das Element heißt »Block«])
[N Lindenthal]
-
def zoom_to name selection = Sketchup.active_model.selection selection.clear Sketchup.active_model.entities.each do |e| if e.kind_of?(Sketchup;;Group) or e.kind_of?(Sketchup;;ComponentInstance) selection.add e if e.name == name end end Sketchup.send_action 'viewZoomToSelection;' end
Getestet folgendermaßen:
- Datei "irgendwas.rb" in Tools-Verzeichnis angelegt
- Code reinkopiert
- Datei gespeichert
- Sketchup geöffnet
- den Typen in der Mitte des Bildschirms im "Entity Info"-Fenster "Horst" als Namen gegeben
- in die Ruby-Konsole eingegeben: zoom_to "Horst"
- ein Viereck gemalt
- Viereck mit Kanten zusammen markiert
- Viereck im "Entity Info"-Fenster "Karl" als Namen gegeben
- in die Ruby-Konsole eingegeben: zoom_to "Karl"
Auffällig: Der Betrachtungswinkel ist möglicherweise nicht schön.
azuby
-
Öj! Azuby, Du kannst ausbilden. Das klappt bei mir.
Nur »Horst« hatte ich »May« genannt.
Über die Betrachtungsrichtung habe ich auch schon nachgedacht. Es gibt ja wohl zu einer Zeit nur 1 Achsensystem. Dieses eine Achsensystem müßte man abfragen können und für die Zeigerichtung/-neigung angeben können. Aber das kommt später. Ab nun weiß ich, daß mein Vorhaben gelingen wird. Leider in diesem Faden OT.
[N Lindenthal]
-
Und es geht weiter:
Man kann jetzt die gesamte History eines Modells löschen. Man kann bei History-Punkten, die mit .skp-Datei gespeichert wurden, die .skp-Datei löschen. Man kann, sofern ein History-Punkt mit .skp-Datei gespeichert wurde (und die Datei nicht gelöscht wurde) sich das Modell dieses Zeitpunktes anzeigen lassen. Man kann auch - weil ja so ein zurückliegendes Modell keine eigene History hat - über eine Funktion "Load newest" wieder zum neusten zurückkehren. Außerdem wird jetzt farblich an den Einträgen signalisiert, wo noch Aufgaben zu erledigen sind.
Alle Aktionen, die nur teilweise bestimmte History-Punkt-Daten verändern, sind noch nicht vollständig implementiert. Das betrifft also "Rollback" und "Remove history point", außerdem alles, was mit Tasks/Todos zu tun hat.
azuby
-
Und heute kann man Rollback nutzen. Außerdem kann man einzelne History-Punkte nun löschen.
Wenn ich Muße habe, dann kommt wohl noch die Funktion hinzu, alle History-Punkte zu löschen, die zeitlich vor einem gewählten Punkt liegen - wenn man meint, die ganz alten Dinger braucht man nicht mehr.
Als nächstes werde ich mich um die Funktionalität kümmern, von der Oberfläche aus Aufgaben hinzuzufügen, anzuzeigen und als "erledigt" markieren zu können.
azuby
-
Wo kann ich denn das ModelHistory-Rubyskript laden, um es nachzuvollziehen?
[N Lindenthal]
-
Noch nirgendwo. Ich überlege momentan, wie ich damit umgehe. Es steckt wirklich eine ganze Menge Arbeit drin.
azuby
-
Vor dieser engagierten, sachorientierten Arbeit, die auch Zeit kostet, habe ich alle Achtung. Am besten fände ich eine Bezahllösung, damit auch später, wenn sich der Erfindergeist an anderen Punkten konzentriert, weitergepflegt werden könnte.
[N Lindenthal]
-
Was so die letzten Tage hinzugekommen ist: Die farbliche Hervorhebung der "grauen Balken" istjetzt dreifach: Wenn der Punkt keine Aufgaben hat, ist keine farbliche Umrandung. Wenn der Punkt Aufgaben hat und mindestens eine davon ist noch nicht erledigt, gibt es einen roten Rahmen. Wenn der Punkt Aufgaben hat und sie sind alle erledigt, dann ist der Rahmen grün. Weil es natürlich ein bisschen blöd ist, die ganzen Punkte immer auf- und zuzuklappen, werden im Tab "Tasks" untereinander jeweils alle roten und dann alle grünen Tasks gelistet. Über diesen beiden Listen befindet sich das Eingabefeld für neue Tasks. Rote Tasks haben außerdem je Task "Mark solved" Tasks werden momentan schon aus der XML-Datei ausgelesen, das Eingeben und "solved"-Markieren ist noch nicht implementiert.
azuby
-
Die Oberfläche ist jetzt mit den Systemfarben des Anwenders gestaltet, damit seid ihr dieses hübsche Pink los Für nahezu alle Aktionen gibt es vernünftige Buttons, keine Links. Man kann Task jetzt wirklich als "Solved" markieren, man kann neue Tasks hinzufügen und man kann diese neues Tasks ebenfalls als "Solved" markieren und sie zusätzlich auch löschen. Das geht freilich nur beim aktuellen Arbeitsgang, Tasks von History-Punkten lasse ich nicht zu, entfernt zu werden, weil ich darin keinen Sinn sehe. Um Änderungen an Tasks permanent abzuspeichern, muss man einen neuen History-Punkt setzen. Ich überlege noch, ob ich das wahlweise auch so bereitstelle, dass die Änderungen sofort weggeschrieben werden - eigentlich aber eher nicht, denn sollte Sketchup irgendwann mal zulassen, dass man informiert wird, wenn der Nutzer ein Modell speichert, kann man dann ja den History-Punkt automatisch setzen und damit sicherstellen, dass die als "Solved" markierten Tasks in der aktuell gespeicherten Datei tatsächlich auch solved wurden.
Genau.
azuby
-
Heute kam dann noch auf dem linkesten der Tabs (siehe auch den neuen Screenshot im englischsprachigen Thread) ein Update-Button hinzu, das gab's als erstes Feedback schon bei einer heutigen Live-Demonstration. Außerdem gab es noch die Anfrage - auch heute - ob man nicht für die Balken ebenfalls im linken Tab, also für die History-Punkte, noch einen kurzen Kommentar reinschreiben könnte, damit man bei geschlossenen Tabs schneller sieht, um was es dort damals ging. Gesagt, getan. Wenn man jetzt "Set history point" klickt (oder im Menü wählt), bekommt man ein kleines Fenster, in das man einen kurzen Kommenatr eintragen kann.
Die Grafik-Versuche sind fortgeschritten, langsam wirds. Bei den Options gibt es zumindest schon mal ein paar Sachen zum Anklicken, funktionieren aber nocht nicht.
Ach ja, wen es interessiert: Es sind momentan etwa 2300 Codezeilen, immer noch mit bisschen Redundanz. Die Dateigröße liegt noch unter 100 KB - verglichen mit anderen Rubyskripten ein absolutes Schwergewicht
azuby
-
Auch aus der Live-Demonstration gestern hat sich herausgestellt, dass es uuunheimlich sinnvoll ist, die volle History auch dann sehen zu können, wenn man sich in einer History-Version befindet. Bis auf ein paar Tests, ob das auch wirklich alles noch klappt, ist das jetzt ebenfalls implementiert.
Weil wir ja schon eine Funktion "Alle jüngeren löschen" alias "Rollback" haben, hat sich auf die Liste der ToDos noch ein "Alle älteren löschen" geschlichen, was ganz sinnvoll ist, wenn man einige History-Punkte gesetzt hat und irgendwann feststellt, dass man das ganze alte Gerümpel vor dem Versionsstand 15 (oder so) nicht braucht. Denn je mehr Versionen ich hab, desto länger dauert ja auch das Laden der History. Man bedenke nur, was da durchaus für eine Menge an Daten zusammenkommen kann bei komplexen Modellen.
Aber soweit kann ich schonmal feststellen: Die wirklich wichtigen Funktionen sind alle eingebaut. Jetzt geht's vornehmlich noch darum, alles hübsch zu verpacken und vernünftig bedienbar zu machen.
azuby
-
Das gestrige ToDo is done. Tja nu, so schnell kann's gehen
azuby
-
Momentan geht hier nichts weiter, weil wir bezüglich IT zuhaus völlig abgeschnitten sind - kein Telefon, kein Internt, nur langweiliges TV und mein Neue-Bücher-Stapel von momentan wieder etwa 30 cm
Ich mach dann weiter, wenn ich wieder an meine Informationsquelle Nr. 1 rankomme.
azuby (von da, wo man Geld verdient)
Advertisement