首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红宝石中的angle_between问题

红宝石中的angle_between问题
EN

Stack Overflow用户
提问于 2019-09-25 11:52:57
回答 1查看 127关注 0票数 2

男人们想知道是否有人能帮忙解决红宝石素描的问题。我试图区分内部角和外部角之间的差异,以获得两个不同的角度,如下图所示。

这是我正在使用的代码,它为所有人返回相同的角度?

代码语言:javascript
复制
puts (sel[0].faces[0].normal.angle_between (sel[0].faces[1].normal)).radians
EN

回答 1

Stack Overflow用户

发布于 2022-03-10 00:48:24

下面是一个代码示例,用于验证所选边缘是否为“凹”或“凸”。

如何使用:

  1. 创建.rb文件(例如,将其命名为“凹-卷积..rb”),并复制和粘贴下面的代码。然后将文件放在SketchUp插件文件夹中.

Selected Edge Concave or Convex?

  1. 通过访问Plugins or Extension Menu ->
  2. 激活Sketchup中的工具

  1. 完成了!如果您选择了由两个边使用的单个SketchUp边,则会提示消息,说明该边是凹的还是凸的。

此外,请记住重新命名模块,以使其独特,以便您的红宝石脚本发挥与其他脚本在插件文件夹。

代码语言:javascript
复制
module DevName
  module ToolName
    class Main
      def activate
        model = Sketchup.active_model
        selection = model.selection
        edges = selection.grep(Sketchup::Edge)
        first_edge = edges[0]

        if first_edge.nil?
          line1 = "Select a 'single edge' used by two faces\n"
          line2 = 'to determine if the edges is concave or convex.'
          msg = line1 + line2
          UI.messagebox(msg, MB_OK)
          Sketchup.active_model.select_tool(nil)
          return
        end

        msg = if concave?(first_edge)
                'Selected Edge is concave'
              else
                'Selected Edge is convex'
              end

        UI.messagebox(msg, MB_OK)
        Sketchup.active_model.select_tool(nil)
      end

      # Return true if edge is concave and returns false if convex
      def concave?(edge)
        faces = edge.faces
        if faces.length != 2
          line1 = "Select a 'single edge' used by two faces\n"
          line2 = 'to determine if the edges is concave or convex.'
          msg = line1 + line2
          UI.messagebox(msg, MB_OK)
          Sketchup.active_model.select_tool(nil)
          return
        end

        fn1 = faces.first.normal
        fn2 = faces.last.normal
        if !fn1.parallel?(fn2)
          vector = fn1 * fn2
          vector.samedirection?(edge.line[1]) == edge.reversed_in?(faces[0])
        end
      end
      # # #
    end
    unless defined?(@loaded)
      UI.menu('Plugins').add_item('Selected Edge Concave or Convex?') do
        Sketchup.active_model.select_tool(DevName::ToolName::Main.new)
      end
      @loaded = true
    end
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58097725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档