织物组织CAD软件的开发_第1页
织物组织CAD软件的开发_第2页
织物组织CAD软件的开发_第3页
织物组织CAD软件的开发_第4页
织物组织CAD软件的开发_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章织物组织CAD软件的开发一、CAD系统功能概述菜单化设计集成织物组织CAD设计的功能,配合密码登录管理;参数化设计功能,输入参数后,可生成三原、变化、联合组织,以及自定义组织;可以保存数据文件和图像文件,并能打开相应的数据文件和图像文件。二、菜单设计根据系统功能,进行相应的菜单设计,可如下表进行分级:文件管理原组织变化组织联合组织自定义组织帮助建立下拉式菜单打开VB,新建EXE文件;选择菜单/工具/菜单编辑器,或直接从工具栏选择菜单编辑器,进入菜单编辑状态。依次编辑各级菜单,分别填写标题和名称;插入和删除分别表示增加或删除一个菜单命令项;上下箭头表示菜单位置上下移动;左右箭头表示菜单级别调整,左表示级别高;三、分别建立各子模块1、平纹模块(窗体设计+代码编写)窗体设计:新建exe文件建立1个picturebox控件2个commandbutton控件1个frame控件在frame控件内放置1个label控件;2个radio按钮;1个text控件控件属性调整:Form:caption属性改为:平纹Picturebox属性:Autoredraw设为:true;Height、width、scaleheight、scalewidth均设为相同的值,如6000Commandbutton的caption属性分别为:绘图、退出Frame的caption属性为:参数选择Label的caption属性为:循环次数Text的text设定为:默认值,如10单选按钮分别设定caption为:单起、双起将单起对应的单选按钮的value设为:true代码编写:通用模块部分:Dimx,y,w,hAsSingleDimi,jAsIntegerDimnAsIntegerDima()AsInteger退出按钮:PrivateSubCommand2_Click()UnloadMeEndSub绘图按钮(第一部分)PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n=Val(Text1.Text)*2'获取组织图幅面w=Picture1.Width/n'定义组织点尺寸h=Picture1.Height/nReDima(1Ton,1Ton)AsInteger'定义组织矩阵IfOption1.Value=TrueThen'单起Fori=1Ton'组织矩阵编码Forj=1Tonk=i+jIfkMod2=0Thena(i,j)=0Elsea(i,j)=1EndIfNextjNextiEndIfIfOption2.Value=TrueThen'双起Fori=1Ton'组织矩阵编码Forj=1Tonk=i+jIfkMod2=0Thena(i,j)=1Elsea(i,j)=0EndIfNextjNextiEndIf绘图按钮(第二部分)Fori=1TonForj=1TonIfa(i,j)=1Then'判断元素1处绘制实心矩形Picture1.Line(x+(i-1)*w,y+(j-1)*h)-(x+i*w,y+j*h),RGB(0,0,255),BFEndIfNextjNextix=0'组织图框线y=0Fori=1Ton+1Picture1.Line(x+(i-1)*w,y)-(x+(i-1)*w,y+n*h),RGB(0,0,0)Picture1.Line(x,y+(i-1)*h)-(x+n*w,y+(i-1)*h),RGB(0,0,0)NextiEndSub绘图按钮(第三部分)2、斜纹组织窗体设计:1个picturebox控件;1个frame控件,内含:3个文本框控件;2个单选按钮控件;1个标签控件;1条水平线段;2个commandbutton控件控件属性调整:参照前面的设置方法,结合右图代码编写通用部分:Dimx,y,w,hAsSingleDimi,jAsIntegerDimn,n1,n2,n3,n4

AsIntegerDimsAsIntegerDima()asintegerDimbase()asinteger退出按钮:PrivateSubCommand2_Click()UnloadMeEndSub绘图按钮:PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n1=Val(Text1.Text)'将文本框1的字符转为数值,循环次数n2=Val(Text2.Text)'将文本框2的字符转为数值,分子n3=Val(Text3.Text)'将文本框3的字符转为数值,分母n=n1*(n2+n3)'获取组织图幅面w=Picture1.Width/n'定义组织点尺寸h=Picture1.Height/nn4=n2+n3s=1ReDima(1Ton,1Ton)AsInteger'定义循环后组织矩阵ReDimbase(1Ton4,1Ton4)AsInteger'定义组织矩阵IfOption1.Value=TrueThen'右斜Fori=1Ton4Ifi<=n3Thenbase(1,i)=0Elsebase(1,i)=1EndIfNextiForj=2Ton4Fori=1Ton4Ifi+s<=n4Thenbase(j,i)=base(j-1,i+s)Elsebase(j,i)=base(j-1,(i+s)Modn4)EndIfNextiNextjEndIf二维数组,列前,行后数组base首列赋值数组base其他列赋值n2=3n3=1n4=4j=2j=1j=3j=4IfOption2.Value=TrueThen'左斜Fori=1Ton4Ifi<=n3Thenbase(n4,i)=0Elsebase(n4,i)=1EndIfNextiForj=n4-1To1Step-1Fori=1Ton4Ifi+s<=n4Thenbase(j,i)=base(j+1,i+s)Elsebase(j,i)=base(j+1,(i+s)Modn4)EndIfNextiNextjEndIfj=3j=4j=2j=1n2=3n3=1n4=4二维数组,列前,行后数组base末列赋值数组base其余列赋值Fori=1Ton1Forj=1Ton1Fork=1Ton4Forl=1Ton4a((i-1)*n4+k,(j-1)*n4+l)=base(k,l)NextlNextkNextjNextiFori=1TonForj=1TonIfa(i,j)=1Then'判断元素1处绘制实心矩形Picture1.Line(x+(i-1)*w,y+(j-1)*h)-(x+i*w,y+j*h),RGB(0,0,255),BFEndIfNextjNextix=0'组织图框线y=0Fori=1Ton+1Picture1.Line(x+(i-1)*w,y)-(x+(i-1)*w,y+n*h),RGB(0,0,0)Picture1.Line(x,y+(i-1)*h)-(x+n*w,y+(i-1)*h),RGB(0,0,0)NextiEndSub产生循环矩阵an1=2n2=3n3=1n4=4bbbb3、缎纹组织窗体设计1个picturebox控件;1个frame控件内含:3个text控件;2个单选按钮控件;3个label控件;2个commandbutton按右图进行控件属性设置控件代码编写:通用模块:Dimi,jAsIntegerDimn,n1,n2,n3,n4,n5,n6AsInteger'申明整形变量,其中n1,n2,n3分别表示循环次数,枚数,飞数,n4,n5,n6为判断枚飞互质的中间变量,n为循环后经纬纱数Dima()AsInteger'申明动态整型数组a,循环后数组Dimbase()AsInteger'申明动态整型数组base,基础缎纹组织数组退出:PrivateSubCommand2_Click()UnloadMeEndSub绘图按钮:PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n1=Val(Text1.Text)'循环次数n2=Val(Text2.Text)'枚数n3=Val(Text3.Text)'飞数If(n2>=5)And(n3>1)And(n3<n2-1)Then'枚、飞最大公约数n6n4=n2n5=n3Whilen4<>n5Ifn4>n5Thenn4=n4-n5Elsen5=n5-n4EndIfWendn6=n4EndIf判断枚数和飞数是否合理,计算最大公约数If(n2>=5)And(n3>1)And(n3<n2-1)And(n6=1)Thenn=n1*n2‘获取组织图行列w=Picture1.Width/n‘组织点宽h=Picture1.Height/n‘组织点高ReDima(1Ton,1Ton)AsInteger‘定义循环后组织矩阵ReDimbase(1Ton2,1Ton2)AsInteger‘定义基础组织矩阵IfOption2.Value=TrueThen'纬面Fori=1Ton2Ifi=1Thenbase(i,n2)=1Elsebase(i,n2)=0EndIfNexti纬面缎纹末行赋值n2=5n3=3Forj=(n2-1)To1Step-1Fori=1Ton2Ifi+n3<=n2Thenbase(i+n3,j)=base(i,j+1)Elsebase((i+n3)Modn2,j)=base(i,j+1)EndIfNextiNextjEndIfIfOption1.Value=TrueThen'经面Fori=1Ton2Ifi<n2Thenbase(1,i)=1Elsebase(1,i)=0EndIfNexti纬面缎纹其他行赋值经面缎纹首列赋值n2=5n3=3Forj=2Ton2Fori=1Ton2Ifn2+i-n3<=n2Thenbase(j,n2+i-n3)=base(j-1,i)Elsebase(j,(n2+i-n3)Modn2)=base(j-1,i)EndIfNextiNextjEndIfFori=1Ton1Forj=1Ton1Fork=1Ton2Forl=1Ton2a((i-1)*n2+k,(j-1)*n2+l)=base(k,l)NextlNextkNextjNexti经面缎纹其他列赋值循环矩阵的产生n1=2bbbbFori=1TonForj=1TonIfa(i,j)=1Then'判断元素1处绘制实心矩形Picture1.Line(x+(i-1)*w,y+(j-1)*h)-(x+i*w,y+j*h),RGB(0,0,255),BFEndIfNextjNextix=0'组织图框线y=0Fori=1Ton+1Picture1.Line(x+(i-1)*w,y)-(x+(i-1)*w,y+n*h),RGB(0,0,0)Picture1.Line(x,y+(i-1)*h)-(x+n*w,y+(i-1)*h),RGB(0,0,0)NextiElseMsgBox"请重新设置枚数和飞数",0,"请改正错误"EndIfEndsub错误提示对话框4.方平组织模块代码编程:通用部分:Dimi,jAsInteger'申明变量i,j为整形变量,用来作为循环变量Dimx,y,w,hAsSingle'申明单精度实型x,y为坐标,w,h为单元格尺寸Dimn,n1,n2AsInteger'申明整形变量,其中n1,n2分别表示循环次数,方格组织边长,n为循环后经纬纱数Dima()AsInteger'申明动态整型数组a,循环后数组绘图按钮command1PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色Picture1.DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n1=Val(Text1.Text)'循环次数n2=Val(Text2.Text)'方格边长n=n1*n2*2'获取组织图幅面w=Picture1.Width/n'组织点宽h=Picture1.Height/n'组织点高ReDima(1Ton,1Ton)AsInteger'定义组织矩阵Fori=1Ton'产生方平组织矩阵第1列IfiMod2*n2<=n2AndiMod2*n2>0Thena(1,i)=0Elsea(1,i)=1EndIfNextiForj=2Ton'产生方平组织矩阵其余各列Fori=1TonIfjMod2*n2<=n2AndjMod2*n2>0ThenIfa(1,i)=1Thena(j,i)=1Elsea(j,i)=0EndIfElseIfa(1,i)=1Thena(j,i)=0Elsea(j,i)=1EndIfEndIfNextiNextjFori=1TonForj=1TonIfa(i,j)=1Then'判断元素1处绘制实心矩形Picture1.Line(x+(i-1)*w,y+(j-1)*h)-(x+i*w,y+j*h),RGB(0,0,255),BFEndIfNextjNextix=0'组织图框线y=0Fori=1Ton+1Picture1.Line(x+(i-1)*w,y)-(x+(i-1)*w,y+n*h),RGB(0,0,0),BPicture1.Line(x,y+(i-1)*h)-(x+n*w,y+(i-1)*h),RGB(0,0,0),BNextiEndSub退出按钮Command2部分:PrivateSubCommand2_Click()UnloadMe'卸载窗体EndSub4、变化方平模块通用模块:Dimx,y,w,hAsSingleDimi,jAsIntegerDimn,n1,n4,n5AsInteger'组织图幅面Dimn2,n3AsString‘经浮长字符串,纬浮长字符串退出和窗体加载,和前面代码一样绘图按钮:PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n1=Val(Text1.Text)'循环次数n2=Text2.Text'经浮长字符串n3=Text3.Text'纬浮长字符串n4=Len(n2)'经纬浮长对数ReDimwarp(1Ton4)AsIntegerReDimweft(1Ton4)AsIntegerReDimtemp(1Ton4)AsIntegern5=0Fori=1Ton4warp(i)=Val(Mid(n2,n4-i+1,1))'从经浮长字符串依次取得各经浮长weft(i)=Val(Mid(n3,n4-i+1,1))'从纬浮长字符串依次取得各纬浮长temp(i)=warp(i)+weft(i)n5=n5+temp(i)'获取完全组织循环数Nextin=n1*n5'获取组织图幅面w=Picture1.Widthh=Picture1.HeightPicture1.ScaleHeight=h'定义图片框内部大小Picture1.ScaleWidth=ww=w/n'定义组织点尺寸h=h/nReDima(1Ton,1Ton)AsInteger‘定义循环组织图矩阵ReDimb(1Ton5,1Ton5)AsInteger'定义完全组织矩阵ReDimn6(0Ton4)AsIntegern6(0)=0Fori=1Ton4n6(i)=n6(i-1)+temp(i)Nexti'产生第1经纱Fori=1Ton4Forj=(1+n6(i-1))Ton6(i)Ifj<=(n6(i-1)+weft(i))Thenb(1,j)=0Elseb(1,j)=1EndIfNextjNextiReDimbb(1Ton5)'判断向量Fori=1Ton5bb(i)=b(1,n5-i+1)Nexti'根据判断向量依次产生其他经纱Forj=2Ton5Ifbb(j)=1ThenFori=1Ton5b(j,i)=b(1,i)NextiElseFori=1Ton5b(j,i)=Abs(1-b(1,i))NextiEndIfNextjFori=1Ton1Forj=1Ton1Fork=1Ton5Forl=1Ton5a((i-1)*n5+k,(j-1)*n5+l)=b(k,l)NextlNextkNextjNextI剩下部分为绘图部分,和前面一致。Endsub5、复合斜纹窗体设计1个picturebox1个frame内含:3个text控件;1个label控件;2个单选按钮;1个水平线2个commandbutton控件属性修改参考右图代码编写:通用模块:Dimi,jAsInteger'申明变量i,j为整形变量,用来作为循环变量Dimx,y,w,hAsSingle'申明单精度实型x,y为坐标,w,h为单元格尺寸Dimn,n1,n4,n5AsInteger'申明整形变量,其中n1为循环次数;n4表示分子分母对数;n5表示完全组织循环数;n为循环后经纬纱数Dimn2,n3AsString'申明字符串变量n2表示经浮点字符串;n3表示纬浮点字符串DimsAsInteger'申明整型变量s,飞数Dimwarp()AsInteger'申明动态整型数组warp,经浮点数组Dimweft()AsInteger'申明动态整型数组weft,纬浮点数组Dimtemp()AsInteger'申明动态整型数组temp,临时存放数组Dima()AsInteger'申明动态整型数组a,循环后数组Dimbase()AsInteger'申明动态整型数组base,基础复合斜纹数组Dimn6()AsInteger'申明动态整型数组temp,临时存放数组绘图按钮:PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n1=Val(Text3.Text)'循环次数n2=Text1.Text'分子字符串赋给n2n3=Text2.Text'分母字符串赋给n3n4=Len(n2)'分子、分母对数ReDimwarp(1Ton4)AsIntegerReDimweft(1Ton4)AsIntegerReDimtemp(1Ton4)AsIntegern5=0Fori=1Ton4warp(i)=Val(Mid(n2,n4-i+1,1))'将字符串n2逐个字符转为数值并存入经浮点数组weft(i)=Val(Mid(n3,n4-i+1,1))'将字符串n3逐个字符转为数值并存入纬浮点数组temp(i)=warp(i)+weft(i)'建立每次经纬交织的经纬浮长总数n5=n5+temp(i)'获取完全组织循环数Nextin=n1*n5'获取循环后组织图行列w=Picture1.Width/n'组织点宽h=Picture1.Height/n'组织点高s=1'飞数ReDima(1Ton,1Ton)AsInteger'定义组织图矩阵ReDimbase(1Ton5,1Ton5)AsInteger'定义完全组织矩阵ReDimn6(0Ton4)AsIntegern6(0)=0Fori=1Ton4n6(i)=n6(i-1)+temp(i)NextIIfOption2.Value=TrueThen'右斜Fori=1Ton4Forj=(1+n6(i-1))Ton6(i)Ifj<=(n6(i-1)+weft(i))Then'基础组织首列赋值base(1,j)=0Elsebase(1,j)=1EndIfNextjNextiForj=2Ton5'基础组织其余列赋值Fori=1Ton5Ifi+s<=n5Thenbase(j,i)=base(j-1,i+s)Elsebase(j,i)=base(j-1,(i+s)Modn5)EndIfNextiNextjEndIfIfOption1.Value=TrueThen'左斜Fori=1Ton4'基础组织末列赋值Forj=(1+n6(i-1))Ton6(i)Ifj<=(n6(i-1)+weft(i))Thenbase(n5,j)=0Elsebase(n5,j)=1EndIfNextjNextiForj=(n5-1)To1Step-1'基础组织其余列赋值Fori=1Ton5Ifi+s<=n5Thenbase(j,i)=base(j+1,i+s)Elsebase(j,i)=base(j+1,(i+s)Modn5)EndIfNextiNextjEndIfFori=1Ton1'根据循环次数将基础组织base铺设产生数组aForj=1Ton1Fork=1Ton5Forl=1Ton5a((i-1)*n5+k,(j-1)*n5+l)=base(k,l)NextlNextkNextjNextiFori=1TonForj=1TonIfa(i,j)=1Then'判断元素1处绘制实心矩形Picture1.Line(x+(i-1)*w,y+(j-1)*h)-(x+i*w,y+j*h),RGB(0,0,255),BFEndIfNextjNextix=0'组织图框线y=0Fori=1Ton+1Picture1.Line(x+(i-1)*w,y)-(x+(i-1)*w,y+n*h),RGB(0,0,0),BPicture1.Line(x,y+(i-1)*h)-(x+n*w,y+(i-1)*h),RGB(0,0,0),BNextiEndSub

Command2部分:PrivateSubCommand2_Click()UnloadMe'卸载窗体EndSub六、曲线斜纹窗体设计:1个picturebox;1个frame内含:4个text3个label1水平线2个commondialog控件4个commandbutton控件属性参考右图设定模块文件通用模块:Dimx,y,w,hAsSingleDimi,jAsIntegerDimn,n1,n4,n5AsInteger'组织图幅面Dimn2,n3AsString'分子,分母字符串Dimn7AsIntegerDimn8AsInteger'纬纱循环数Dimn9AsInteger'经纱循环数Dimn10AsInteger'飞数和DimfeiAsString‘飞数字符串退出和窗体加载部分和前面一致模块:(公共数组a,b,c)Publica()AsIntegerPublicb()AsIntegerPublicc()AsInteger绘图按钮:PrivateSubCommand1_Click()Picture1.Cls'清除上次的画图Picture1.BackColor=RGB(255,255,255)'设置图片框背景色白色DrawWidth=1'划线宽度为1x=0'起点x坐标为0y=0'起点y坐标为0n1=Val(Form1.Text1.Text)'循环次数n2=Text2.Text'分子字符串n3=Text3.Text'分母字符串fei=Text4.Textn4=Len(n2)‘分子、分母对数ReDimwarp(1Ton4)AsIntegerReDimweft(1Ton4)AsIntegerReDimtemp(1Ton4)AsIntegern5=0Fori=1Ton4warp(i)=Val(Mid(n2,n4-i+1,1))'从分子中依次取得经纱浮长weft(i)=Val(Mid(n3,n4-i+1,1))'从分母中依次取得纬纱浮长temp(i)=warp(i)+weft(i)n5=n5+temp(i)'获取完全组织纬纱循环数NextiDims2()AsString'字符串数组s2=Split(fei,",",-1)'按照","分隔字符串fei,并赋给下标0开始的字符串数组s2n9=UBound(s2)+1'得到字符串数组最大下标并+1,得到字符串数组个数n9ReDims(1Ton9,1)AsInteger'飞数数值数组Fori=1Ton9s(i,1)=Val(s2(i-1))'将字符串数组s2各元素,转换为数值,赋值给数组sNextin10=0Fori=1Ton9n10=n10+s(i,1)NextiIf(n10Modn5=0)Thenn=n1*n9'获取组织图幅面w=Picture1.Widthh=Picture1.HeightPicture1.ScaleHeight=h'定义图片框内部大小Picture1.ScaleWidth=ww=w/n'定义组织点尺寸h=h/nReDimn6(0Ton4)AsIntegern6(0)=0Fori=1Ton4n6(i)=n6(i-1)+temp(i)NextiReDima(1Ton,1Ton)AsInteger'定义组织矩阵ReDimb(1Ton9,1Ton5)AsInteger'完全组织矩阵Fori=1Ton4Forj=(1+n6(i-1))Ton6(i)Ifj<=(n6(i-1)+weft(i))Thenb(1,j)=0Elseb(1,j)=1EndIfNextjNextIForj=2Ton9Fori=1Ton5Ifi+s(j-1,1)<=n5Andi+s(j-1,1)>0Thenb(j,i)=b(j-1,i+s(j-1,1))ElseIfi+s(j-1,1)<=0Thenb(j,i)=b(j-1,n5-(Abs(i+s(j-1,1))Modn5))ElseIfi+s(j-1,1)>n5Thenb(j,i)=b(j-1,(i+s(j-1,1))Modn5)EndIfEndIfEndIfNextiNextj根据交织规律产生第1列经纱根据飞数产生其余各列经纱Fori=1Ton1Forj=1Ton/n5Fork=1Ton9Forl=1Ton5a((i-1)*n9+k,(j-1)*n5+l)=b(k,l)NextlNextkNextjNextI绘图和前面一致ElseMsgBox"飞数和与完全组织纬纱数不成倍数关系,请调整",0,"错误"EndIfEndSub数据保存按钮:PrivateSubCommand3_Click()DimintfileAsIntegerDimstrfilenameAsStringOnErrorGoTo100WithCommonDialog1.Filter="所有文件|*.*|文本文件|*.txt"'文件过滤器,选择txt文件.FilterIndex=2'文本文件缺省索引值为2.DefaultExt="TXT"'缺省的文本文件扩展名TXT.Flags=cd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论