Alle tijden zijn GMT + 1 uur [ Zomertijd ]




  • Advertisement

Plaats een nieuw onderwerp Dit onderwerp is gesloten, je kunt geen berichten wijzigen of nieuwe antwoorden plaatsen  [ 1 bericht ] 
  Afdrukweergave

[TUTORIAL] Ruby Scripting
Auteur Bericht
BerichtGeplaatst: 29 jun 2007, 20:41 
Site Admin
Offline

Geregistreerd: 09 apr 2007, 12:20
Berichten: 1857
Ik ben hier bezig om uit te leggen hoe je je eigen tools voor SketchUp kunt maken. Ik ben nog bezig, dus nog niet alles is af.

Om te beginnen raad ik je aan om [url=http://www.scriptspot.com/files/rubypanel.zip
]dit scriptje te downloaden[/url]. Je kunt dan de Ruby Console (die zul je nodig hebben) via de toolbar openen.

Eerste versie:
1. Open een teksteditor (bijvoorbeeld Kladblok) en plaats de volgende code in het lege bestand:
Code:
    UI.messagebox("Hallo Wereld!")

2. Sla het bestand op als HalloWereld.rb in de map C:\Program Files\Google\SketchUp 6\plugins\. Je slaat je bestand dus op als C:\Program Files\Google\SketchUp 6\plugins\HalloWereld.rb.
3. Open SketchUp opnieuw en als het goed is krijg je bij het opstarten de boodschap "Hallo Wereld" in beeld. Klik dan op "OK".

Een taak maken
Dat was het, maar het was nog een beetje erg makkelijk! Laten we daarom nu wat veranderingen in het script aanbrengen. Als we het script van net zo laten krijg je de boodschap "Hallo Wereld" te zien, elke keer als je SketchUp start. Dat kan vervelend worden.
Daarom voegen we nu een taak toe waardoor de boodschap alleen zichtbaar is als we de taak uitvoeren.

1. Open je teksteditor weer en laad het HalloWereld.rb bestand dat we net hebben opgeslagen.
2. Voeg voor de eerste regel "def hallo" toe. Dit maakt een nieuwe functie genaamd "hallo".
3. Voeg na de laatste regel "end" toe. Het bestand zou er nu zo uit moeten zien:
Code:
    def hallo
        UI.messagebox("Hallo Wereld!")
    end

4. Sla het bestand op en open SketchUp weer opnieuw.

Een taak uitvoeren
Om de hallo taak uit te voeren moeten we de Ruby Console openen. Je doet dat via Window > Ruby Console.

1. Open de Ruby Console.
2. Voer in het witte tekstvak onder in het venstertje "hallo" in en druk op [Enter].
3. De boodschap zou nu moeten verschijnen.

Een taak in het menu stoppen
Natuurlijk wil je niet dat je gebruikers de Ruby Console moeten openen om de taak uit te voeren. In dit onderdeel voegen we een code toe waardoor de taak in het menu verschijnt.

1. Pas je script aan met de volgende code
Code:
   #Make sure this ruby file is loaded
   # ("require" will load a file only if it is not loaded yet)
   require "sketchup.rb" #Make sure this ruby file is loaded
   
   #Our hello function
   def hallo
       UI.messagebox("Hallo Wereld!")
   end
   
   #The function "hallo" only gets run if you type in: hello
   #other code gets run whenever the .rb file is loaded
   
   # define our file name so we will know when we load it twice
   filename="HalloWereld.rb"
   
   #run this code the first time this script is loaded
   #If it is loaded again, file_loaded!(filename) will return true
   if !file_loaded?(filename)
       # get the SketchUp plugins menu
       plugins_menu = UI.menu("Plugins")
       # add a seperator and our function to the "plugins" menu
       if plugins_menu
           plugins_menu.add_separator
           plugins_menu.add_item("Hallo Wereld") { hallo}
       end
       # Let Ruby know we have loaded this file
       file_loaded(filename)
   end

2. Start SketchUp opnieuw en je zult zien dat onze taak in het plugins menu verschijnt en de boodschap tevoorschijn komt als je op "hallo" in het menu klikt.

Standaard taken
De meeste script starten met een regel met
Code:
   model = SketchUp.active_model

Hiermee geef je "model" een waarde, waardoor het makkelijker is om de rest van het script te schrijven. Je kunt natuurlijk de hele tijd de volle naam gebruiken, maar dit is veel korter en overzichtelijker.
Nu willen we toegang tot alle, door de gebruiker, geselcteerde delen van het model.
Code:
   selection_set = model.selection

Nu worden alle selecties opgeslagen in een reeks genaamd "selection_set".

Maak een lijst van geselecteerde dingen


Het volledige script
Code:
model=Sketchup.active_model      # point to the active model

selection_set = model.selection   # get the selected entities

# Put initial message into output string - count of entities selected
smess = sprintf("%d objecten geselecteerd\n\n", selection_set.length)

# Loop through the entities in the selection set.
# "each" will execute the code in braces {} for each entity in the list.
# |entity| gives the loop a variable in which to store each entity as the loop is processed.
selection_set.each {|entity|
    # Get the ID and class for each entity
    sent = sprintf("ID: %s Type: %s", entity.entityID, entity.class)
    # Add the string for this entity to the total message
    smess = smess + sent + "\n" # append message to string
}

#Display the full message
UI.messagebox(smess)


Het script uitvoeren
Plak bovenstaand script in een tekst edito (zoals Kladblok) en sla het op als C:\Program Files\@Last Software\SketchUp 5\plugins\list_entities.rb.
1. Start SketchUp opnieuw en laad een model.
2. Selecteer één of meer objecten (lijnen, vlakken, components)
3. Open de Ruby Console en tik in "load 'list_entities.rb'".


Omhoog
 Profiel  
 

Geef de vorige berichten weer:  Sorteer op  
Plaats een nieuw onderwerp Dit onderwerp is gesloten, je kunt geen berichten wijzigen of nieuwe antwoorden plaatsen  [ 1 bericht ] 

Alle tijden zijn GMT + 1 uur [ Zomertijd ]


Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 0 gasten


Je mag geen nieuwe onderwerpen in dit forum plaatsen
Je mag niet antwoorden op een onderwerp in dit forum
Je mag je berichten in dit forum niet wijzigen
Je mag je berichten niet uit dit forum verwijderen
Je mag geen bijlagen toevoegen in dit forum

Zoek naar:
Ga naar:  
cron
Style by business web design styles , pozycjonowanie strony pozycjonowanie stron sem
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group | Design Downloaded from free phpBB themes templates | free website templates downloads | photoshop brushes.
phpBB.nl Vertaling
phpBB SEO