删除多边形的一部分会使整个事物不呈现
removing a part of a polygon makes the entire thing not render
所以,我做了一个棱镜:
width=30
thickness=15
polyhedron(
points=[
[width,0,0],[width,0,thickness],
[width,width,0],[width,width,thickness],
[0,width,0],[0,width,thickness]
],
faces=[
[1,3,5], [0,2,4],[1,0,2,3],[3,5,4,2],[1,5,4,0]
]
);
渲染得很好:
然后,我删除了其中的一大块:
difference () {
<THAT PRISM>
translate([0,0,thickness-5]) cylinder(r=width-10, h=6);
}
我得到的是一个不完整的多边形,而不是从其中取出圆形块的棱镜:
那是怎么回事?我对差异声明做错了什么?
您的面孔方向错误,参见 documentation。从外面看时,点的顺序必须是顺时针的。正确面孔如下:
faces=[
//[1,3,5], [0,2,4],[1,0,2,3],[3,5,4,2],[1,5,4,0]
[1,5,3],[0,2,4],[0,1,3,2],[3,5,4,2],[0,4,5,1]
// edit 27.07.2015 order of faces changed
]
编辑 2015 年 7 月 27 日:
有了你的脸,控制台中应该有这样的输出:
Top level object is a 3D object:
Simple: no
Vertices: 15
Halfedges: 30
Edges: 15
Halffacets: 4
Facets: 2
Volumes: 1
WARNING: Object may not be a valid 2-manifold and may need repair!
Rendering finished.
"Simple: no" 和警告是提示,您的多面体无效。如果对象有效,它将 "Simple: yes" 没有任何警告。
如果您的多边形不太复杂,您有时可以将其包裹在“外壳”中以确保它是“实体”。
保留您的代码,调整圆柱体的样式和位置并将多边形包裹在“外壳”中,我们得到:
width = 30;
thickness = 15;
difference() {
hull() {
polyhedron (
points = [
[width, 0, 0], [width, 0, thickness],
[width, width, 0], [width, width, thickness],
[0, width, 0], [0, width, thickness]
],
faces = [
[1,3,5], [0, 2, 4],
[1, 0, 2, 3], [3, 5, 4, 2], [1, 5, 4, 0]
]
);
}
translate([0, 0, thickness - 5]) cylinder(r = width, h = 6);
}
渲染和预览为:
所以,我做了一个棱镜:
width=30
thickness=15
polyhedron(
points=[
[width,0,0],[width,0,thickness],
[width,width,0],[width,width,thickness],
[0,width,0],[0,width,thickness]
],
faces=[
[1,3,5], [0,2,4],[1,0,2,3],[3,5,4,2],[1,5,4,0]
]
);
渲染得很好:
然后,我删除了其中的一大块:
difference () {
<THAT PRISM>
translate([0,0,thickness-5]) cylinder(r=width-10, h=6);
}
我得到的是一个不完整的多边形,而不是从其中取出圆形块的棱镜:
您的面孔方向错误,参见 documentation。从外面看时,点的顺序必须是顺时针的。正确面孔如下:
faces=[
//[1,3,5], [0,2,4],[1,0,2,3],[3,5,4,2],[1,5,4,0]
[1,5,3],[0,2,4],[0,1,3,2],[3,5,4,2],[0,4,5,1]
// edit 27.07.2015 order of faces changed
]
编辑 2015 年 7 月 27 日:
有了你的脸,控制台中应该有这样的输出:
Top level object is a 3D object:
Simple: no
Vertices: 15
Halfedges: 30
Edges: 15
Halffacets: 4
Facets: 2
Volumes: 1
WARNING: Object may not be a valid 2-manifold and may need repair!
Rendering finished.
"Simple: no" 和警告是提示,您的多面体无效。如果对象有效,它将 "Simple: yes" 没有任何警告。
如果您的多边形不太复杂,您有时可以将其包裹在“外壳”中以确保它是“实体”。
保留您的代码,调整圆柱体的样式和位置并将多边形包裹在“外壳”中,我们得到:
width = 30;
thickness = 15;
difference() {
hull() {
polyhedron (
points = [
[width, 0, 0], [width, 0, thickness],
[width, width, 0], [width, width, thickness],
[0, width, 0], [0, width, thickness]
],
faces = [
[1,3,5], [0, 2, 4],
[1, 0, 2, 3], [3, 5, 4, 2], [1, 5, 4, 0]
]
);
}
translate([0, 0, thickness - 5]) cylinder(r = width, h = 6);
}
渲染和预览为: