一種用于3d打印中cli文件錯誤檢查的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于3D打印技術(shù)領(lǐng)域,涉及一種用于3D打印中CLI文件錯誤檢查的方法。
【背景技術(shù)】
[0002]3D 打印(3D Printing)也稱增材制造(Additive Manufacturing,AM),這種技術(shù)采用離散堆積的工藝原理,利用逐層打印的方法得到三維實體。它的基本原理是:在某一方向上(通常選Z軸方向),用足夠多的切片去切三維模型,那么在每一層上就得到切片與模型相交的所有輪廓信息,利用輪廓彼此的包含關(guān)系判斷出要打印的部分,再通過對打印材料的逐層堆積粘結(jié),最終打印出想要打印的三維實體。直接用于3D打印的格式文件一般是CLI文件,它是將STL文件進行切片后得到的輪廓信息和要填充的信息的記錄。結(jié)合圖2,CLI文件包含了打印坐標(biāo)單位、分層層數(shù)、分層高度、輪廓信息、填充信息等,其中輪廓信息依次記錄了輪廓所屬的模型、輪廓的方向和圍成輪廓的頂點信息,其中輪廓頂點的順序滿足內(nèi)輪廓順時針、外輪廓逆時針的關(guān)系。
[0003]復(fù)雜模型的3D打印問題一直是一個耗時耗力的問題,宄其原因主要是如何生成一個準(zhǔn)確無誤的CLI打印文件。目前,針對3D打印的CLI文件的錯誤檢查方面的研宄都只是局限在一部分錯誤的檢查,不能全面的準(zhǔn)確的檢查出CLI文件的錯誤。本發(fā)明針對現(xiàn)有的CLI文件的錯誤統(tǒng)計數(shù)據(jù)得出,CLI文件的錯誤是由冗余的頂點、切片輪廓退化、不封閉的輪廓、輪廓自相交、輪廓互交、輪廓方向錯誤這六大類錯誤組成的。
[0004]為了能夠準(zhǔn)確的全面的檢查出CLI文件的錯誤,本發(fā)明提出了一種用于3D打印中CLI文件錯誤檢查的方法。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的目的在于提供一種用于3D打印中CLI文件錯誤檢查的方法,該方法可以全面、準(zhǔn)確的檢查3D打印的CLI文件中存在的錯誤等問題。
[0006]為達到上述目的,本發(fā)明提供如下技術(shù)方案:
[0007]一種用于3D打印中CLI文件錯誤檢查的方法,包括以下步驟:
[0008]I)判斷所需進行3D打印的CLI文件是否滿足CLI文件的格式要求,若不滿足,則無法對其進行錯誤檢查;2)檢查CLI文件,判斷其是否含有冗余頂點這類錯誤;3)檢查CLI文件,判斷其是否含有切片輪廓退化這類錯誤;4)檢查CLI文件,判斷其是否含有輪廓不封閉這類錯誤;5)檢查CLI文件,判斷其是否含有輪廓自相交這類錯誤;6)檢查CLI文件,判斷其是否含有輪廓互交這類錯誤;7)檢查CLI文件,判斷其是否含有輪廓方向錯誤這類錯誤;8)統(tǒng)計CLI文件中各類錯誤的數(shù)目。
[0009]進一步,步驟I)中,所述的CLI文件格式要求切片的高度按遞增順序排列且切片的輪廓點的z坐標(biāo)值與切片高度相等。
[0010]進一步,步驟2)中,所述的檢查CLI文件,判斷其是否含有冗余頂點這類錯誤具體為:引入一閾值,依次讀取CLI文件頂點,判斷其與相鄰頂點的差值的絕對值是否在閾值內(nèi),如果在,則判斷該兩點重合,為冗余頂點,并對該錯誤進行記錄。
[0011 ] 進一步,步驟3)中,所述的檢查CLI文件,判斷其是否含有切片輪廓退化這類錯誤具體為:遍歷所有切片和切片上的所有輪廓,若發(fā)現(xiàn)有的切片上沒有輪廓信息或切片上有的輪廓有且僅有一個點,則判定此切片為輪廓退化的切片,并記錄下輪廓退化的切片所在的位置。
[0012]進一步,步驟4)中,所述的檢查CLI文件,判斷其是否含有輪廓不封閉這類錯誤具體為:遍歷所有切片和切片上的所有輪廓,如果有輪廓的第一個頂點不與它的最后一個頂點重合,則此輪廓為不封閉的輪廓,并記錄下不封閉的輪廓所在的位置。
[0013]進一步,步驟5)中,所述的檢查CLI文件,判斷其是否含有輪廓自相交這類錯誤具體為:遍歷所有切片和切片上的所有輪廓,對任一輪廓,從其第一條線段開始,判斷這條線段是否與此線段之后的其它線段相交,如果相交,則記錄下交線信息,判斷完后轉(zhuǎn)到第二條線段,重復(fù)上面的判斷,直到處理完輪廓上的所有線段,若此時記錄下的交線信息為空,則這個輪廓沒有自相交,否則這個輪廓是自相交的輪廓,若發(fā)現(xiàn)自交的輪廓存在,則記錄下此輪廓的位置和交線的位置。
[0014]進一步,步驟6)中,所述的檢查CLI文件,判斷其是否含有輪廓互交這類錯誤具體為:遍歷所有切片和切片上的所有輪廓,判斷任一輪廓是否與所在切片上的其他輪廓相交,如果相交,記錄下所有的互交的輪廓的位置和交線信息。
[0015]進一步,其中判斷兩輪廓是否相交采用如下的方法:找到圍成這兩輪廓的兩矩形盒,即每個輪廓中頂點X、y坐標(biāo)的最大、最小值,首先判斷圍成這兩輪廓的矩形盒是否相交,如果矩形盒相交,再判斷兩輪廓是否相交,否則,這兩輪廓一定不相交;對于矩形盒相交的兩輪廓,遍歷其中一個輪廓所有線段,判斷其線段與另一輪廓所有線段是否相交,如果相交,則這兩個輪廓是互交的,并記錄下此輪廓的位置和交線的位置。
[0016]進一步,步驟7)中,所述的輪廓的方向錯誤有兩種形式:
[0017](I)CLI文件中輪廓特征值記錄的方向與輪廓中頂點的順序所表示的方向相反;其中,CLI文件中的特征值記錄了每個輪廓的方向,O為順時針方向、I為逆時針向;輪廓頂點的順序表示的方向則通過找到輪廓頂點中X坐標(biāo)值最小的頂點,它與相鄰的上一個頂點組成的線段的斜率大于他與相鄰的下一個頂點組成線段的斜率,則該輪廓頂點的順序表示方向為逆時針方向,反之則為順時針方向;比較兩個方向是否一致,不一致則有誤,記錄下它的位置;
[0018](2)CLI文件中頂點的順序所表示的方向有誤,不滿足內(nèi)外輪廓的順逆時針關(guān)系;即CLI文件中內(nèi)輪廓上的頂點按順時針方向排列,外輪廓上的頂點按逆時針的方向排列;進一步,判斷一個輪廓的內(nèi)外性,首先要找到切片上所有圍成輪廓的矩形盒,然后判斷圍成此輪廓的矩形盒與切片上其他圍成輪廓的矩形盒的包含關(guān)系,找出矩形盒包含此輪廓的其他輪廓,然后,采用傳統(tǒng)的射線法考慮這些輪廓:給定此輪廓上的一點,由它出發(fā)引一條射線,看射線與這些輪廓相交的交點個數(shù),如果交點個數(shù)為奇數(shù)個,那么此輪廓為內(nèi)輪廓,反之,為外輪廓;判斷輪廓的方向與頂點順序所表示的方向是否一致,不一致則有誤,記錄下它的位置。
[0019]本發(fā)明的有益效果在于:本發(fā)明所述的方法,通過對冗余的頂點、切片輪廓退化、不封閉的輪廓、輪廓自相交、輪廓互交、輪廓方向錯誤這六大類錯誤的逐一檢查,能夠全面、準(zhǔn)確的查找出CLI文件的錯誤數(shù)目,并指出錯誤所在位置,能夠縮短3D模型從圖像到實物轉(zhuǎn)換的時間,提高工作效率。
【附圖說明】
[0020]為了使本發(fā)明的目的、技術(shù)方案和有益效果更加清楚,本發(fā)明提供如下附圖進行說明:
[0021]圖1為本發(fā)明所述方法的流程示意圖;
[0022]圖2為CLI文件的ASCII碼格式;
[0023]圖3為3D打印人頭像的STL文件檢錯;
[0024]圖4為人頭像模型分層后所得切片;
[0025]圖5為人頭像CLI文件檢錯;
[0026]圖6為人頭CLI文件部分錯誤顯示。
【具體實施方式】
[0027]下面將結(jié)合附圖,對本發(fā)明的優(yōu)選實施例進行詳細的描述。
[0028]本發(fā)明所提供的一種用于3D打印中CLI文件錯誤檢查的方法,如圖1所示,該方法具體包括以下步驟:
[0029]步驟一、判斷所需進行3D打印的CLI文件是否滿足CLI文件的格式要求,若不滿足,則無法對其進行錯誤檢查;
[0030]步驟二、檢查CLI文件,判斷其是否含有冗余頂點這類錯誤;
[0031]步驟三、檢查CLI文件,判斷其是否含有切片輪廓退化這類錯誤;
[0032]步驟四、檢查CLI文件,判斷其是否含有輪廓不封閉這類錯誤;
[0033]步驟五、檢查CLI文件,判斷其是否含有輪廓自相交這類錯誤;
[0034]步驟六、檢查CLI文件,判斷其是否含有輪廓互交這類錯誤;
[0035]步驟七、檢查CLI文件,判斷其是否含有輪廓方向錯誤這類錯誤;
[0036]步驟八、統(tǒng)計CLI文件中各類錯誤的數(shù)目。
[0037]所述步驟一中的CLI文件格式要求切片的高度按遞增順序排列且切片的輪廓點的z坐標(biāo)值與切片高度相等。
[0038]所述步驟二中的檢查CLI文件,判斷其是否含有冗余頂點這類錯誤具體為:引入一閾值,依次讀取CL I文件頂點,判斷其與相鄰頂點的差值的絕對值是否在閾值內(nèi),如果在,則判斷該兩點重合,為冗余頂點,并對該錯誤進行記錄。
[0039]所述步驟三中的檢查CLI文件,判斷其是否含有切片輪廓退化這類錯誤具體為:遍歷所有切片和切片上的所有輪廓,若發(fā)現(xiàn)有的切片上沒有輪廓信息或切片上有的輪廓有且僅有一個點,則判定此切片為輪廓退化的切片,并記錄下輪廓退化的切片所在的位置。
[0040]所述步驟四中的檢查CLI文件,判斷其是否含有輪廓不封閉這類錯誤具體為:遍歷所有切片和切片上的所有輪廓,如果有輪廓的第一個頂點不與它的最后一個頂點重合,則此輪廓為不封閉的輪廓,并記錄下不封閉的輪廓所在的位置。
[0041]所述步驟五中的檢查CLI文件,判斷其是否含有輪廓自相交這類錯誤具體