当我尝试渲染此代码时,它只显示梯形的最顶层。
我正试图从这个梯形中切出一个圆柱体,因此它上面有一个圆柱孔。我正在使用差异这样做。我很确定我画的梯形是正确的。如果我从代码中删除“差异”,它会呈现正常。如果我把梯形拿出来,圆柱体就会变好(在可怕的分辨率下,我使用的是小数字。)
笏
bottomx = 4;
bottomy = 5;
topx = 3;
topy = 5;
difference()
{
polyhedron (
points=[ [bottomx,bottomy,0],[bottomx,-bottomy,0],[-bottomx,-bottomy,0],[-bottomx,bottomy,0],
[topx,topy,5],[topx,-topy,5],[-topx,-topy,5],[-topx,topy,5] ],
triangles= [ [0,1,2],[2,3,0],
[4,5,0],[5,1,0],[5,6,1],[6,2,1],[6,7,2],[7,3,2],[7,4,3],[4,0,3],
[4,5,6],[6,7,4] ]
);
cylinder([2,2,2], center = true);
}
答案 0 :(得分:4)
您的多面体实际上不是有效对象。尝试使用多面体进行编译以进行测试。如果它无效,它将不会显示。我猜三角形顺序是问题所在。
三角点排序 - 从外向内看脸时,点必须是顺时针方向。您可以重新排列点的顺序或它们在每个三角形三元组中的引用顺序。三角形的顺序并不重要。请注意,如果您的多边形的方向不同,OpenSCAD会以相同的方式打印错误或完全崩溃,因此请注意顶点排序。同样,请记住,三角形向量的“pN”组件是对点向量元素的0索引引用。
另外,请仔细查看错误日志。
Rendering Polygon Mesh using CGAL...
CGAL error in CGAL_Build_PolySet: CGAL ERROR: assertion violation!
Expr: check_protocoll == 0
File: /usr/include/CGAL/Polyhedron_incremental_builder_3.h