Hm. I see. Sketchup.rb is short, so it will not be problem to remember it. And where is definited UI?
Posts
-
RE: Where to start?
-
RE: Where to start?
What does mean $ is it global variable? I thought it is array, but now I see they use it in different way.
This:
results = inputbox prompts, values, $exStrings.GetString("Cost Estimate")
What is inputbox, does not look like method of global scope
-
RE: Where to start?
Ah, now it works.
puts @iptemp.position
Something I miss in the reference manual. From different languages I am used to see above every method a list of similar or related methods/links.... Is here some similar page which gives such kind of information / organized in different way? Or is this the only source?
-
RE: Where to start?
OK. Works. So I tried:
@iptemp.pick view, x, y puts @iptemp
#Sketchup::InputPoint:0xd0fe6fc
So the input point is in hexadecimal format? If I would want to read it, I would need to add method to convert to decimal, right? I tried:
puts @iptemp.hex
returns error -
RE: Where to start?
If I change code of the plugin, will it be refreshed automatically or must I reload the plugin and how?
-
RE: Where to start?
What debug tools and methods can I use to debug method?
Example, utilitiestool.rb
class TrackMouseTool
method onMouseMove@iptemp.pick view, x, y
I would like to see what contains @iptemp.
Is it possible to show dialog box or pause code?
-
RE: Where to start?
@thomthom said:
Not only is it in global namespace - it uses
typename
to identity the type of entity (which many plugin does because the API docs sets a very poor example.).typename
is very very slow - avoid at all cost!Exactly. I am reading it just in the first link (http://forums.sketchucation.com/viewtopic.php?f=180&t=10142) in the first response in this thread.
-
RE: Where to start?
I go through SU examples.
So Utilities - Create Faces ... utilitiestools.rb
ss = Sketchup.active_model.selection # Get an Array of all of the selected Edges edges = ss.find_all { |e| e.kind_of?(Sketchup;;Edge) }
So here the "e" means output of the find_all method, so what the loop produces in the moment of its cycle. I thought that it is definition of the input or some argument for input! But recalled that I asked on it on previous page. It seems to me that it is like loop, similar like .each { |e| e.some.action.here}
-
RE: Where to start?
@thomthom said:
I recommend new plugin developers to read this one first: http://www.thomthom.net/thoughts/2012/01/golden-rules-of-sketchup-plugin-development/
Well, helpful. I found one plugin in my folder, which is in global namespace.
#this part is taken (after a little modification) directly from the script Skin by Darrel Belvin so all credit is his (hope he doesn't mind me posting this) def clean_up Sketchup.active_model.start_operation "Clean-up" ss = Sketchup.active_model.selection.collect erasee = [] ss.each {|e| if (e.typename=="Edge") if((e.faces.length==0)|| (e.faces.length==2 && e.faces[0].material==e.faces[1].material && e.faces[0].normal.parallel?(e.faces[1].normal))) erasee.push e end end } erasee.each {|e| e.erase! if(e.deleted? == false) } Sketchup.active_model.commit_operation return end if not (file_loaded? "cleanup.rb") clean = UI.menu("Plugins") clean.add_item("Clean-up") {clean_up} end
-
RE: Where to start?
@dan rathbun said:
@rumcajs said:
Follow the guide and you will be much happier.
The frustration is from the Interactive guide, because it didn't work in the fully meaning of ruby console. SO I could not check what I did. But I closed the window, and moved.
-
RE: Where to start?
I run this "Ruby" in Browser, this is not in SU. It is tutorial - interactive online guide which is called "15 minutes tutorial"
http://tryruby.org/levels/1/challenges/0#levels/8/challenges/3So I am not sure if the ruby runs there or it is just simulation of Ruby in Javascript or Flash. So as they say, the path is preconfigurated, and I checked before that the path and files were there. Now I am on next lesson.
blog = [entry, entry2] => [#<BlogEntry;0x72e8e4f7 @fulltext="I can't believe Mt. Hood was stolen! I am speechless! It was stolen by a giraffe who drove away in his Cadillac Seville very nonchalant!!", @time=2012-09-16 15;55;25 +0000, @title="Today Mt. Hood Was Stolen!", @mood=;sick>, #<BlogEntry;0x18104f11 @fulltext="I am never going back to that mountain and I hope a giraffe steals it.", @time=2012-09-16 15;55;25 +0000, @title="I Left my Hoodie on the Mountain!", @mood=;confused>] Success! > next > blog.sort_by { |entry| entry.time}.reverse [#<BlogEntry;0x263b3097 @title="I Left my Hoodie on the Mountain!", @time=2012-09-16 15;57;13 +0000, @fulltext="I am\ never going back to that mountain and I hope a giraffe steals it.", @mood=;confused>, #<BlogEntry;0x77f31d1c @title="Today Mt. Hood Was Stolen!", @time=2012-09-16 15;57;13 +0000, @fulltext="I can't believe Mt. Hood was stolen! I am speechless! It was stolen by a giraffe who drove away in his Cadillac Seville very nonchalant!!", @mood=;sick>] Success! > back > blog.find_all {|entry| entry.fulltext.match(/cadillac/i)} [#<BlogEntry;0x68f04725 @title="Today Mt. Hood Was Stolen!", @time=2012-09-16 15;58;56 +0000, @fulltext="I can't believe Mt. Hood was stolen! I am speechless! It was stolen by a giraffe who drove away in his Cadillac Seville very nonchalant!!", @mood=;sick>] Success! > blog.find_all {|entry| entry.fulltext.match(/Mt.{2,10}/i)} => [#<BlogEntry;0x5ac78f1f @fulltext="I can't believe Mt. Hood was stolen! I am speechless! It was stolen by a giraffe who drove away in his Cadillac Seville very nonchalant!!", @time=2012-09-16 15;59;49 +0000, @title="Today Mt. Hood Was Stolen!", @mood=;sick>] Success! > back > blog.map { |entry| entry.mood} [;sick, ;confused] Success!
So want to ask what is the entry in pipelines? |entry|
I defined entry and entry2 as instance of my little blog class. Blog is array containning entry and entry2, but I ask about what is meanning for |..| in these methods. It looks like it is name of class.
-
RE: Where to start?
Whatever i write it jumps into input mode:
comics.is_a .. end > comics.is_a? ..
Damn, that's not 15 minutes tutorial, but 15 hours (I'm in half but cannot move on).
> Popup.make do .... h1 "Header" .... list do ...... comics.each do |name, url| ........ link name, url ........ end ...... end .... end ..
Should generate web page, but nothing popups. And I cannot check if the array exists, what is in array, what is in directory or if the file exist... Look like not realy ruby console (running in browser).
-
RE: Where to start?
Something else confused me. But i think I had overlooked something. The ratings are not saved in values, but in ratings...
Things are going bad, I cannot move on.
#<SyntaxError; Invalid char "\xC2" in expression. near line 1; "\xADread(\"/Hom\xC2\xADe/comics.t\xC2\xADxt\")"> > print File.read("/comics.txt") => #<SyntaxError; Invalid char "\xC2" in expression. near line 1; "\xADread(\"/comics.t\xC2\xADxt\")"> > print File.read("comics.txt") => #<Errno;;ENOENT; No such file or directory - comics.txt> > Dir["/*"] => [] Open up a new BlogEntry class, pretty pretty please. >
How can I print what is in /home/comics.txt and /comics.txt and if they exists and why this error happens...
-
RE: Where to start?
I tried this (interactive guide):
ratings = Hash.new(0) => {} Success! > books.values.each { |rate| ratings[rate] += 1 } => [;splendid, ;quite_good, ;mediocre, ;quite_not_good, ;abysmal] > ratings => {;splendid=>1, ;quite_good=>1, ;mediocre=>1, ;quite_not_good=>1, ;abysmal=>1} >
And it is not clear to me, hoq the value 1 is assigned to the values. I guess that first command created new hash ratings. Then I go through each value of the hash and set the ratings... But how is it possible, that ratings hash overwrite the book.values? As I know this is problem in PHP. If you know something like
foreach(books->values as $val){ ; this will not work; val="new value"; }
It will not overwrite the for values of "values" property. Maybe the relation between ratings and books.values was already defined somewhere in a class, which is not visible to me?
This command does not work to me as expected:
.. File.Open("/Home/comics.txt", "a") do |f| .... jjj .. ss
I can write in the file but how to close it and to keep data in it? There should be some other stuff in the file when I write File.Open("/Home/comics.txt", "a") . Once I succeeded there were some links and they say, that is should add some data in file...
-
RE: Where to start?
OK. So summary.
Objects can keep properties (@name...) and methods.
Arrays [] are only non-associative.
Hashes {} are associative arrays, not ordered.Can you print function or method just like in JS? I know more scripting languages not just JS. Last one is AHK.
-
RE: Where to start?
@thomthom said:
Btw, - strings are slow, avoid them if you can. For
respond_to?("each")
useSymbol
s instead - like so:respond_to?(:each)
Yes, I read it just now in the interactive guide
I create my first hash. But don't know what is it hash, looks like an object... Why they call it hash?
-
RE: Where to start?
I'm having a fun with this:
http://tryruby.org/levels/1/challenges/0#levels/1/challengesThis interactive guide for ruby is really cool. Somebody could make one for ruby beginners in SU, don't you think? It looks simple to do something like that.
-
RE: Where to start?
@thomthom said:
Have a look at the Ruby in Twenty minutes link. It goes through all the basics like this.
Yeah, I've just finished.
Is it only way of detecting if variable is array or do you have more ways? (inside class)
if @names.respond_to?("each") end
-
RE: Where to start?
puts "Hello #{name.capitalize}!"
You can "add" any method to string inside string? That is awesome.
Class syntax:
class Greeter def initialize(name = "World") @name = name end end
Does the class can have something like:
class Greeter @name = "" @myname = end
Or you cannot define variables outside method?
It looks like I have use initialize method to define instances before all
Is this @ used only in classed? I have seen using
@@time_start = Time.now
what does mean the @@?
-
RE: Where to start?
Yup. So it is similar to foreach (PHP and other languages that use that syntax like foreach ($arr as $key => $val ) {} ). Ruby is very similar to JQuery and Javascript.