Thank you for your help.
It works perfectly.
Thank you again.
๐ก LightUp 7.1 | SketchUp's only real-time renderer that uses object-based rendering
Download Trial
T
Latest posts made by themonty
-
RE: The component information inside the group extract
-
RE: The component information inside the group extract
Thank you for your answer.
As you execute the code you sent, Error: #SystemStackError: stack level too deep]
There's a message.I will upload the sketchup file.
I want to extract the name of the Component Instance Definition in each group.
-
The component information inside the group extract
Hello, I'm a beginner in Ruby's development.
We are currently developing a Ruby to extract component information within the group.
The component information inside the group is extracted, but the component information within the group and within the group cannot be extracted.
Is there a way to continue searching for a child group by applying a repeat statement to get some component information?code :
sel.each do |ss| if not ss.class == Sketchup;;Group UI.messagebox ('๊ทธ๋ฃน์ ์ ํํด ์ฃผ์ธ์') return end #@group_names.push(ss.name) #@num_entities.push(ss.entities.length) #๊ฐ ์ธ์คํด์ค ๋ณ Definition ์ด๋ฆ์ @name ๋ฐฐ์ด์ ๋ฃ๋๋ค. ss.entities.each do |e| if e.class == Sketchup;;ComponentInstance if e.definition.name.include? '-' or e.definition.name.include? '_' if e.definition.name.include? '~' ename = e.definition.name.gsub!('~','') else ename = e.definition.name end if ename.include? '#' @names.push(ename.split('#')[0].strip) else @names.push(ename) end end elsif e.class == Sketchup;;Group e.entities.each do |ee| if ee.definition.name.include? '-' or ee.definition.name.include? '_' if ee.definition.name.include? '~' ename = ee.definition.name.gsub!('~','') else ename = ee.definition.name end if ename.include? '#' @names.push(ename.split('#')[0].strip) else @names.push(ename) end end end end end #ss.each์ ๋ํ END #@name์ ๋ฐฐ์ด ์์๋ฅผ ์ ๋ ฌํ๋ค. @names = @names.sort! #@name์ ๋ฐฐ์ด์ ๊ฐ์ ๋ด์ฉ์ ๋ฌถ์ด ํด์๋ก ํตํฉํ๋ค. hash_overlap = @names.each_with_object(Hash.new(0)) { |word,counts| counts[word] += 1 } @comp_names = (hash_overlap.to_a) #comp_names์ ๋ด์ฉ์ h, b, t1, t2, length๋ณ๋ก ๋ถ๋ฅํ๋ค. @comp_names.each do |str| num = str[0].split('-')[1].strip i = 0 while i < num.count('X') + 1 str.push(num.split('X')[i].strip) i = i + 1 end #str.push(num.split('X')[1].strip) #str.push(num.split('X')[2].strip) #str.push(num.split('X')[3].strip) #str.push(num.split('X')[4].strip) end @hash_names.store(ss.name, @comp_names) @names = [] hash_overlap = {} end #sel.each์ ๋ํ end