Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

378
Visualizações
¿Podría alguien explicar vertices.flatten! en SketchUp Ruby para mí?

A continuación se muestra un fragmento de código (crédito a Rafael Rivera) que traza puntos en los vértices de un modelo en SketchUp.

 def pointplot model = Sketchup.active_model entities = model.active_entities selection = model.selection edges = selection.grep(Sketchup::Edge) if edges.empty? msg = 'Select one or more edges before using this tool.' UI.messagebox(msg) return end vertices = [] edges.each { |edge| vertices << edge.vertices } vertices.flatten! vertices.uniq! vertices.each { |vertex| entities.add_cpoint vertex.position } end def check_line sel = Sketchup.active_model.selection ok = sel.find { |e| e.typename == "Edge" } ok ? MF_ENABLED : MF_GRAYED end UI.add_context_menu_handler do |menu| menu.add_separator item = menu.add_item("Point Plot") { pointplot } menu.set_validation_proc(item) {check_line} end

¿Podría alguien explicarme esta línea de código, qué hace realmente y por qué es necesario que el código funcione?

vertices.flatten!

Soy consciente de lo que ".flatten!" hace en circunstancias normales. Entiendo perfectamente este ejemplo de rubyapi.org

 a = [ 0, [ 1, [2, 3], 4 ], 5 ] a.flatten!(1) # => [0, 1, [2, 3], 4, 5] a = [ 0, [ 1, [2, 3], 4 ], 5 ] a.flatten!(2) # => [0, 1, 2, 3, 4, 5] a = [ 0, [ 1, [2, 3], 4 ], 5 ] a.flatten!(3) # => [0, 1, 2, 3, 4, 5] [0, 1, 2].flatten!(1) # => nil

Pero en el mundo de SketchUp, ¿qué significa ".flatten!" en realidad hacer?

'Pongo' la matriz de vértices en mi consola y veo esto como salida.

 #<Sketchup::Vertex:0x00000180a0788440> #<Sketchup::Vertex:0x00000180a0788418> #<Sketchup::Vertex:0x00000180a07883c8> #<Sketchup::Vertex:0x00000180a07883a0> #<Sketchup::Vertex:0x00000180a0788440> #<Sketchup::Vertex:0x00000180a0788418> #<Sketchup::Vertex:0x00000180a07883c8>

Entonces, ¿qué estoy 'aplanando' exactamente?

¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Hace exactamente lo mismo que el comportamiento que ya observó con flatten con la única diferencia de que cambia el objeto en el que se llama en lugar de devolver un objeto modificado.

Echemos un vistazo a estas tres líneas:

 vertices = [] edges.each { |edge| vertices << edge.vertices } vertices.flatten!

Primero, se crea una matriz vacía. Luego, al iterar sobre todos los bordes, los vértices de los bordes (que muy probablemente estén almacenados en una matriz) se agregan a la matriz. Eso significa que después de esta línea tienes una matriz anidada de vértices que se ve así (pseudocódigo):

 [[vertice_1, vertice_2], [vertice_3, vertice_4], [vertice_1, vertice_4]]

vertices.flatten! luego aplanará los vertices a:

 [vertice_1, vertice_2, vertice_3, vertice_4, vertice_1, vertice_4]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda