一種面向3D列印的簡單多邊形多層旋轉體生成方法及系統與流程
2023-06-07 00:34:16 2

本發明屬於3d列印領域,尤其涉及一種面向3d列印的簡單多邊形多層旋轉體生成方法及系統。
背景技術:
3d列印,又稱增材製造(additivemanufacturing,am),是一種以數字模型文件為基礎,採用材料逐層累加的方式製造實體的技術。3d列印在定製化幾何設計與處理上具有天然的優勢,在醫療、教育、娛樂、時尚等領域的應用越來越廣泛,對模型進行實例化製造也變得更加便捷,同時其優化問題也開始引起研究人員的注意。
為了節省列印材料以及列印時間,通常都會改變模型的內部填充結構,對模型進行形變或者在對其進行切割後分塊列印,以降低其對支撐結構的需求。所以我們希望生成的多層旋轉體能夠在較為壓縮的空間上進行列印,並且可以一體列印無需後期組裝。
簡單多邊形是一類常見的,由簡單閉折線所圍成的多邊形。對於任意的一個對稱的簡單多邊形,可以很容易的通過偏移的方式對它進行分層,產生一個三維多層旋轉體。這種方法雖然高效,但是同時也存在著一些局限性:(1)如果直接使用偏移的方法進行分層,那麼多邊形的形狀信息會隨著分層不斷的進行偏移而被破壞;(2)為了保留形狀信息,考慮直接使用縮放的方式來進行分層。在靜態的情況下,直接縮放可以滿足用戶的要求,而當每個分層繞軸進行旋轉運動時就可能發生層與層之間的碰撞,從而影響到整個結構旋轉的自由度。
綜上所述,現有的面向3d列印的簡單多邊形多層旋轉體生成方法可以做到分層,但是沒有考慮到旋轉時的碰撞問題。因此,亟需找到一種由任意的簡單多邊形生成三維旋轉體的方法,此旋轉體的每一層在旋轉時不會與其它層發生碰撞,並且此三維旋轉體可以在壓縮空間上一體列印無需後期組裝。
技術實現要素:
為了解決現有技術的不足,本發明提供了一種面向3d列印的簡單多邊形多層旋轉體生成方法,本發明的方法提出根據給定任意簡單多邊形生成多層旋轉體的方法,旋轉體各個層可以自由旋轉而不會發生碰撞。
本發明的一種面向3d列印的簡單多邊形多層旋轉體生成方法,包括:
步驟(1):初始化當前分層為相鄰外層,以當前分層中掃掠面多邊形面積最小為優化目標,查找當前分層中的最優對稱軸;
步驟(2):根據旋轉角度來優化當前分層的位置和縮放比例,得到當前分層的相連內層;
步驟(3):將得到的當前分層的相連內層作為外層,迭代執行步驟(1)-步驟(2),直到當前分層的面積小於一個定值,得到給定多邊形的所有分層;
步驟(4):將給定多邊形的所有分層的數據生成三維模塊,進而輸入至3d印表機而得到多層旋轉體。
進一步的,所述步驟(1)中查找當前分層中的最優對稱軸的具體過程為:
步驟(1-1):每個分層在繞對稱軸旋轉時,會產生一個掃掠面,其中,掃掠面多邊形是當前分層與其關於對稱軸的對稱多邊形的併集;
步驟(1-2):選取當前分層上兩個不同的點組成一個點對,每個點對則確定一條軸,遍歷所有點對找到一條對稱軸使得掃掠面多邊形面積最小。
這樣能夠通過計算其內部輪廓與內部輪廓所對應的旋轉軸,使之能夠在上層空間內自由旋轉而不發生碰撞。
進一步的,在所述步驟(1-1)中,當前分層在旋轉時是否會與相鄰外層進行碰撞取決於掃掠面多邊形與相鄰外層是否相交。
進一步的,在所述步驟(1-2)中,不同對稱軸產生不同的掃掠多邊形。
進一步的,所述步驟(2)中根據旋轉角度來優化當前分層的位置和縮放比例,得到當前分層的相連內層的具體過程為:
步驟(2-1):求掃掠面多邊形的最小有向包圍盒(orientedboundingbox,obb);
步驟(2-2):通過旋轉,平移和縮放變換找到相鄰外層內最大的矩形,此矩形的長寬比與步驟(2-1)中所求最小有向包圍盒的長寬比一致;
步驟(2-3):根據旋轉角度,位移和縮放係數計算變換矩陣;對當前分層應用變換矩陣。
這樣能夠使任一給定的多邊形能夠在上層空間內自由旋轉而不發生碰撞,同時面積最大。
進一步的,在所述步驟(4)中,將給定多邊形的所有分層的數據生成三維模塊的具體過程為:
步驟(4-1):根據每一層的輪廓線生成帶狀結構;
步驟(4-2):在帶狀結構上挖空圓柱生成t型結構,生成三維模型輸出stl格式的文件。
本發明還提供了一種面向3d列印的簡單多邊形多層旋轉體生成系統。
本發明的一種面向3d列印的簡單多邊形多層旋轉體生成系統,包括:
最優對稱軸查找單元,其用於初始化當前分層為相鄰外層,以當前分層中掃掠面多邊形面積最小為優化目標,查找當前分層中的最優對稱軸;
當前分層的相連內層獲取模塊,其用於根據旋轉角度來優化當前分層的位置和縮放比例,得到當前分層的相連內層;
給定多邊形的所有分層獲取模塊,其用於將得到的當前分層的相連內層作為外層,查找最優對稱軸並獲取當前分成的相連內層,直到當前分層的面積小於一個定值,得到給定多邊形的所有分層;
多層旋轉體生成模塊,其用於將給定多邊形的所有分層的數據生成三維模塊,進而輸入至3d印表機而得到多層旋轉體。
進一步的,所述最優對稱軸查找單元包括:
掃掠面產生模塊,其用於當每個分層在繞對稱軸旋轉時,會產生一個掃掠面,其中,掃掠面多邊形是當前分層與其關於對稱軸的對稱多邊形的併集;
對稱軸選取模塊,其用於選取當前分層上兩個不同的點組成一個點對,每個點對則確定一條軸,遍歷所有點對找到一條對稱軸使得掃掠面多邊形面積最小。
進一步的,所述當前分層的相連內層獲取模塊,其包括:
最小有向包圍盒求取模塊,其用於求掃掠面多邊形的最小有向包圍盒;
相鄰外層內最大矩形查找模塊,其用於通過旋轉,平移和縮放變換找到相鄰外層內最大的矩形,此矩形的長寬比與最小有向包圍盒的長寬比一致;
變換矩陣計算模塊,其用於根據旋轉角度,位移和縮放係數計算變換矩陣;對當前分層應用變換矩陣。
進一步的,所述多層旋轉體生成模塊包括:
帶狀結構生成模塊,其用於根據每一層的輪廓線生成帶狀結構;
三維模型輸出模塊,其用於在帶狀結構上挖空圓柱生成t型結構,生成三維模型輸出stl格式的文件。
與現有技術相比,本發明的有益效果是:
(1)本發明對於給定的簡單多邊形,計算其內部輪廓與內部輪廓所對應的旋轉軸,使之能夠在上層空間內自由旋轉而不發生碰撞,同時面積最大,經過迭代最終在多邊形內生成多層輪廓結構。
(2)本發明生成的模型,可以通過3d列印一次成型不需要後期組裝;
(3)本發明生成的模型,可以在壓縮的空間上進行列印,提高了3d列印的效率,降低了3d列印的成本。
附圖說明
構成本申請的一部分的說明書附圖用來提供對本申請的進一步理解,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。
圖1為本發明的面向3d列印的簡單多邊形多層旋轉體生成方法流程圖;
圖2(a)為對稱軸z1對應不同的掃掠面;
圖2(b)為對稱軸z2對應不同的掃掠面;
圖3為點對間的測地距離;
圖4(a)為在多邊形的邊界框內生成的隨機點備用;
圖4(b)為選擇中心點的過程;
圖4(c)為優化位置的結果;
圖5(a)為帶狀結構的示意圖;
圖5(b)為t型結構的示意圖;
圖6為生成與對稱軸垂直的線段過程;
圖7(a)為旋轉結構連接的兩層模型;
圖7(b)為旋轉結構連接的兩層模型的局部放大模型;
圖8是本發明面向3d列印的簡單多邊形多層旋轉體生成系統的結構示意圖;
圖9是最優對稱軸查找單元的結構示意圖;
圖10是當前分層的相連內層獲取模塊的結構示意圖;
圖11是多層旋轉體生成模塊的結構示意圖。
具體實施方式
應該指出,以下詳細說明都是例示性的,旨在對本申請提供進一步的說明。除非另有指明,本文使用的所有技術和科學術語具有與本申請所屬技術領域的普通技術人員通常理解的相同含義。
需要注意的是,這裡所使用的術語僅是為了描述具體實施方式,而非意圖限制根據本申請的示例性實施方式。如在這裡所使用的,除非上下文另外明確指出,否則單數形式也意圖包括複數形式,此外,還應當理解的是,當在本說明書中使用術語「包含」和/或「包括」時,其指明存在特徵、步驟、操作、器件、組件和/或它們的組合。
如圖1所示,本發明的面向3d列印的簡單多邊形多層旋轉體生成方法,包括:
步驟(1):初始化當前分層為相鄰外層,以當前分層中掃掠面多邊形面積最小為優化目標,查找當前分層中的最優對稱軸。
其中,初始化當前分層p1為相鄰外層p。每一層都是相似的簡單多邊形;
具體地,所述步驟(1)中查找當前分層中的最優對稱軸的具體過程為:
步驟(1-1):每個分層在繞對稱軸旋轉時,會產生一個掃掠面,相鄰分層在旋轉時是否會與分層p1進行碰撞取決於掃掠面多邊形q與分層p1是否相交。掃掠面多邊形q是當前分層p1關於旋轉軸z的對稱多邊形p1′與p1的併集;
步驟(1-2):找到一條對稱軸z使得掃掠面多邊形q的面積最小。p1周長為lp,選取p1上兩個不同的點組成一個點對,每個點對可以確定一條軸。如圖2中,不同軸的選擇會產生不同的掃掠多邊形q。遍歷所有的點對,可以找到一個面積最小的q。與此q對應的軸z即為所求。
其中,對於步驟(1-2),對點對進行篩選從而減少不必要的計算。通過約束點對間測地距離的範圍來對旋轉軸進行篩選,我們規定下界為上界為
如圖3所示,z3點對間的距離為g3,z4點對間的距離為g4,g3在範圍內保留,g4不在範圍內所以被剔除。
這樣能夠通過計算其內部輪廓與內部輪廓所對應的旋轉軸,使之能夠在上層空間內自由旋轉而不發生碰撞。
步驟(2):根據旋轉角度來優化當前分層的位置和縮放比例,得到當前分層的相連內層;
具體地,根據旋轉角度來優化當前分層的位置和縮放比例,得到當前分層的相連內層的具體包括以下步驟:
步驟(2-1):求掃掠面多邊形的最小有向包圍盒;在求得q和軸z之後,接下來就要在p中找到最大的q′,q′=k·o·q。k為縮放係數,o為位置信息。我們把問題「求多邊形p內最大多邊形q」簡化,首先求多邊形q的最小有向包圍盒r,然後求p中最大的r′=k·o·r。把問題轉化為:求多邊形p內最大r′。
求得q的最小有向包圍盒r,包圍盒長寬比為ratio,半長軸ry相對於水平面的夾角為α。接下來就要求多邊形p內最大r′;
步驟(2-2):通過旋轉,平移和縮放變換找到相鄰外層內最大的矩形r′,此矩形的長寬比與步驟(2-1)中所求包圍盒的長寬比一致。為了簡化計算,對輸入p進行一些預處理。需要對p上的點做一個簡化,減少點的個數進而減少計算量。如圖4(a),在多邊形的邊界框內生成100個隨機點備用。
首先選擇方向θ,設長寬比為ratio的測試矩形r2的長邊初始狀態為水平。旋轉角θ的範圍為[-90,90°]。每次計算偏轉1°。
如圖4(b),選擇中心點c。在預處理部分,我們在p的內部隨機生成了100個點。依次選取每個點作為矩形r2的中心點。過當前中心點引兩條相互垂直的線段lx,ly。其中矩形長邊ly與水平線的夾角為當前的旋轉角度θ。在lx,ly上各自均勻地取3個補償點作為中心點進行檢測,補償點可能會產生更好的效果。計算ly與p輪廓的交點a,b。然後取中心點到a,b兩個交點中距離較小的值dy。那麼2dy就是當前中心點和旋轉角度上最大可能的長度。在ly上的補償點c1,c2,c3與中心點使用同樣的方式計算。同理,lx上的補償點使用寬度來計算和表示。
如圖4(c),給定z,c,找到最大長度dmax,同時滿足矩形位於多邊形內。記錄當前求得的最大長度的一半為dmax,當前中心點或者其補償點作為矩形的中心。首先判斷當前中心點及其補償點的dx是否小於當前求得的最大長度dmax,如果當前點的dx大於dmax,判斷當前寬度為長度為2dy,中心點為c(或者c1,c2,c3)的矩形是否在p的內部,如果是則更新dmax;否則縮小dy再次判斷,直到dy縮小到dmax,或者當前矩形在p的內部。經過12次迭代,算法最終找到一個旋轉角度為θ,中心為c,寬度為2dmax的矩形。求得位置o;
步驟(2-3):在步驟(2-2)為了計算方便,統一從長軸水平角度為0°開始,而r是存在初始角度α的。真實的旋轉角度應為旋轉角度θ-α。得到位置o,旋轉角度θ-α和縮放係數k之後計算出變換矩陣,對當前分層p1應用變換矩陣。
步驟(3):將得到的當前分層的相連內層作為外層,迭代執行步驟(1)-步驟(2),直到當前分層的面積小於一個定值,得到給定多邊形的所有分層。
步驟(4):將給定多邊形的所有分層的數據生成三維模塊,進而輸入至3d印表機而得到多層旋轉體。
該步驟的具體包括以下步驟:
步驟(4-1):讀入並處理輸入數據。
如圖6,對於每一層輪廓對應的求出外圈與li-1,li的交點以及內圈與li-1,li的交點按上述生成垂直的線段的過程處理和使得在處的線段與旋轉軸垂直。
步驟(4-2):根據處理之後的數據生成三維模型。
首先生成如圖5(a)的帶狀模型。根據更新之後的每一層的輪廓對應的內外圈的點以及模型的高度可以確定一個第i層的帶狀模型。然後挖空圓柱,如圖7(a),對於最外層,根據構造一個帶狀型;對於最裡層,根據構造帶狀模型;對於倒數第二層,根據構造一個帶狀模型並挖掉對應的四個圓柱;對於其他層,根據構造一個帶狀模型並挖掉對應的兩個圓柱垂直。如圖7(a),生成如圖5(b)的t型結構。對於除最內層之外的其他層,根據構造兩個t型結構。對於最內層根據構造兩個t型結構。
最後:返回生成的三維模型並列印得到三維多層旋轉體。
圖8是本發明的面向3d列印的簡單多邊形多層旋轉體生成系統的結構示意圖。
如圖8所示,本發明的一種面向3d列印的簡單多邊形多層旋轉體生成系統,包括:
(1)最優對稱軸查找單元,其用於初始化當前分層為相鄰外層,以當前分層中掃掠面多邊形面積最小為優化目標,查找當前分層中的最優對稱軸。
其中,如圖9所示,所述最優對稱軸查找單元包括:
掃掠面產生模塊,其用於當每個分層在繞對稱軸旋轉時,會產生一個掃掠面,其中,掃掠面多邊形是當前分層與其關於對稱軸的對稱多邊形的併集;
對稱軸選取模塊,其用於選取當前分層上兩個不同的點組成一個點對,每個點對則確定一條軸,遍歷所有點對找到一條對稱軸使得掃掠面多邊形面積最小。
(2)當前分層的相連內層獲取模塊,其用於根據旋轉角度來優化當前分層的位置和縮放比例,得到當前分層的相連內層。
其中,如圖10所示,所述當前分層的相連內層獲取模塊,包括:
最小有向包圍盒求取模塊,其用於求掃掠面多邊形的最小有向包圍盒;
相鄰外層內最大矩形查找模塊,其用於通過旋轉,平移和縮放變換找到相鄰外層內最大的矩形,此矩形的長寬比與最小有向包圍盒的長寬比一致;
變換矩陣計算模塊,其用於根據旋轉角度,位移和縮放係數計算變換矩陣;對當前分層應用變換矩陣。
(3)給定多邊形的所有分層獲取模塊,其用於將得到的當前分層的相連內層作為外層,查找最優對稱軸並獲取當前分層的相連內層,直到當前分層的面積小於一個定值,得到給定多邊形的所有分層。
(4)多層旋轉體生成模塊,其用於將給定多邊形的所有分層的數據生成三維模塊,進而輸入至3d印表機而得到多層旋轉體。
其中,如圖11所示,所述多層旋轉體生成模塊包括:
帶狀結構生成模塊,其用於根據每一層的輪廓線生成帶狀結構;
三維模型輸出模塊,其用於在帶狀結構上挖空圓柱生成t型結構,生成三維模型輸出stl格式的文件。
本發明對於給定的簡單多邊形,計算其內部輪廓與內部輪廓所對應的旋轉軸,使之能夠在上層空間內自由旋轉而不發生碰撞,同時面積最大,經過迭代最終在多邊形內生成多層輪廓結構。
本發明生成的模型,可以通過3d列印一次成型不需要後期組裝;
本發明生成的模型,可以在壓縮的空間上進行列印,提高了3d列印的效率,降低了3d列印的成本。
上述雖然結合附圖對本發明的具體實施方式進行了描述,但並非對本發明保護範圍的限制,所屬領域技術人員應該明白,在本發明的技術方案的基礎上,本領域技術人員不需要付出創造性勞動即可做出的各種修改或變形仍在本發明的保護範圍以內。