首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移除多边形的一部分会使整个物体不呈现。

移除多边形的一部分会使整个物体不呈现。
EN

Stack Overflow用户
提问于 2015-07-26 20:44:17
回答 2查看 594关注 0票数 3

所以,我做一个棱镜:

代码语言:javascript
复制
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]
        ]
    );

它呈现的很好:

然后,我移除其中的一大块:

代码语言:javascript
复制
difference () {
    <THAT PRISM>
    translate([0,0,thickness-5]) cylinder(r=width-10, h=6);
    }

我得到的不是一个带圆形块的棱镜,而是一个不完全的多边形:

怎么回事?我的差异陈述有什么不对?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-26 23:01:27

你的脸定位错误,见文档。从外部看时,点的顺序必须是顺时针的。在这里,正确的面孔:

代码语言:javascript
复制
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
    ]

编辑27.07.2015:

对于您的脸,控制台中应该有如下输出:

代码语言:javascript
复制
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.

“简单:不”和警告是暗示,你的多面体是无效的。如果对象是有效的,它将是“简单:是”,没有任何警告。

票数 1
EN

Stack Overflow用户

发布于 2020-09-23 15:43:17

如果你的多边形不是太复杂,你有时可以包在“船体”,以确保它是“固体”。

保留代码,调整圆柱体的样式和位置,在“船体”中包装多边形,我们得到:

代码语言:javascript
复制
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);
}

它呈现和预览如下:

OpenSCAD手动船体

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31641753

复制
相关文章

相似问题

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