張春雨,張碧濤,陳賢帥
(1.佛山市逸合生物科技有限公司,佛山 528200;2.廣州市健齒生物科技有限公司,廣州 511458)
盡管三維設(shè)計軟件已普及,但工程圖紙仍然是大部分企業(yè)表達設(shè)計思想、加工零件尺寸、檢驗產(chǎn)品及技術(shù)交流不可缺少的技術(shù)資料[1]。計算機輔助設(shè)計(CAD)已逐步深入到設(shè)計生產(chǎn)細節(jié)中。
本文主要涉及的是骨科植入物的設(shè)計系統(tǒng)開發(fā),骨科植入物系統(tǒng)不同參數(shù)下的組合形式多樣,醫(yī)生針對不同的患者又會有自己不同的設(shè)計要求,因此,開發(fā)一款具備立體化和可視化且專門針對下頜骨內(nèi)固定系統(tǒng)設(shè)計領(lǐng)域的三維設(shè)計平臺,不僅可以方便醫(yī)生對患者下頜骨內(nèi)固定系統(tǒng)的快速設(shè)計,也可以提高該領(lǐng)域的設(shè)計質(zhì)量。SolidWorks作為一款操作方便實用性強的三維設(shè)計軟件在內(nèi)固定系統(tǒng)的設(shè)計上可以得到很好的應(yīng)用,基于SolidWorks二次開發(fā)對內(nèi)固定系統(tǒng)的參數(shù)化設(shè)計可以極大地提高醫(yī)生的工作效率和保證植入物系統(tǒng)的質(zhì)量,也為未來更加智能化的醫(yī)工結(jié)合的人機交互系統(tǒng)打下堅實基礎(chǔ)[2]。
通過API調(diào)用SolidWorks的各種功能[3],包括草繪、特征、運動、工程分析等功能模塊的開發(fā)。本文是基于VB.NET環(huán)境下的SolidWorks 2018二次開發(fā),對患者骨骼進行植入物的個性化設(shè)計[4],然后完成內(nèi)固定系統(tǒng)裝配并最終實現(xiàn)內(nèi)固定系統(tǒng)有限元仿真優(yōu)化的過程。該系統(tǒng)包括4個主要模塊:建模與裝配模塊、工程分析模塊、結(jié)果輸出模塊和參數(shù)化命令流模塊。設(shè)計流程如圖1所示。

圖1 植入物設(shè)計二次開發(fā)流程
首先,軟件要求的文件格式為STL,如不是,則需要借助相關(guān)醫(yī)學(xué)軟件,將原始格式的患者手術(shù)部位骨骼以及相關(guān)骨骼素材導(dǎo)入相關(guān)醫(yī)學(xué)軟件處理后,以STL的文件格式輸出。
進入軟件設(shè)計界面,可將處理好的STL的文件直接導(dǎo)入到SolidWorks自動進行實體轉(zhuǎn)化,并轉(zhuǎn)成SLDPRT的格式重新命名。
進入到軟件設(shè)計界面的建模模塊,在個性化植入物建模方面,根據(jù)提示指令,借助Solid-Works操作界面選取繪制接骨板輪廓的視角和繪制接骨板輪廓,快速自動地生成與骨面相貼合的接骨板,在接骨板表面拾取點生成一定規(guī)格的螺孔,調(diào)用SolidWorks布爾運算功能生成一定規(guī)格的螺釘;在多孔結(jié)構(gòu)建模方面,通過多孔結(jié)構(gòu)參數(shù)的設(shè)置或者調(diào)用數(shù)據(jù)庫中的多孔結(jié)構(gòu)模型直接應(yīng)用于實體模型上,實現(xiàn)實體對應(yīng)位置的多孔結(jié)構(gòu)處理;在調(diào)用零件庫方面,將已設(shè)計的不同類型的解剖型接骨板事先儲存于零件庫,并通過界面對零件實現(xiàn)調(diào)用。
在植入物系統(tǒng)裝配模塊中,通過調(diào)用Solid-Works插入零件功能,插入匹配式植入物以及相對應(yīng)的螺釘?shù)攘慵⒆赃m應(yīng)完成植入物系統(tǒng)的裝配。完成裝配后,可以通過參數(shù)化設(shè)計對植入物系統(tǒng)的部分尺寸進行修改并更新模型[5-6]。
下一步進入工程分析模塊,對裝配好的模型選擇分析類型進行分析,常用的有靜應(yīng)力分析、疲勞分析和拓?fù)渌憷?-9]。以靜應(yīng)力分析為例,使用靜應(yīng)力分析模塊功能對裝配模型的各部件分別賦予材料屬性[10],對裝配模型完成約束設(shè)置、載荷設(shè)置,最后設(shè)置好網(wǎng)格密度生成網(wǎng)格并求解。
求解完成后,可以選擇感興趣的工程分析結(jié)果查看,并評估工程分析結(jié)果,若結(jié)果滿足要求,則可以保存結(jié)果并導(dǎo)出3D打印所需格式的文件。若結(jié)果不合格,則需通過參數(shù)化設(shè)計重新對模型進行參數(shù)化建模或重新對植入物系統(tǒng)進行參數(shù)化工程分析設(shè)置,參數(shù)化設(shè)計主要對模型參數(shù)進行修改,如輪廓曲線、接骨板板厚、螺釘位置及其規(guī)格等參數(shù),對工程分析參數(shù)進行設(shè)置,如材料設(shè)、約束、載荷和網(wǎng)格等設(shè)置,并再次求解和參看分析結(jié)果,循環(huán)往復(fù),直至所得的工程分析結(jié)果合格為止。
通過設(shè)計界面操作SolidWorks對象,首先需添加引用“SolidWorks2018 Type Library”,植入物設(shè)計應(yīng)用程序通過API可以對SolidWorks進行跨進程的調(diào)用并訪問SolidWorks的各種功能。相關(guān)的實現(xiàn)代碼如下:
Swapp=CreateObject("Sldworks.application")
Part=Swapp.ActiveDoc
Sketchmer=Part.SketchManager
Featmgr=Part.FeatureManager
如圖2所示,建模與裝配模塊主要分為單段植入物、多段植入物模式,以多段植入物模式為例[11],設(shè)計步驟依次為匹配式植入物建模和骨骼模型個性化處理、螺釘布爾生產(chǎn)、植入物系統(tǒng)的裝配。

圖2 建模與裝配界面
如圖3所示,本界面主要建立了6類常用的多孔結(jié)構(gòu)模型,并可以根據(jù)微孔結(jié)構(gòu)各參數(shù)設(shè)置自動匹配孔隙率[12]。使用SolidWorks對多孔單元結(jié)構(gòu)進行陣列的建模方式,這里以立方體微孔結(jié)構(gòu)為實例,部分實現(xiàn)代碼如下:

圖3 多孔結(jié)構(gòu)設(shè)計界面
b=Text Box2.Text 'b是設(shè)置的單元邊長
x=Text Box5.Text '陣列參數(shù)x
y=Text Box6.Text '陣列參數(shù)y
z=TextBox7.Text '陣列參數(shù)z
For K=1 To x*y-1
Part.Extension.SelectByID2("陣列(線性)1["+K.To-String()+"]","SOLIDBODY",0,0,0,True,256,Nothing,0)
Next
P=P+1
For K=1 To x*y*z-x*y
Part.Extension.SelectByID2("陣列(線性)"+P.To-String()+"["+K.ToString()+"]","SOLIDBODY",0,0,0,True,256,Nothing,0)
Next
Part.FeatureManager.InsertScale(1,True,b/2,b/2,b/2)
通過SolidWorks2018的特征組合功能對實體進行多孔結(jié)構(gòu)處理,代碼如下:
Part.InsertPart2("D:porous model-1.SLDPRT",285)
Part.Extension.SelectByID2("porous model-1","SOLIDBODY",0,0,0,False,1,Nothing,0)
Part.Extension.SelectByID2("Implant-1","SOLIDBODY",0,0,0,True,2,Nothing,0)'特征組合運算將多孔結(jié)構(gòu)添加于模型上
Part.FeatureManager.InsertCombineFeature(15902,Nothing,Nothing)
通過SolidWorks二次開發(fā)下特征組合運算生成的多孔結(jié)構(gòu)植入物為實體模型,并不會出現(xiàn)面缺陷的問題,而常用的多孔結(jié)構(gòu)處理軟件需要對面缺陷做大量的修復(fù)工作,因此本設(shè)計界面極大節(jié)省了零件的設(shè)計時間。
植入物檔案管理系統(tǒng)包括3個模塊,分別為植入物檔案查詢、植入物檔案新增、植入物檔案修改。如圖4所示,根據(jù)平臺的設(shè)計,可通過文件導(dǎo)入或產(chǎn)品編號進行檢索,并顯示該植入物的正折彎角、側(cè)折彎角、外圓徑、內(nèi)孔徑、板厚、板寬、工作長度、釘孔間距等參數(shù)。植入物管理系統(tǒng)界面還包括了查詢、新增、修改、刪除4個按鈕,以便對植入物檔案進行操作[13-14]。
設(shè)計者通過評價所查詢的植入物與導(dǎo)入病例骨骼固定處的匹配度,選取匹配度較高的植入物或?qū)χ踩胛镞M一步修改參數(shù),完成修改后,相對應(yīng)修改的參數(shù)信息會自動填寫到數(shù)據(jù)庫里。為了便于植入物檔案管理,在數(shù)據(jù)庫設(shè)置一目錄頁以植入物歸類的形式全部羅列出來,并自動更新數(shù)據(jù)庫中新增、修改和刪除的植入物檔案信息。
其中,圖4參數(shù)中的正、側(cè)折彎角通常需要在一個或多個點位進行設(shè)置,當(dāng)該界面中導(dǎo)入不同類型的零件時,該界面也會自動生產(chǎn)一組對應(yīng)的參數(shù)類別。

圖4 植入物檔案管理界面
根據(jù)植入物設(shè)計的需求,本界面只對較常用的靜應(yīng)力分析、疲勞分析和拓?fù)渌憷?個分析類型進行了開發(fā)。工程分析模塊通過SolidWorks的Simulation插件實現(xiàn)的,首先調(diào)用動態(tài)鏈接Solid-Works.Interop.cosworks.dll,在SolidWorks的項目欄添加引用“SolidWorks.Interop.cosworks.dll”。
如圖5所示,這里以靜力學(xué)分析為例,實現(xiàn)工程分析模塊調(diào)用和前處理的部分解釋和代碼如下:
Dim CWAddinCallBackObj As Object
CWAddinCallBackObj=Swapp.GetAddInObject("CosmosWorks.CosmosWorks")'調(diào)用工程分析模塊
ErrorCodeObj=SolidManagerObj.SetLibraryMaterialToSelectedEntities("SolidWorks materials","商用純鈦(Ti-55)
UNS R50550*")'材料設(shè)置實例
Dim LoadsAndRestraintsManagerObj As CWLoads AndRestr-aintsManager'調(diào)用約束載荷設(shè)置功能
Dim MeshObj As Object
MeshObj=StudyObj.Mesh()'調(diào)用網(wǎng)格設(shè)置功能
圖5是一例植入物系統(tǒng)從匹配式建模、裝配再到完成工程分析,并最后得出分析結(jié)果的界面圖。
在Simulation模塊中,靜應(yīng)力分析中的完成約束設(shè)置具有固定幾何體、固定鉸鏈、彈性支撐等功能,其中,固定幾何體可用于固定植入物系統(tǒng)或骨骼,彈性支撐可以通過設(shè)置其法向剛度大小,以模擬咬肌、翼內(nèi)肌、顳肌等肌肉力的約束載荷。疲勞分析處的應(yīng)用材料屬性需提供具有S-N曲線的材料屬性,疲勞分析和拓?fù)鋬?yōu)化均需要通過算例相關(guān)聯(lián),關(guān)聯(lián)已有的靜應(yīng)力分析算例。
如圖6所示,首先需導(dǎo)入已完成建模的匹配式植入物,然后按步操作完成多孔結(jié)構(gòu)導(dǎo)入,最后將多孔結(jié)構(gòu)模型轉(zhuǎn)入靜應(yīng)力分析模塊中,完成相應(yīng)的參數(shù)設(shè)置并求解,查看分析結(jié)果。其中,對多孔結(jié)構(gòu)植入物的每一次分析會計算其相對應(yīng)的抗彎剛度和應(yīng)力集中系數(shù),從Simulation模塊導(dǎo)出的報表中提取相應(yīng)參數(shù)來求得抗彎剛度和應(yīng)力集中系數(shù),并作為考量多孔結(jié)構(gòu)設(shè)計的重要指標(biāo)[15-17]。抗彎剛度越小,更能有效降低周圍骨組織的應(yīng)力遮蔽,保證患者骨組織的正常刺激發(fā)育,應(yīng)力集中系數(shù)越小,則多孔結(jié)構(gòu)植入物的應(yīng)力分布越均勻,更有利于延長植入物的壽命。
圖6是一例匹配式下頜柄系統(tǒng)從匹配式建模、裝配再到完成工程分析,并最后得出分析結(jié)果的界面圖。

圖6 多孔結(jié)構(gòu)分析界面
參數(shù)化設(shè)計是通過改動模型的某一部分或某幾部分的建模尺寸,或修改模型某一部分或某幾部分的分析條件設(shè)置,自動完成對模型建模與分析的更新改動,從而實現(xiàn)對模型建模與分析的驅(qū)動。本設(shè)計界面提供參數(shù)化設(shè)計功能,使用戶在驗證不同尺寸結(jié)構(gòu)的模型時,無需反復(fù)建模,只要把關(guān)鍵的可修改的參數(shù)重新賦值即可。
植入物系統(tǒng)結(jié)構(gòu)參數(shù)化設(shè)計的主要參數(shù)包括以下:釘孔號:point_number、釘全長:screw_length、孔類型:hole_type、孔規(guī)格:hole_spec、自定義大小:defined_1、defined_2、defined_3、釘孔空間坐標(biāo):point_x、point_y、point_z。
參數(shù)化設(shè)計的其中一個前提條件是需要存儲和讀取SolidWorks輪廓繪制的數(shù)據(jù),實現(xiàn)部分與輪廓繪制相關(guān)參數(shù)的修改和輪廓參數(shù)的修改。記錄草圖中繪制點、線的部分代碼實現(xiàn)過程如下:
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swSketch As SldWorks.Sketch
Dim swFeat As SldWorks.Feature
Dim swSketchPoint As SldWorks.SketchPoint
Dim sketchPointArray As Object
Dim i As Long
swModel=Swapp.ActiveDoc
swSelMgr=swModel.SelectionManager
swFeat=swSelMgr.GetSelectedObject6(1,-1)
swSketch=swFeat.GetSpecificFeature2
sketchPointArray=swSketch.GetSketchPoints2
For i=0 To UBound(sketchPoint Array)'UBound(sketch-Point Array)+1為草圖中草繪點的數(shù)量
swSketchPoint=sketchPointArray(i)
a(b)=sketchPoint Array(i).X
a(b+1)=sketchPointArray(i).Y
a(b+2)=sketch2Point Array(i).Z
b=b+3
Next
point_number=UBound(sketchPointArray)
NumLines=swSketch.GetLineCount2(1)
vLines=swSketch.Get Lines2(1)
For i=0 To NumLines-1'NumLines為草圖中線段的數(shù)量
MsgBox("Line("&i&")")
MsgBox("(Start=("&vLines(12*i+6)*1000.0#&","&vLines(12*i+7)*1000.0#&","&vLines(12*i+8)*1000.0#&")mm")
MsgBox(" End =("&vLines(12*i+9)*1000.0#&","&vLines(12*i+10)*1000.0#&","&vLines(12*i+11)*1000.0#&")mm")
Next
將記錄草圖的數(shù)據(jù)在txt文檔中讀寫的部分代碼實現(xiàn)過程如下:
Dim strArr As String()=File.ReadAllLines("D:Point.txt",System.Text.Encoding.Default)'獲取txt文檔的總行數(shù)(包括Null)
Dim j=0
For i=0 To b/3-1
strArr(j)=a(j)'寫入的文本代替原文件的文本
strArr(j+1)=a(j+1)
strArr(j+2)=a(j+2)
j=j+3
Next
File.WriteAll Lines("D:Point.txt",strArr,System.Text.Encoding.Default)'strArr所有值寫入txt
本文通過對匹配式植入物系統(tǒng)相關(guān)技術(shù)的研究,結(jié)合產(chǎn)品自身設(shè)計得具體要求,基于VB.NET平臺,利用SolidWorks軟件自主二次開發(fā),建立一個集建模、組裝、工程分析、優(yōu)化于一體的匹配式植入物設(shè)計平臺。能夠?qū)崿F(xiàn)產(chǎn)品的快速設(shè)計,提高產(chǎn)品的質(zhì)量,極大地降低產(chǎn)品設(shè)計和生產(chǎn)的周期。本文主要對匹配式植入物的6個方面進行編程實現(xiàn):
(1)基于SolidWorks二次開發(fā)的界面可以快速實現(xiàn)匹配式植入物與接骨螺釘?shù)慕#焖偻瓿芍踩胛铩⒔庸锹葆敽凸趋赖哪P脱b配。
(2)多孔結(jié)構(gòu)建模與分析模塊可以快速對植入物導(dǎo)入不同類型的多孔結(jié)構(gòu),并通過Simulation模塊的分析來評定多孔結(jié)構(gòu)的性能。
(3)通過植入物管理系統(tǒng),可以查詢并調(diào)用已預(yù)先完成植入物模型,實現(xiàn)與個性化患者骨骼的快速匹配,同時植入物管理系統(tǒng)提供了設(shè)計者對數(shù)據(jù)庫進行新增、修改、刪除等操作的權(quán)限。
(4)在快速完成建模和裝配后,在進入工程分析模塊中,設(shè)計平臺為設(shè)計者提供了靜應(yīng)力分析、疲勞分析和拓?fù)渌憷?個分析類型,輔助設(shè)計者快速進行結(jié)構(gòu)的優(yōu)化設(shè)計。
(5)讀取保存過的建模或工程分析實例,可修改相關(guān)變量進行參數(shù)化建模或工程分析。
(6)使用本程序界面定義的命令流,實現(xiàn)程序化建模和工程分析。