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

这是我正在使用的代码,它为所有人返回相同的角度?
puts (sel[0].faces[0].normal.angle_between (sel[0].faces[1].normal)).radians发布于 2022-03-10 00:48:24
下面是一个代码示例,用于验证所选边缘是否为“凹”或“凸”。
如何使用:
Selected Edge Concave or Convex?
Plugins or Extension Menu -> 。
此外,请记住重新命名模块,以使其独特,以便您的红宝石脚本发挥与其他脚本在插件文件夹。
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
endhttps://stackoverflow.com/questions/58097725
复制相似问题