基于Solid Works二次开发的植入物系统设计平台
2021-11-01张春雨张碧涛陈贤帅
张春雨,张碧涛,陈贤帅
(1.佛山市逸合生物科技有限公司,佛山 528200;2.广州市健齿生物科技有限公司,广州 511458)
0 引言
尽管三维设计软件已普及,但工程图纸仍然是大部分企业表达设计思想、加工零件尺寸、检验产品及技术交流不可缺少的技术资料[1]。计算机辅助设计(CAD)已逐步深入到设计生产细节中。
本文主要涉及的是骨科植入物的设计系统开发,骨科植入物系统不同参数下的组合形式多样,医生针对不同的患者又会有自己不同的设计要求,因此,开发一款具备立体化和可视化且专门针对下颌骨内固定系统设计领域的三维设计平台,不仅可以方便医生对患者下颌骨内固定系统的快速设计,也可以提高该领域的设计质量。SolidWorks作为一款操作方便实用性强的三维设计软件在内固定系统的设计上可以得到很好的应用,基于SolidWorks二次开发对内固定系统的参数化设计可以极大地提高医生的工作效率和保证植入物系统的质量,也为未来更加智能化的医工结合的人机交互系统打下坚实基础[2]。
通过API调用SolidWorks的各种功能[3],包括草绘、特征、运动、工程分析等功能模块的开发。本文是基于VB.NET环境下的SolidWorks 2018二次开发,对患者骨骼进行植入物的个性化设计[4],然后完成内固定系统装配并最终实现内固定系统有限元仿真优化的过程。该系统包括4个主要模块:建模与装配模块、工程分析模块、结果输出模块和参数化命令流模块。设计流程如图1所示。
图1 植入物设计二次开发流程
首先,软件要求的文件格式为STL,如不是,则需要借助相关医学软件,将原始格式的患者手术部位骨骼以及相关骨骼素材导入相关医学软件处理后,以STL的文件格式输出。
进入软件设计界面,可将处理好的STL的文件直接导入到SolidWorks自动进行实体转化,并转成SLDPRT的格式重新命名。
进入到软件设计界面的建模模块,在个性化植入物建模方面,根据提示指令,借助Solid-Works操作界面选取绘制接骨板轮廓的视角和绘制接骨板轮廓,快速自动地生成与骨面相贴合的接骨板,在接骨板表面拾取点生成一定规格的螺孔,调用SolidWorks布尔运算功能生成一定规格的螺钉;在多孔结构建模方面,通过多孔结构参数的设置或者调用数据库中的多孔结构模型直接应用于实体模型上,实现实体对应位置的多孔结构处理;在调用零件库方面,将已设计的不同类型的解剖型接骨板事先储存于零件库,并通过界面对零件实现调用。
在植入物系统装配模块中,通过调用Solid-Works插入零件功能,插入匹配式植入物以及相对应的螺钉等零件,并自适应完成植入物系统的装配。完成装配后,可以通过参数化设计对植入物系统的部分尺寸进行修改并更新模型[5-6]。
下一步进入工程分析模块,对装配好的模型选择分析类型进行分析,常用的有静应力分析、疲劳分析和拓扑算例[7-9]。以静应力分析为例,使用静应力分析模块功能对装配模型的各部件分别赋予材料属性[10],对装配模型完成约束设置、载荷设置,最后设置好网格密度生成网格并求解。
求解完成后,可以选择感兴趣的工程分析结果查看,并评估工程分析结果,若结果满足要求,则可以保存结果并导出3D打印所需格式的文件。若结果不合格,则需通过参数化设计重新对模型进行参数化建模或重新对植入物系统进行参数化工程分析设置,参数化设计主要对模型参数进行修改,如轮廓曲线、接骨板板厚、螺钉位置及其规格等参数,对工程分析参数进行设置,如材料设、约束、载荷和网格等设置,并再次求解和参看分析结果,循环往复,直至所得的工程分析结果合格为止。
1 植入物建模与装配
1.1 匹配式植入物建模与装配
通过设计界面操作SolidWorks对象,首先需添加引用“SolidWorks2018 Type Library”,植入物设计应用程序通过API可以对SolidWorks进行跨进程的调用并访问SolidWorks的各种功能。相关的实现代码如下:
Swapp=CreateObject("Sldworks.application")
Part=Swapp.ActiveDoc
Sketchmer=Part.SketchManager
Featmgr=Part.FeatureManager
如图2所示,建模与装配模块主要分为单段植入物、多段植入物模式,以多段植入物模式为例[11],设计步骤依次为匹配式植入物建模和骨骼模型个性化处理、螺钉布尔生产、植入物系统的装配。
图2 建模与装配界面
1.2 多孔结构建模
如图3所示,本界面主要建立了6类常用的多孔结构模型,并可以根据微孔结构各参数设置自动匹配孔隙率[12]。使用SolidWorks对多孔单元结构进行阵列的建模方式,这里以立方体微孔结构为实例,部分实现代码如下:
图3 多孔结构设计界面
b=Text Box2.Text 'b是设置的单元边长
x=Text Box5.Text '阵列参数x
y=Text Box6.Text '阵列参数y
z=TextBox7.Text '阵列参数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的特征组合功能对实体进行多孔结构处理,代码如下:
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)'特征组合运算将多孔结构添加于模型上
Part.FeatureManager.InsertCombineFeature(15902,Nothing,Nothing)
通过SolidWorks二次开发下特征组合运算生成的多孔结构植入物为实体模型,并不会出现面缺陷的问题,而常用的多孔结构处理软件需要对面缺陷做大量的修复工作,因此本设计界面极大节省了零件的设计时间。
1.3 植入物档案管理系统
植入物档案管理系统包括3个模块,分别为植入物档案查询、植入物档案新增、植入物档案修改。如图4所示,根据平台的设计,可通过文件导入或产品编号进行检索,并显示该植入物的正折弯角、侧折弯角、外圆径、内孔径、板厚、板宽、工作长度、钉孔间距等参数。植入物管理系统界面还包括了查询、新增、修改、删除4个按钮,以便对植入物档案进行操作[13-14]。
设计者通过评价所查询的植入物与导入病例骨骼固定处的匹配度,选取匹配度较高的植入物或对植入物进一步修改参数,完成修改后,相对应修改的参数信息会自动填写到数据库里。为了便于植入物档案管理,在数据库设置一目录页以植入物归类的形式全部罗列出来,并自动更新数据库中新增、修改和删除的植入物档案信息。
其中,图4参数中的正、侧折弯角通常需要在一个或多个点位进行设置,当该界面中导入不同类型的零件时,该界面也会自动生产一组对应的参数类别。
图4 植入物档案管理界面
2 工程分析
2.1 工程分析模块
根据植入物设计的需求,本界面只对较常用的静应力分析、疲劳分析和拓扑算例3个分析类型进行了开发。工程分析模块通过SolidWorks的Simulation插件实现的,首先调用动态链接Solid-Works.Interop.cosworks.dll,在SolidWorks的项目栏添加引用“SolidWorks.Interop.cosworks.dll”。
如图5所示,这里以静力学分析为例,实现工程分析模块调用和前处理的部分解释和代码如下:
Dim CWAddinCallBackObj As Object
CWAddinCallBackObj=Swapp.GetAddInObject("CosmosWorks.CosmosWorks")'调用工程分析模块
ErrorCodeObj=SolidManagerObj.SetLibraryMaterialToSelectedEntities("SolidWorks materials","商用纯钛(Ti-55)
UNS R50550*")'材料设置实例
Dim LoadsAndRestraintsManagerObj As CWLoads AndRestr-aintsManager'调用约束载荷设置功能
Dim MeshObj As Object
MeshObj=StudyObj.Mesh()'调用网格设置功能
图5是一例植入物系统从匹配式建模、装配再到完成工程分析,并最后得出分析结果的界面图。
在Simulation模块中,静应力分析中的完成约束设置具有固定几何体、固定铰链、弹性支撑等功能,其中,固定几何体可用于固定植入物系统或骨骼,弹性支撑可以通过设置其法向刚度大小,以模拟咬肌、翼内肌、颞肌等肌肉力的约束载荷。疲劳分析处的应用材料属性需提供具有S-N曲线的材料属性,疲劳分析和拓扑优化均需要通过算例相关联,关联已有的静应力分析算例。
2.2 多孔结构分析模块
如图6所示,首先需导入已完成建模的匹配式植入物,然后按步操作完成多孔结构导入,最后将多孔结构模型转入静应力分析模块中,完成相应的参数设置并求解,查看分析结果。其中,对多孔结构植入物的每一次分析会计算其相对应的抗弯刚度和应力集中系数,从Simulation模块导出的报表中提取相应参数来求得抗弯刚度和应力集中系数,并作为考量多孔结构设计的重要指标[15-17]。抗弯刚度越小,更能有效降低周围骨组织的应力遮蔽,保证患者骨组织的正常刺激发育,应力集中系数越小,则多孔结构植入物的应力分布越均匀,更有利于延长植入物的寿命。
图6是一例匹配式下颌柄系统从匹配式建模、装配再到完成工程分析,并最后得出分析结果的界面图。
图6 多孔结构分析界面
3 参数化设计
参数化设计是通过改动模型的某一部分或某几部分的建模尺寸,或修改模型某一部分或某几部分的分析条件设置,自动完成对模型建模与分析的更新改动,从而实现对模型建模与分析的驱动。本设计界面提供参数化设计功能,使用户在验证不同尺寸结构的模型时,无需反复建模,只要把关键的可修改的参数重新赋值即可。
植入物系统结构参数化设计的主要参数包括以下:钉孔号:point_number、钉全长:screw_length、孔类型:hole_type、孔规格:hole_spec、自定义大小:defined_1、defined_2、defined_3、钉孔空间坐标:point_x、point_y、point_z。
参数化设计的其中一个前提条件是需要存储和读取SolidWorks轮廓绘制的数据,实现部分与轮廓绘制相关参数的修改和轮廓参数的修改。记录草图中绘制点、线的部分代码实现过程如下:
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为草图中草绘点的数量
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为草图中线段的数量
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
将记录草图的数据在txt文档中读写的部分代码实现过程如下:
Dim strArr As String()=File.ReadAllLines("D:Point.txt",System.Text.Encoding.Default)'获取txt文档的总行数(包括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
4 结语
本文通过对匹配式植入物系统相关技术的研究,结合产品自身设计得具体要求,基于VB.NET平台,利用SolidWorks软件自主二次开发,建立一个集建模、组装、工程分析、优化于一体的匹配式植入物设计平台。能够实现产品的快速设计,提高产品的质量,极大地降低产品设计和生产的周期。本文主要对匹配式植入物的6个方面进行编程实现:
(1)基于SolidWorks二次开发的界面可以快速实现匹配式植入物与接骨螺钉的建模,快速完成植入物、接骨螺钉和骨骼的模型装配。
(2)多孔结构建模与分析模块可以快速对植入物导入不同类型的多孔结构,并通过Simulation模块的分析来评定多孔结构的性能。
(3)通过植入物管理系统,可以查询并调用已预先完成植入物模型,实现与个性化患者骨骼的快速匹配,同时植入物管理系统提供了设计者对数据库进行新增、修改、删除等操作的权限。
(4)在快速完成建模和装配后,在进入工程分析模块中,设计平台为设计者提供了静应力分析、疲劳分析和拓扑算例3个分析类型,辅助设计者快速进行结构的优化设计。
(5)读取保存过的建模或工程分析实例,可修改相关变量进行参数化建模或工程分析。
(6)使用本程序界面定义的命令流,实现程序化建模和工程分析。