sketchucation logo sketchucation
    • Login
    1. Home
    2. azuby
    3. Posts
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    ⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
    A
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 23
    • Posts 305
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Kann Wertefenster nicht ändern

      Das Drücken/Ziehen-Werkzeug auswählen, über die Ringfläche fahren, sodass sie "aktiviert" erscheint, klicken, ziehen, einfach darauf los tippen: 300, Enter drücken.

      edit: Aus einem Objekt eine Komponente machen - achte darauf, das Mantelflächen und Ringflächen markiert sind, dann Rechtsklick auf diese markierten Elemente, "Komponente erstellen" wählen.

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      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

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      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

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      Ich nochmal: Ich habe die Vermutung, du kommst mit dem Programmier-Konstrukt der -> Methoden noch nicht klar. Mal ein einfaches Beispiel, warum Methoden gut sind und wie man sie gebraucht (in Ruby wird eine Methode eingeleitet mit "def MEHTODENNAME ARGUMENT(E) ... end"):

      Aufgabe: Verschiedene Flüssigkeiten sollen aus verschiedenen Behältern in verschiedene Gefäße gegossen werden. Man kann das folgendermaßen lösen, wie das auch die meisten Leute tun, wenn sie anfangen zu programmieren:

      "Aufgabe: Gieße Kaffee aus einer Kanne in eine Tasse
      Vorgehen: Nimm die Kaffeekanne, halte sie über den Rand der Tasse, schräge sie an, prüfe fortwährend die Füllhöhe in der Tasse, ..."

      "Aufgabe: Gieße Putzwasser aus einem Eimer ins Klo
      Vorgehen: Nimm den Eimer, halte ihn über den Rand ..."

      "Aufgabe: Gieße Motoröl aus der Flasche in den Trabi-Benzintank
      Vorgehen: Nimm die Flasche, halte sie über ..."

      Abstrakt ergibt sich
      "Aufgabe: Gieße a aus b in c
      Vorgehen: Nimm b, halte es über den Rand von c, ..."

      Das Abstrakte ist im Prinzip die Methode. Die muss man ja irgendwie ansprechen können, also kriegt sie einen Namen, z. B. "gieße" Man sagt über den Programmcode also: "Achtung, jetzt definiere ich eine Methode, die man danach verwenden kann, indem man sie über ihren Namen aufruft und ihr einige Argumente mitgibt"

      Und für die o. g. drei Beispiele ergibt sich:

      "Aufgabe: Gieße Kaffee (a) aus einer Kanne (b) in eine Tasse (c)
      Vorgehen: gieße a, b, c"

      Für die Problematik hier im Thread bedeutet das, es gibt eine Methode zoom_to_object, deren Aufgabe es ist, zu einem Objekt zu zoomen. Der Methode ist egal, wie das Objekt konkret heißt oder ob es grün ist. Sie fordert nur, DASS es einen Namen hat und dass sie diesen Namen als Argument bekommt (klar, damit sie weiß, welches konkrete Objekt gemeint ist).

      edit: Die Vorteile habe ich vergessen. Eine Methode stellt ein quasi standardisiertes Vorgehen dar, dass sich immer und immer wieder verwenden lässt. Man muss also den Algorithmus nicht für jede Zoom-Aktion neu notieren, sondern greift auf eine (hoffentliche funktionierende) Notation zurück. Das vereinfacht auch die Wartung. Wenn ich alles ständig "neu" schreiben muss - die meisten kopieren nur und ersetzen dann an einigen Stellen -, dann muss ich viel mehr tun, wenn doch irgendwo ein Fehler lauert. Stell dir vor, du hast 500 Zoom-Vorgänge und musstest den Algorithmus 500 Mal kopieren und anpassen. Dann musst du, sollte der Algorithmus doch fehlerhaft sein, an 500 Stellen eine Änderung machen. Bei Methodennutzung musst du das nur an einer Stelle - nämlich im Methoden-Rumpf.

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      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

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      Ah OK, ich sehe den Fehler: Nicht alle Elemente in Sketchup haben jeweils einen Namen. Text-Objekte haben zum Beispiel keinen Namen. Gruppen und Komponenteninstanzen haben aber jeweils Namen, also muss die Prüfung des gerade iterierten Elements erweitert werden:

      def zoom_to_object object_name
        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 # ist zwar dreckig, bin heute aber mal faul
            end
          end
        end
      end
      
      # aufzurufen dann mit z. B.
      zoom_to_object "Stein"
      

      Dazu muss noch gesagt werden, dass, wenn sich mehrere Objekte mit dem Namen "Stein" im Modell befinden, das Objekt angesprungen wird, welches zuerst gezeichnet/erstellt wurde.

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      Ich werde jetzt aber nicht raten, was du getan oder nicht getan hast, um es zum Laufen zu bringen und welche Rückmeldung oder auch nicht du bekommen hast 😎

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      Ich sehe gerade diesen Thread - das ganze Zeug um die BoundingBox ginge zwar auch, aber warum kompliziert, wenn es auch einfach geht.

      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
      
      # aufzurufen dann mit z. B.
      zoom_to_object "Stein"
      

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Fenster unauffindbar

      Hilft das weiter?: Group und ComponentInstance erben von Drawingelement. Darum haben sie alle die Methode Drawingelement#bounds, die als Rückgabewert ein BoundingBox-Objekt liefert. Bei diesem sind die Methoden BoundingBox#center, BoundingBox#max und BoundingBox#min interessant, die allesamt ein Point3d-Objekt liefern. Und dies wiederum kann man nach seinen Werten (x, y, z) abfragen.

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Version 5 class listing - ANSWERED
      puts Sketchup.constants.sort
      

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: Ein Band um eine Rolle führen

      Wenn du noch etwas Zeit hast, guck mal das Video in diesem Thread an, vor allem die Stelle, bei der es um Tools on Surface geht.

      azuby

      posted in Deutsch
      A
      azuby
    • RE: Validation/protection needed

      The check for script modification could be done using simple checksums - MD5. All in all you need a script validating the validation script 😉

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: Stopping UI.play_sound ?

      Have you tried putting the command into its own thread and kill the thread when "the event" occurs?

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: Can Ruby run in a windows mobile ppc

      I documented my attemps in German here: http://forum.ruby-portal.de/viewtopic.php?t=2669 At first, follow the links given in the thread (haven't tried them for working).

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: Can Ruby run in a windows mobile ppc

      Short answer: Yes.

      I have had a Ruby on my Qtek 2020i, Windows Mobile 2003 SE. But it wasn't stable.

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: Passing coordinates javascript to callback

      Maybe you need to convert them (theX, ...Y, ...) to Fixnum/Integer. If you're sure they really are digits, you can use String#to_i, else you should use Integer() (i.e.: Integer(a[2])) and catch exceptions.

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: Hideedges script - Right Click Context

      Hi Bob,

      it's done. I've added a submenu to the context menu. Download version 0.2 from http://errorinitus.de/

      Much fun!

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: WebDialog on Mac - problems with height

      Oh my god, the CSS things feel like Python ^^, anyway, thanks. And for the wrong initialization, well - I looked into the documentation, which confuses me (a bit) - have a look on your own for the described syntax for the WebDialog constructor:
      http://download.sketchup.com/OnlineDoc/gsu6_ruby/Docs/ruby-webdialog.html
      Next time I should scroll down a bit more 😉 But at the end I can't imagine, why a parameter called "resizable" resizes the content of the window if set to false. Seems to be one of the big mysteries of Sketchup ...

      azuby

      posted in Developers' Forum
      A
      azuby
    • RE: WebDialog on Mac - problems with height

      Download the attached file, put it into your Plugins / Tools folder, run Sketchup, type "zzz_show" (without the "") into the Ruby Console. And please tell me, whether you ran it on Mac or Windows and whether the whole hight of the window is used (should be black). Thanks a lot! ☀

      azuby


      zzz_show.rb

      posted in Developers' Forum
      A
      azuby
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 15
    • 16
    • 5 / 16