2013-08-18 32 views
2

當我嘗試渲染此代碼時,它只顯示梯形的最頂端平面。openscad差異多面體

我想從這個梯形中切出一個圓柱體,所以裏面有一個圓柱形的孔。我正在使用差異來做到這一點。我非常肯定,我已經繪製了梯形的權利。如果我從代碼中刪除「差異」,它呈現很好。如果我參加了梯形出來,氣缸呈現罰款(可怕的分辨率B/C我用小的數字。)

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); 
} 

回答

3

您的多面體實際上不是一個有效的對象。爲了測試目的,請嘗試編譯除多面體之外的任何東西。如果它無效,它不會顯示。我猜三角形順序是問題。

三角點排序 - 從外向內看臉時,點必須是順時針。您可以重新排列點的順序或每個三角形中引用的順序。三角形的順序並不重要。請注意,如果您的多邊形不是全部以與OpenSCAD相同的方式定向,則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 
+1

嗯,我確實編譯了多面體,從各個角度都看起來很好。所以這裏還有另外一個問題。它從維基上的外部說,但這甚至意味着什麼? z軸是否被考慮過?相對於多面體的中心而言,它是從外部來的嗎?三角形的中心?網格的中心開始? 。 I.e.你有兩個三角形A有點[0,0,0],[0,0,1]和[1,0,0] B有[1,1,0],[2,2,0] [1 ,1.5,0]你如何訂購每個三角形?首先適合哪一點? – user2208569