Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

325
Vistas
"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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda