删除SketchUp中的非水平组件

时间:2014-01-30 01:02:26

标签: ruby sketchup

我正在尝试使用SketchUp Ruby API从导入的STL文件中删除垂直元素。

我已经改编了一个代码片段来提供以下代码,用于选择非水平面。

s=Sketchup.active_model.selection;
a=s.to_a;
s.clear;
a.grep(Sketchup::Face).each{ |f| s.add( f )if f.normal.z > -0.1 and f.normal.z < 0.1}

然后我尝试使用这个来选择非水平边缘,使用任何这样的边将有一个顶点,其中z位置与另一个不同。

s=Sketchup.active_model.selection;
a=s.to_a;
s.clear;
a.grep( Sketchup::Edge ).each {
    |edge| s.add(edge) if (edge.end.position.z - edge.other_vertex(edge.end).position.z)}

然而,这是选择模型中的所有边。谁能指出我哪里出错?

1 个答案:

答案 0 :(得分:0)

最后,我写了下面的函数,而不是尝试写一行代码。

def find_plans()
    model = Sketchup.active_model()
    s = model.selection()
    s.clear()

    ents = model.entities
    non_horizontal_edges = []
    for e in ents
        non_horizontal_edges.push( e ) if e.typename() == 'Edge' and (e.end.position.z - e.other_vertex(e.end).position.z).abs > 1
    end
    ents.erase_entities( non_horizontal_edges )
end