Autor
|
Thema: Ruby in TurboCad - kann ich nicht (2876 mal gelesen)
|
Leopoldi Mitglied Heimwerker i.R. www.max-mg.de
Beiträge: 1360 Registriert: 16.07.2009 Unter Win10-Pro 64Bit: (TC21)-TC2020 Pro Platinum
|
erstellt am: 22. Mrz. 2013 18:39 <-- editieren / zitieren --> Unities abgeben:
|
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010
|
erstellt am: 22. Mrz. 2013 21:25 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Leopoldi, nicht so mit den Füssen scharren hab ich gesagt. Also folgendes: Die Ruby scripte stecken im Verzeichnis \RubyScripts (man sollts net glauben)und haben die Endung .rb . Die .rb Dateien im Verzeichnis \RubyEngine sind die bereits vordefinierten Ruby Scripte um die Sketchup engine zu emulieren. Auf keinen Fall irgendwelche .dll anfassen und auch nicht unbedingt solange du nicht weisst wie es funktioniert die Skripte der V19 engine mit der der V18 mischen - könnte schiefgehen. Meines Wissens nach haben die TCad entwickler sich ab der V19 mehr weg vom Sketchup modell in Richtung IronRuby bewegt. Soweit ich weiß ist oder irgendwo gelesen hab solls auch in der V20 mehr Richtung TC gehen und Sketchup wird wohl eher als Vergangenheit angesehen. Was Dich wohl irritiert ist der Aufrufmodus: Du kannst die Funktionen in der Ruby Konsole aufrufen, als auch wenns entsprechend definiert ist im Menü. Beipiel insert_triangle_tool. Das hat sogar diesen Dateinamen. Wenn Du die Datei öffnest, siehst Du auch eine Funktion def insert_triangle_tool. Das kannst Du in die Konsole eintippen und mit evaluieren starten. Wenn Du mit dem Editor aber ans Dateiende gehst, siehtst Du die Zeile : UI.menu("Sdk samples").add_item("Mehrere gleichen Linien hinzufügen"){insert_triangle_tool}. D.h. UI.menu sprich User Interface was unterhalb der Ruby Konsole im Menu Skripts steht bekommt den Eintrag "Mehrere gleichen Linien... (man spricht Deutsch). Dies kannst Du dann per Click aufrufen. Also nochmal zusammengefaßt: Dateiname .rb ist nur ein Oberbegriff oder Arbeitsname und hat mit den Funktionsnamen nicht unbedingt zu tun. Die Skripts oder Funktionen die Du aufrufen kannst stehen in der .rb datei als def blabla... Mit blabla in der Skript - Konsole kannst Du die Funktion aufrufen. Ebenso kannst Du der Funktion im UI.menu auch einen beliebigen Namen verpassen. Wenn Du die Konventionen fürs UI.Menu beachtest kannst Du z.B die Sache "Ich sprech nur noch blabla" nennen und dieser Name erscheint dann im Menü. Nach diesem Eintrag kommt die geschweifte Klammer und dadrin steht dann der Funktionsname der aufgerufen wird. Die Ruby Engine lädt nach dem Start von Turbocad die Dateien aus dem Verzeichnis RubyEngine und danach die RubyScripts. Die Funktionsnamen der definierten Funktionen werden in einer Tabelle gespeichert und können dann per Aufruf ausgeführt werden. Ganz Imsi typisch auch folgender Klopper - vielleicht ist es ja didaktisch ganz große Klasse: Datei layers_test.rb. 1. Zeile: ´# call this method from the console by typing "layers_test" without quotes das Zeichen # steht vor dem Kommentarbeginn. Aufruf der Funktion in der Konsole mit "layers_test" - Folge Fehlermeldung weil Funktion unbekannt. 2. Zeile in der Datei : def layers_sample alles klar? gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010 dell Latitude E6410 i5, 4 GB Ram, Win 7 TC V6-V10,V16 US; V6,11,12,17-20 D
|
erstellt am: 22. Mrz. 2013 22:07 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Leopoldi, noch ein Nachtrag habs grad noch gemerkt. Die Dateinamen xxx.rb bekommen dann Bedeutung wenn Du Funktionen schreibst, die du immer wieder in anderen Funktionen benutzen willst. Dann schreibst Du die Funktion(en) in eine Datei - nennen wir sie Werkzeugkasten.rb. Wenn Du dann eine Funktion schreibst die auf Deine in Werkzeugkasten.rb definierten Funktionen zugreift musst Du am beginn Deiner neuen Datei den Verweis Require "Werkzeugkasten" stellen. gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Leopoldi Mitglied Heimwerker i.R. www.max-mg.de
Beiträge: 1360 Registriert: 16.07.2009
|
erstellt am: 22. Mrz. 2013 22:10 <-- editieren / zitieren --> Unities abgeben:
Hallo mike, danke für die schnelle Antwort. Das muss ich in den nächsten Tagen einmal in Ruhe durchsehen. Ich habe einmal generell nach einer vernünftigen Entwicklungsumgebung für Ruby gesucht. (siehe Anlage) Schön wäre natürlich die Möglichkeiten in TC als Library vorgeben zu können. mfg.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010 dell Latitude E6410 i5, 4 GB Ram, Win 7 TC V6-V10,V16 US; V6,11,12,17-20 D
|
erstellt am: 22. Mrz. 2013 22:19 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Leopoldi, da bist du ja im Entwicklungsstand mir um einiges vorraus, warum frägst Du dann so solche Sachen? Danke für das Tutorial in der gewohnt erstklassigen Qualität. Mach jetzt nochmal mit dem Hund weg und deshalb den Rechner für heute aus. gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010
|
erstellt am: 23. Mrz. 2013 10:02 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hi Leopoldi, anbei 1 Skript, was gleich eine Einschränkung der Ruby Umgebung der V18 zeigt. In Ruby ist es leider nicht möglich die Skripte zu starten wenn eine Renderumgebung außer Drahtmodell eingestellt ist. Das Skript gibt dann eben alle markierten Objekte raus egal ob Volumenkörper oder nicht - hier muß ich eben noch irgendwann einen internen Test einbauen ob 3d oder nicht. Trotzdem sieht man auch hier das potential der Umgebung: Einfach Alt - S, dann in die Konsole und schon steht alles was man so braucht per Tastendruck zur Verfügung sofern mans vorher programmiert hat. In diesem Fall cnt, all für Ausgaben in die Konsole, ctn über die UI Box. gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010 dell Latitude E6410 i5, 4 GB Ram, Win 7 TC V6-V10,V16 US; V6,11,12,17-20 D
|
erstellt am: 23. Mrz. 2013 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
|
Leopoldi Mitglied Heimwerker i.R. www.max-mg.de
Beiträge: 1360 Registriert: 16.07.2009
|
erstellt am: 23. Mrz. 2013 16:10 <-- editieren / zitieren --> Unities abgeben:
Hallo mike, soweit blicke ich jetzt durch das Ruby-Handling in TC durch. Wenn ich höre was sich noch alles in den neueren Versionen geändert hat, frage ich mich ob ich da nicht mal wieder auf einem toten Pferd sitze :-)). Schönen Dank und viele Grüße
Ps.: In deinem Beispiel ist die Anzahl bei "all" noch nicht stimmig. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010 dell Latitude E6410 i5, 4 GB Ram, Win 7 TC V6-V10,V16 US; V6,11,12,17-20 D
|
erstellt am: 23. Mrz. 2013 20:21 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Leopoldi, das mit dem toten Pferd kann ich leider auch nicht vorhersagen. Allerdings denke ich wenn Du Ruby beherrschst und mit dem TCAD Objektmodell umgehen kannst was soll sich da ändern? Eventuell andere Aufrufkonventionen, aber das sollte Dir nicht schwerfallen. Also inkl. V20 funktioniert die Ruby Schnittstelle wohl und um das danach zu ändern dazu haben die meiner Ansicht nach zu wenige Programmierer und größere Baustellen. Die VBS HTML Beispiele schleppen die jetzt schon seit 2000 mit sich rum, den Makrorecorder gibts auch schon seit der V8, dürfte 2002 sein und die PPM seit der V15 also seit 2008. Die PPM wurde sogar noch erweitert. Wenn Du Dir nächstes oder übernächstes Jahr die V20 kauft kannst Du mit Sicherheit die nächsten 5 Jahre mit Ruby arbeiten, danach kannst Du wenn sie es wirklich canceln oder es kein TC 21 mehr gibt (das weiß ja auch niemand) immer noch auf Sketchup umsteigen. Wenn Du relative Planungssicherheit haben willst dann mußt Du mit Programmen wie Autocad, Catia oder Solidworks arbeiten mit den entsprechenden Kosten, bei kleineren Anbietern wie IMSI weißt Du sowieso nicht ob sie mit ihrer nicht so üppigen Kapitaldecke ein zwei größere Rückschläge kompensieren können. Zu den Skriptergebnissen: Die 98 stimmen, das ist das gleiche Ergebnis das auch die Count Abfrage im Script-Centre bringt. In Ruby :all=Sketchup.active_model.entities.count in VBS: MsgBox ActiveDrawing.Graphics.Count Was ich bislang nicht weiß, ich krieg die 98 mit der Auswahl per Strg-a nicht hin, da sinds nur 90 sowohl in VBS als auch in Ruby, wenn ich jedoch im Scriptcentre select all drücke habe ich die 98. Also gibt es wohl einen Unterschied zwischen der manuellen Auswahl und der mittels ActiveDrawing.Graphics.Select. gruss mike
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Leopoldi Mitglied Heimwerker i.R. www.max-mg.de
Beiträge: 1360 Registriert: 16.07.2009
|
erstellt am: 23. Mrz. 2013 23:10 <-- editieren / zitieren --> Unities abgeben:
|
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010 dell Latitude E6410 i5, 4 GB Ram, Win 7 TC V6-V10,V16 US; V6,11,12,17-20 D
|
erstellt am: 24. Mrz. 2013 01:33 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Leopoldi, ich denk ich habs. Ich habe folgendes gemacht: Leere Zeichnung : 0 , Quader reingesetzt : 1, dann gerendert: Abfrage tcad "es fehlen Licht.... ", ja gedrückt anschließend : 9, F3 Design Director Lichtquellen :8, die Lichtquellen wieder alle gelöscht: 1 (Quader). gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Leopoldi Mitglied Heimwerker i.R. www.max-mg.de
Beiträge: 1360 Registriert: 16.07.2009
|
erstellt am: 24. Mrz. 2013 10:44 <-- editieren / zitieren --> Unities abgeben:
Hallo toller Super_mike jetzt mußt Du nur noch in der Berechnung die Anzahl der Lichtquellen subtrahieren bzw. getrennt anzeigen :-)). Ich werde jetzt mal in Sachen "ruby" einen Schnitt machen. Mir fehlen einfach zu viele TC-Grundlagen um jetzt echt einzusteigen. Ich hoffe das dein Script einmal auf meinem Level "TurboCad- Programming for Dummies" verständlich ist. Wichtig wären für mich viele, einfache Beispiele. Schöne Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010 dell Latitude E6410 i5, 4 GB Ram, Win 7 TC V6-V10,V16 US; V6,11,12,17-20 D
|
erstellt am: 24. Mrz. 2013 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Prinzregent Leopoldi, man nennt mich nur mike und ích möchte auch nur so angesprochen werden. Die Pause kommt mir sehr gelegen, da kann ich mal was in Ruhe ausarbeiten, es reicht ja wenn die Kundschaft immer frägt wanns denn fertig ist. gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010
|
erstellt am: 24. Mrz. 2013 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
|
Leopoldi Mitglied Heimwerker i.R. www.max-mg.de
Beiträge: 1360 Registriert: 16.07.2009 Unter Win10-Pro 64Bit: (TC21)-TC2020 Pro Platinum
|
erstellt am: 24. Mrz. 2013 12:01 <-- editieren / zitieren --> Unities abgeben:
|
devo Mitglied Holzverarbeiter
Beiträge: 366 Registriert: 11.02.2010
|
erstellt am: 24. Mrz. 2013 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für Leopoldi
Hallo Leopoldi, danke für das Rezept, schau mal ob ichs gebacken krieg, ich darf mich im Normalfall am Herd nur oberhalb der Schalter betätigen, was auch gern genutzt wird, der Bereich Backofen ist für mich ausser zum Fertigbacken oder Erhitzen tabu. Den Prinzregenten hab ich ausgewählt, weil Prinz P. ausserhalb von Köln oft ungern gehört wird und König Leopold (v. Belgien) mehr oder weniger ein Schwerverbrecher war. gruss mike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |