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

335
Visualizações
"add_cpoint" no funciona en un método en Ruby de SketchUp

Tengo un fragmento de código a continuación que traza dos puntos en [2,3,4] y [5,6,7] cuando el código se ejecuta en la consola Ruby de SketchUp. El objetivo final es poder permitir que el usuario seleccione una línea y cree puntos en ambos extremos de la línea, pero lo estoy haciendo paso a paso a la vez.

 sel = Sketchup.active_model.selection fp = [2,3,4] sp = [5,6,7] fp = fp.map {|a| 39.3701 *a} sp = sp.map {|a| 39.3701 *a} p1 = Geom::Point3d.new(fp) p2 = Geom::Point3d.new(sp) addpoint1 = entities.add_cpoint p1 addpoint2 = entities.add_cpoint p2

Poco a poco estoy tratando de hacer que este código sea más fácil de usar. Traté de actualizarlo haciéndolo así que necesitas seleccionar una línea para crear dos puntos en [2,3,4] y [5,6,7].

Además, el número 39.3701 es para convertir las unidades en las unidades que quiero (metros), SketchUp tiene sus propias unidades extrañas que he resuelto con una 'solución de curita'.

([2,3,4] [5,6,7] son matrices codificadas que estoy usando solo para ver si he escrito las cosas correctamente).

Aquí está mi intento en el siguiente bit de código.

 def pointplot sel = Sketchup.active_model.selection fp = [2,3,4] sp = [5,6,7] fp = fp.map {|a| 39.3701 *a} sp = sp.map {|a| 39.3701 *a} p1 = Geom::Point3d.new(fp) p2 = Geom::Point3d.new(sp) addpoint1 = entities.add_cpoint p1 addpoint2 = entities.add_cpoint p2 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

Lo que hará este código más grande es agregar una opción al menú cuando el usuario haga clic derecho en una línea. La función adicional se llama "Gráfico de puntos".

Sin embargo, cuando hace clic en la función 'Gráfico de puntos', no crea los dos puntos en [2,3,4] y [5,6,7].

Parece que hay un problema en torno a estas líneas. Si pusiera un UI.messagebox() antes de esas dos líneas, aparecerá el cuadro de mensaje. Pero si coloco UI.messagebox() después de esas dos líneas, no aparecerá.

 addpoint1 = entities.add_cpoint p1 addpoint2 = entities.add_cpoint p1

¿Alguien podría aclarar el problema con el que me estoy metiendo?

¡Gracias!

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

0

Aquí hay un ejemplo para crear un 'punto de construcción' en cada vértice de los bordes seleccionados...

 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 }
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