sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Fenster unauffindbar

    Scheduled Pinned Locked Moved Deutsch
    25 Posts 2 Posters 2.8k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N Offline
      N Lindenthal
      last edited by

      @azuby said:

      Ich habe keine Ahnung, warum du das machst - in zwei Beiträgen steht doch eindeutig:

      # aufzurufen dann mit z. B.
      > zoom_to_object "Stein"
      

      azuby

      Ich lasse also in die Ruby-Konsole tippen:

      def zoom_to_object "Stein"
        Sketchup.active_model.entities.each do |entity|
          if entity.kind_of?(Sketchup;;Group) or entity.kind_of?(Sketchup;;ComponentInstance)
            if entity.name == object_name
              Sketchup.active_model.active_view.zoom entity
              break
            end
          end
        end
      end
      

      Und dann kommt folgende Ruby-Konsolen-Erfolgs-/Fehlermeldung:

      @unknownuser said:

      def zoom_to_object "Stein"
      Sketchup.active_model.entities.each do |entity|
      if entity.kind_of?(Sketchup::Group) or entity.kind_of?(Sketchup::ComponentInstance)
      if entity.name == object_name
      Sketchup.active_model.active_view.zoom entity
      break
      end
      end
      end
      end
      Error: #<SyntaxError: (eval):209: compile error
      (eval):209: parse error, expecting '\n'' or ';''
      def zoom_to_object "Stein"
      Sketchup.active_model.entities.each do |entity|
      if entity.kind_of?(Sketchup::Group) or entity.kind_of?(Sketchup::ComponentInstance)
      if entity.name == object_name
      Sketchup.active_model.active_view.zoom entity
      break
      end
      end
      end
      end
      ^
      (eval):209: parse error, expecting `$'
      def zoom_to_object "Stein"
      Sketchup.active_model.entities.each do |entity|
      if entity.kind_of?(Sketchup::Group) or entity.kind_of?(Sketchup::ComponentInstance)
      if entity.name == object_name
      Sketchup.active_model.active_view.zoom entity
      break
      end
      end
      end
      end
      ^>
      (eval):209

      … und mein Stein ist nicht ausgewählt/markiert/mittig großgestellt. In meiner geöffneten SketchUp-Datei ist nichts passiert. Deshalb fing ich an herumzuhühnern.
      Was muß ich denn nun richtiger machen?
      Übrigens möchte ich mich noch sehr bedanken für Deine Bereitschaft, mir hier Grundlagen zu vermitteln. (Ich wußte ja noch nicht, daß eine Methode eingeklammert ist durch def … end.)

      4mal (eval):209, 2mal parse error, einmal SyntaxError, einmal compile error, 2mal expecting …

      1 Reply Last reply Reply Quote 0
      • A Offline
        azuby
        last edited by

        Du müsstest alle Zeilen, jeweils mit Semikolon getrennt, in eine Zeile schreiben. Ich hatte damals schon Zweifel angemeldet, Sketchup in der Art fernzusteuern, dass man quasi "auf der Oberfläche" "programmiert", so wie du das durch Nutzung von AppleScript tust. Die Ruby-Konsole ist nicht dazu geeignet, zu programmieren, sondern nur, um auszuführen, weil sie nur einzeilige Statement annehmen kann (ja, ich hatte natürlich mit d/Code einen entsprechenden Gegenvorschlag programmiert). Mir ist natürlich klar, dass es für die Mac-Version von Sketchup (noch) keine andere Möglichkeit gibt, unter der Oberfläche zu kommunizieren. Für die Windows-Version gibt es eine - ich glaube von TBD - programmierte EXE, die eine Schnittstelle nach außen ermöglicht und somit auch das "Einimpfen"/Aufrufen von Ruby-Code.

        Sinnvoll wäre zu überlegen, den Code (ohne den "Auswähl-Schnipsel" (nach "z. B.")) in eine .rb-Datei auszulagern, die automatisch von Sketchup dann geladen wird, wenn man es startet. Dann muss nur noch der "Auswähl-Schnipsel" in die Konsole eingegeben werden.

        Ich hatte dir zur Wiederverwendbarkeit gerade eben auch was geschrieben. Wenn du den gesamten Code bei jedem Aufruf aus FileMaker heraus in Sketchup eingibst, dann läuft das dem Prinzip der Wiederverwendbarkeit strikt entgegen aus Sicht von Sketchup. Denn jedes Mal (re-)definierst du die Methode aus Sketchup-Sicht neu. Sie sollte aber nur ein einziges Mal in Sketchup eingebracht und danach lediglich benutzt=aufgerufen werden. Oder anders: Die Funktionalität gehört NICHT zu (und in) FileMaker, sondern sie gehört zu Sketchup.

        azuby

        *error initus :: Blocks | CurrentDate | d/Code | extensionmanager | FFlipper | HideEdges | MeasuredArea | ModelHistory | PluginsHelp | PronButton | SAWSO | SCP | SU²CATT

        Bad English? PM me, correct me. :smile:**

        1 Reply Last reply Reply Quote 0
        • A Offline
          azuby
          last edited by

          Vielleicht gehst du einfach mal die Lektionen von RubyKids durch, um dich mit der Sprache vertraut zu machen. Bitte nicht in Sketchup lernen, sondern in der Konsole / im Terminal (na wie auch immer das aufm Mac heißt). Mit der Eingabe "ruby -v" kannst du dort ermitteln, ob a) Ruby installiert ist und b) welche Version von Ruby installiert ist. Da die Lektionen für Windows sind, musst du etwas kreativer sein, was Pfade und Programme angeht. Beispielsweise lädt die Eingabe "nano" einen kleinen Editor, "nano meinedatei.txt" lädt den Editor und die im aktuellen Verzeichnis liegende Datei meinedatei.txt

          azuby

          *error initus :: Blocks | CurrentDate | d/Code | extensionmanager | FFlipper | HideEdges | MeasuredArea | ModelHistory | PluginsHelp | PronButton | SAWSO | SCP | SU²CATT

          Bad English? PM me, correct me. :smile:**

          1 Reply Last reply Reply Quote 0
          • N Offline
            N Lindenthal
            last edited by

            Denk, denk. Dann muß ich eben über das Terminal gehen. Könnte noch systematischer werden. Ich stutze über die Mehrzeiler. Ist es wirklich so, daß die Ruby-Eingabezeile in SketchUp keine Mehrzahler vertragen kann? Ein ausgewähltes Objekt zu zoomen, ging doch schon mehrzeilig.

            model = Sketchup.active_model
            sel = model.selection   # have something selected
            model.active_view.zoom sel.first
            

            Diese 3 Zeilen laufen einwandfrei.

            So, dann muß ich jetzt Ruby für Kinder lernen …

            1 Reply Last reply Reply Quote 0
            • A Offline
              azuby
              last edited by

              Dein 3-Zeilen-Beispiel funktioniert nur deswegen in der Konsole, weil es drei voneinander unabhängige Zeilen sind, die jeweils von Sketchup-Ruby abgearbeitet werden. Eine Methode besteht aber aus folgenden Teilen:

              def METHODENNAME ARGUMENTELISTE
                METHODENRUMPF
              end
              

              Die Ruby-Konsole in Sketchup ist im Grunde äußerst doof. Sie kann nicht erkennen, dass, wenn du "def bla blubb" eingibst, es sich um den Anfang einer Methode handelt und die nächsten Zeilen dazu gehören, sodass sie mit der Ausführung der Zeilen noch warten muss. Sie nimmt einfach die Zeile und führt sie aus. "def bla blubb" ist aber kein valider Ruby-Code, wohingegen jede deiner 3 Zeilen valide ist. Auch d/Code ist so clever nicht, aber z. B. die IRB (Interaktive Ruby) kann das erkennen. Dazu gibst du in der Konsole / dem Terminal (also nicht in Sketchup) einfach mal: irb ein. Um dann damit aber weiterspielen zu können, musst du Ruby kennen.

              Das heißt nur "RubyKids", es ist durchaus für alle Menschen nutzbar. Ansonsten kannst du dir natürlich auch ein Ruby-Buch kaufen bzw hier gucken.

              azuby

              *error initus :: Blocks | CurrentDate | d/Code | extensionmanager | FFlipper | HideEdges | MeasuredArea | ModelHistory | PluginsHelp | PronButton | SAWSO | SCP | SU²CATT

              Bad English? PM me, correct me. :smile:**

              1 Reply Last reply Reply Quote 0
              • N Offline
                N Lindenthal
                last edited by

                @azuby said:

                …
                Sinnvoll wäre zu überlegen, den Code (ohne den "Auswähl-Schnipsel" (nach "z. B.")) in eine .rb-Datei auszulagern, die automatisch von Sketchup dann geladen wird, wenn man es startet. Dann muss nur noch der "Auswähl-Schnipsel" in die Konsole eingegeben werden.
                …

                Meine .rb-Datei heißt Aar_zoom_to_object.rb und liegt im Plugins-Ordner neben zum Beispiel extentions.rb. In meiner .rb-Datei steht drin:

                @unknownuser said:

                azuby 2008-07

                def zoom_to_object object_name
                Sketchup.active_model.entities.each do |entity|
                if entity.name == object_name
                Sketchup.active_model.active_view.zoom entity
                break # ist zwar dreckig, bin heute aber mal faul
                end
                end
                end

                Ich darf unterstellen, daß also diese Methode zoom_to_object beim SketchUp-Programmstart mitgeladen wird.

                Tippe ich nun in die Ruby-Konsole in meiner SketchUp-Datei (die das Objekt "Stein" enthält):

                zoom_to_object "Stein"
                

                dann passiert leider nichts, außer folgende Meldung/Fehlermeldung:

                @unknownuser said:

                zoom_to_object "Stein"
                Error: #<NoMethodError: undefined method `zoom_to_object' for main:Object>
                (eval):209

                1 Reply Last reply Reply Quote 0
                • N Offline
                  N Lindenthal
                  last edited by

                  @azuby said:

                  …
                  im Terminal
                  …
                  Eingabe "ruby -v"
                  …
                  gibt Rückmeldung:

                  @unknownuser said:

                  ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]

                  RubyKids kann also losgehen. Danke bis hierhin.

                  1 Reply Last reply Reply Quote 0
                  • N Offline
                    N Lindenthal
                    last edited by

                    @azuby said:

                    …
                    Da die Lektionen für Windows sind, musst du etwas kreativer sein, was Pfade und Programme angeht.
                    …

                    Ja, require 'jcode! und require 'WIN32API' werden auf Mac naturgemäß nicht aufgelöst. Hm …

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      azuby
                      last edited by

                      Ich kann nicht nachvollziehen, warum bei dir ein NoMethodError auftritt - habe es (unter Windows) mittlerweile zum dritten Mal probiert mit einer separaten Datei und es klappt. In deiner Datei steht darüber hinaus noch der etwas ältere Code ohne Objekttypenprüfung.

                      Gib mal, bevor du zoom_to_object "Stein" eingibst, vorher ein:

                      load "Aar_zoom_to_object.rb"

                      Nebenbei: require "jcode" sollte auch aufm Mac laufen, hatte vor einem Jahr auf dem System und mit dieser Bibliothek programmiert.

                      azuby

                      *error initus :: Blocks | CurrentDate | d/Code | extensionmanager | FFlipper | HideEdges | MeasuredArea | ModelHistory | PluginsHelp | PronButton | SAWSO | SCP | SU²CATT

                      Bad English? PM me, correct me. :smile:**

                      1 Reply Last reply Reply Quote 0
                      • N Offline
                        N Lindenthal
                        last edited by

                        @unknownuser said:

                        load "Aar_zoom_to_object.rb"
                        true
                        zoom_to_object "Stein"
                        Error: #<NoMethodError: undefined method `zoom_to_object' for main:Object>
                        (eval):197

                        Dann meine Aar_zoom_to…-Datei erneuert mit dem besseren Skript von azuby. Schon beim Neustart von SketchUp 6 kommt folgende Fehlermeldung:

                        @unknownuser said:

                        Fehler beim Laden der Datei Aar_zoom_to_object.rb
                        /Library/Application Support/Google SketchUp 6/SketchUp/Plugins/Aar_zoom_to_object.rb:10: parse error, expecting `$'

                        Soll der Fehler von Zeile 10 herrühren? In Zeile 10 steht end für die if-Zeile.

                        Wenn ich diese Fehlermeldung übergehe und dann in der Ruby-Konsole nochmals den Skript Aar_zoom_to… starte, dann kommt folgende Fehlermeldung:

                        @unknownuser said:

                        load "Aar_zoom_to_object.rb"
                        Error: #<SyntaxError: (eval):197:in load': /Library/Application Support/Google SketchUp 6/SketchUp/Plugins/Aar_zoom_to_object.rb:10: parse error, expecting $'>
                        (eval):197
                        (eval):197

                        Bis auf zusätzlich (eval):197 dieselbe Meldung.

                        Hm?

                        1 Reply Last reply Reply Quote 0
                        • A Offline
                          azuby
                          last edited by

                          Habe soeben zum vierten Mal Folgendes getan: Ich habe den Quellcode meines Beitrags vom 14 Jul 2008, 13:32 markiert, kopiert und in eine Datei "bla.rb" im Plugins-Verzeichnis von Sketchup eingefügt. Habe dann Sketchup gestartet, das Männchen in "Stein" umbenannt und

                          zoom_to_object "Stein"

                          eingegeben. Funktioniert.

                          Ich kann mir jetzt nur noch vorstellen, dass es ein Problem mit den Zeichensätzen gibt. Welches Programm hast du verwendet, um die .rb-Datei zu befüllen?

                          azuby

                          *error initus :: Blocks | CurrentDate | d/Code | extensionmanager | FFlipper | HideEdges | MeasuredArea | ModelHistory | PluginsHelp | PronButton | SAWSO | SCP | SU²CATT

                          Bad English? PM me, correct me. :smile:**

                          1 Reply Last reply Reply Quote 0
                          • N Offline
                            N Lindenthal
                            last edited by

                            Danke, azuby, das wars. Mit

                            zoom_to_object "Stein"
                            

                            in der Ruby-Konsolenzeile wird nun mein Objekt »Stein« bildschirmfüllend zentriert. Schön!

                            Meine vorhergehende Datei hatte ich mit SubEthaEdit hergestellt, die jetzt funktionierende mit TextWrangler.

                            1 Reply Last reply Reply Quote 0
                            • A Offline
                              azuby
                              last edited by

                              1. Geht prinzipiell mit einigen Biegungen. Allerdings frage ich mich, welchen Nutzen das hat.

                              2. Falsch verstanden. In deinem Fall (Grund: Mac) wirst du momentan nicht umhin kommen, die Ruby-Konsole in Sketchup derartig zu nutzen. Es ging mir darum, dass die Art und Weise, Oberflächen roboterartig fernzusteuern, sehr unkonventionell und auch fehleranfällig ist. Kommunikation zwischen Programmen findet normalerweise "unter der Haube" statt, also unsichtbar für den menschlichen Betrachter.

                              3. Gibt es nicht. Warum es kein spezielles Buch für Ruby aufm Mac gibt, ist schnell zu beantworten: Ruby soll als eine Art plattformunabhängige Sprache verstanden und genutzt werden, ist also auch entsprechend konzeptioniert.

                              4. Weiß ich nicht 😄

                              azuby

                              *error initus :: Blocks | CurrentDate | d/Code | extensionmanager | FFlipper | HideEdges | MeasuredArea | ModelHistory | PluginsHelp | PronButton | SAWSO | SCP | SU²CATT

                              Bad English? PM me, correct me. :smile:**

                              1 Reply Last reply Reply Quote 0
                              • N Offline
                                N Lindenthal
                                last edited by

                                @azuby said:

                                …
                                Bitte nicht in Sketchup lernen, sondern in der Konsole/Terminal.
                                …

                                Moin, azuby,
                                Du hattest wirklich viel Geduld mit mir. Danke dafür. Nach mehrtägigen Irrwegen läuft zum Schluß alles wie gewünscht. Mit TextWrangler kann ich Ruby-Skriptdateien (für SketchUp) sichern, mit zwei weiteren Texteditoren geht das nicht. Auch die einzeilige Eingabe von mehrzeiligen Skripten ging, wenn ich mit TextWrangler die Zeilenschalter durch »;« ersetzte.
                                Nun ist Aufräumen und eine Neukonzeption dran. Und da kommen schon wieder Fragen.

                                1. Mit load kann ich einen neu in den Plugins-Ordner gestellten Skript.rb laden. Kann ich auch bereits beim SU-Startvorgang geladene Ruby-Skripte auflisten und deren Text abfragen (so daß der Skripttext in der Konsole aufgeführt würde)?

                                2. Wenn Du empfiehlst, nicht in der SU-Ruby-Konsole, sondern im Mac-Terminal den Ruby-Skriptcode zu tippen, wie geht das so, daß er in der SU-Datei ausgeführt wird?

                                3. Kennt jemand ein Ruby-Lernbuch, das viel auf SU und viel auf Mac eingeht?

                                4. Wie kann ich beim Anfliegen auf ein Objekt (zoom_to_object) die Blickrichtung mit angeben?

                                Dein Lehrgang entwickelte sich hier im ganz anders benannten Faden. Ich werde mir demnächst die Mühe machen, die Essenz in passend benannte Fäden aufzuteilen.

                                1 Reply Last reply Reply Quote 0
                                • 1
                                • 2
                                • 1 / 2
                                • First post
                                  Last post
                                Buy SketchPlus
                                Buy SUbD
                                Buy WrapR
                                Buy eBook
                                Buy Modelur
                                Buy Vertex Tools
                                Buy SketchCuisine
                                Buy FormFonts

                                Advertisement