infolytica代码详解.docx
OptionExp1icit'useoptionexp1icittoforcea11variab1esusedtobedec1aredforcheckingpurposes%定义内部变量DimMN6,DoczConzCur,So1AsObject%object变量,可以将任何数据类型的变吊:,常数或定义内部变量这些量为双精度小数,精确到小数点后10位左右表达式赋给ObjeCt变量DimDir,Fi1e,Materia1,Name,Unit,Fx,Fy,FzAsVariantDimXI,X2,X3,X4zY1,Y2,Y3,Y4,Airgap,1z,turn,I,piAsDoub1e%DimX12zX13,Y1azY4uzY4dAsDoub1eConststr1$="infoMakeComponentUnionSurfaces"Conststr2="infoMakeComponentUnionSurfacesOrInfoMakecomponentIgnoreHoIesOrinfoMakeComponentRemoveVertices"%源代码内部变量,要和Exce1中对应SubStartMagNetf)%启动MagNetSetMN6=CreateObjectC'Magnet.App1ication")%后台启动MagNetSetDoc=MN6.newDocumentSetCon=MN6.GetConstantsSetCur=Doc.getViewSetSo1=Doc-GetSoIutionMN6.Visib1e=TrueCa11Doc.setSca1edToFit(Con.infoTrue)EndSub%新建一个项目,类似创建一个项目%在后续程序中需要的常量保存在这里面%操作的视图,即绘图的面%操作结果,即获得结果%后台创建,true意味着求解界面显示出来%帮助?SubGetDataO%赋予变量,指的是将EXCe1中的变量,带入到MagNet中Range(F5").Se1ect%选取FSUnit=ActiveCeI1VaIue%>FS"Unit”Range("F6").Se1ectX1=ActiveCeI1VaIueRange("F7").Se1ectX2=ActiveCeI1VaIueRange("F8").Se1ectX3=ActiveCeI1VaIueRange("F9',).Se1ectX4=ActiveCeI1VaIueRange(uF1On),SeIectY1=ActiveCeI1VaIueRange(uF11n).SeIectY2=ActiveCeI1VaIueRange("F12").Se1ectY3=ActiveCeI1VaIueRange("F13").Se1ectY4=ActiveCeI1VaIueRange("F14").Se1ectAirgaP=ActiveCeI1VaIueRange("F15").Se1ect1z=ActiveCeI1VaIueRange("F16").Se1ectMateria1=ActiveCeI1VaIueRange("F17").Se1ectturn=ActiveCeI1VaIueRange("F18").Se1ectI=ActiveCeI1VaIueEndSubSubSetIengthunitO%设置初始单位Se1ectCaseUnit%单位变昂UnitCase"metre"%如果Unit是metreCa11Doc.SetDefauIt1engthUnit(nMetersn)%那么MagNet中的单位选取MetersCase"mi11imetre"Ca11Doc.SetDefau1t1engthUnitC1MiIIimeters")Case"centimetre"Ca11Doc.SetDefauIt1engthUnitCCentimeters")Case"micron"Ca11Doc.setDefau1t1engthUnit("Microns")Case"inch"Ca11Doc.SetDefauIt1engthUnitC1nches")EndSe1ectEndSubSubCreatecorebIockOSe1ectCaseMateria1%材料变量,对应生成实体时,对材料的选择Case,CR10%如果Materia1是CR1OName="Name=CR1O:Co1dro11ed1010stee1"%那么MagNet中的材料选取"Name=CR1O:Co1dro11ed1010stee1",Name是MagNet中材料的变量Case"M19"Name="Name=M19:USSTransformer72-29Gage"Case,"M22"Name="Name=M22:USSDynamo-26Gage"Case"M27"Name="Name=M27:USSMotor-26Gage"Case,M36"Name=,Name=M36:USSE1ectrica1-24Gage"EndSe1ectpi=3.141592653X12=X1+X2X13=X1+X2+X3Ca11Cur.new1ine(-X13,Oz-×13z-Y3)%针对几何参数画线Ca11Cur.new1ine(-X13z-Y3zX13,-Y3)Ca11Cur.new1ine(X13,-Y3zX13,0)Ca11Cur.new1ine(X13,O,-X13,O)Ca11Cur.new1ine(X1,O,XI,-Y2)Ca11Cur.new1ine(X1,-Y2z×12t-Y2)Ca11Cur.new1ine(X12,-Y2,X12,O)Ca11Cur.new1ine(-X1zO,-X1z-Y2)Ca11Cur.new1ine(-X1,-Y2,-X12z-Y2)Ca11CUr.new1ine(-X12,-Y2,-X12,O)ReDimArrayOfVaIues(O)%创建动态数组ArrayOfVaIues(O)=ConjnfoSIiceSurface%把这个常量赋给这个数组Ca11Cur.se1ectAt(-×13zOzConjnfoSetSeIectionzArrayOfVaIues)%选取面内的任,点ArrayOfVaIues(O)="corecomponent"%设置名称"corecopponent”Materia1=Name%选取材料Ca11Cur.makeComponent1nA1ine(1z,ArrayOfVaIues,Materia1)%拉伸长度,执行拉伸操作EndSubSubCreatearmaturebIockOSe1ectCaseMateria1Case"CR10"Name="Name=CR1O:Co1dro11edIO1Ostee1"Case"M19"Name="Name=M19:USSTransformer72-29Gage"Case"M22"Name="Name=M22:USSDynamo-26Gage"Case"M27"Name="Name=M27:USSMotor-26Gage"Case"M36"Name="Name=M36:USSE1ectrica1-24Gage"EndSe1ectY1a=Y1+AirgapCa11Cur.new1ine(-X13zY1az-X13,Airgap)Ca11Cur.new1ine(-X13zAirgapzX13zAirgap)Ca11Cur.new1ine(X13,Airgap,X13zY1a)Ca11Cur.new1ine(X13,Y1a,-X13,Y1a)ReDimArrayOfVaIues(O)ArrayOfVaIues(O)=ConjnfoSIiceSurfaceCa11Cur.se1ectAt(-X13zY1azConjnfoSetSeIection,ArrayOfVaIues)ArrayOfVaIues(O)="armaturecomponent',Materia1=NameCa11Cur.makeComponent1nA1ine(1z,ArrayOfVaIues,Materia1)EndSubSubCreaterightcoiIOReDimArrayOfVaIues(O)ArrayOfVaIues(O)=ConjnfoSIiceSurfaceCa11Cur.se1ectAt(X1+0.01,-0.01zConjnfoSetSeIection,ArrayOfVaIues)ArrayOfVaIues(O)="rightcoi1component"Ca11Cur.makeComponent1nA1ine(1z,ArrayOfVaIues,"Name=Copper:5.77e7Siemens/meter")%材料直接写在命令行中EndSubSubCreateIeftcoiIOReDimArrayOfVaIues(O)ArrayOfVaIues(O)=ConjnfoSIiceSurfaceCa11Cur.se1ectAt(-X12+O.O1z-0.01,Con.InfoSetSeIection,ArrayOfVaIues)ArrayOfVaIues(O)="1eftcoi1component"Ca11Cur.makeComponent1nA1ine(1z,ArrayOfVaIues,"Name=Copper:5.77e7Siemens/meter")EndSubc1eara11primitivesfromconstructions1icefirstCa11Cur.new1ine(-X13zAirg叩,-X13,0)Ca11Cur.new1ine(-X13z0,X13,0)Ca11Cur.new1ine(X13,0,X13,Airgap)Ca11Cur.new1ine(X13,Airgapz-X13,Airgap)ReDimArrayOfVaIues(O)ArrayOfVaIues(O)=ConjnfoSIiceSurfaceCa11Cur.se1ectAt(-X13zAirgap,ConjnfoSetSeIectionzArrayOfVaIues)ArrayOfVaIues(O)="airgapcomponent"Ca11Cur.makeComponent1nA1ine(1zzArrayOfVaIues,"Name=AIR"zConjnfoMakecomponentUnionSurfacesOrCon.infoMakeComponent1gnoreHo1esOrConjnfoMakecomponentRemoveVertices)EndSubSubCreateairboxOI,c1eara11primitivesfromconstructions1icefirstIY4u=Y1a+(Y4-Y3-Y1a)/2Y4d=Y4-Y4uCa11Cur.new1ine(-X4zY4u,-X4,-Y4d)Ca11Cur.new1ine(-X4,-Y4d,X4,-Y4d)Ca11Cur.new1ine(X4,-Y4d,X4,Y4u)Ca11Cur.new1ine(X4,Y4u,-X4,Y4u)ReDimArrayOfVaIues(O)Array