二维工程图形处理技术_第1页
二维工程图形处理技术_第2页
二维工程图形处理技术_第3页
二维工程图形处理技术_第4页
二维工程图形处理技术_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第六章二维工程图形处理技术1第六章二维工程图形处理技术二、工程图编程中常用的方法,1.参数法2.拼图法第一节概述一、图样的处理方法1、把复杂的图形分解成若干基本图形2、图样中除了视图以外的内容均视为二维图形3、利用图形变换对图形进行处理22.拼图法3三、坐标系1.用户坐标系用户坐标系全局与局部坐标系2.设备坐标系4(1)局部坐标系到全局坐标系的转换设(L,M)为局部坐标系的原点在全局坐标系中的坐标,则可以定义一个过程(LocalToGlobe)来实现:SUBLocalToGlobe(X,Y,L,M,PHI,XX,YY) XX=X*cos(PHI)-Y*sin(PHI)+LYY=X*sin(PHI)+Y*cos(PHI)+MENDSUB局部坐标系到全局坐标系的转换

3.坐标系之间的坐标变换5(2)用户坐标系到设备坐标系之间的转换

设(X0,Y0)为用户坐标系的原点在屏幕坐标系中的坐标,则用户坐标系中的一点(X,Y),转化为在屏幕坐标系下的坐标为:XX=X0+X*S YY=Y0-Y*S通过定义一个过程(GlobeToDevice)来实现以上的转换。SUBGlobeToDevice(X,Y,x0,y0,Scale,XX,YY) XX=x0+X*Scale YY=y0-Y*ScaleENDSUB6第二节常用基本图形一、直线子程序设计:

参数说明:X,Y-点的坐标,K-选择码。K=0抬笔;K=1落笔SUBDRAWLINE(K,X,Y,Ocontainar) IFK=0THENOcontainar.PSET(X,Y) IFK=1THENOcontainar.LINE-(X,Y)ENDSUB画线7功能:根据圆心坐标和半径,圆弧的起始角和终止角, 绘制圆弧或圆。参数:X0,Y0-圆(弧)的圆心坐标 R-圆(弧)的半径 TS-圆弧的起始角,单位为度 TE-圆弧的终止角,单位为度实现方法: 一个圆可以看作是边数无穷多的正多边形。因此,可以用正多边形逼近一个圆,正多边形的边数越多,误差就越小。 本子程序使用正72边形,即每隔5度计算一个顶点。绘制圆弧时,亦然。二、圆(圆弧)子程序:8程序如下:

SUBarc(x0,y0,r,ts,te)p=0.01745:dt=5IFts>teTHENdt=-dtn=INT((te-ts)/dt)x=x0+r*COS(ts*p)y=y0+r*SIN(ts*p)k=0:CALLdrawline(k,x,y,ob)’相当于pset(x,y)FORi=1TOnx=x0+r*COS((ts+i*dt)*p)y=y0+r*SIN((ts+i*dt)*p)k=1:CALLdrawline(k,x,y,ob)’相当于line-(x,y)NEXTix=x0+r*COS(te*p)y=y0+r*SIN(te*p)k=1:CALLdrawline(k,x,y,ob)’相当于line-(x,y)ENDSUB9三、正多边形的子程序设计设外接圆半径为R,圆心坐标为(x0,y0),边数为N,起始角度为A0则:AA=360/N各顶点坐标为:X=x0+R*cos(A0+AA*i)Y=y0+R*sin(A0+AA*I)图6-5正多边形的生成ROYXAA(X0,Y0)A010正多边形子程序SUBploygon(x0,y0,R,A0,N,OB)P=3.1415926/180AA=360/N*PA0=A0*PFORI=0TONIFI=0THENk=0ELSEk=1X=X0+R*COS(A0+AA*I)Y=Y0+R*SIN(A0+AA*I)CALLdrawline(k,X,Y,OB)NEXTIENDSUB11四、矩形的程序设计矩形的参数如下:X0,Y0-矩形左下角的坐标;L,W-矩形的长和宽;A0–矩形的倾斜角,单位为(°)。Subjux(x0,y0,L,W,A0,OBAsObject)DimX(4),Y(4)X(1)=x0:Y(1)=y0X(2)=x0+L:Y(2)=y0X(3)=x0+L:Y(3)=y0+WX(4)=x0:Y(4)=y0+WOB.PSet(X(1),Y(1))ForI=2To4CallRotation(A0,x0,y0,X(I),Y(I),Xr,Yr)OB.Line-(Xr,Yr)NextIOB.Line-(X(1),Y(1))EndSub12Rotation(A0,x0,y0,X(I),Y(I),Xr,Yr)为绕点(x0,y0)旋转的子程序,参数X(i),Y(i)为旋转前点的坐标,Xr,Yr为旋转后的坐标。SubRotation(A1,Xc,Yc,x,y,Xr,Yr)PI=0.01745:CS=Cos(A1*PI):SN=Sin(A1*PI)Xr=x*CS-y*SN+Xc*(1-CS)+Yc*SNYr=x*SN+y*CS+Yc*(1-CS)-Xc*SNEndSub13第三节线型1、直虚线的子程序设计:功能:绘制虚线直线参数及其几何意义为:x1,y1­线段的起点坐标;x2,y2­线段的终点坐标;LS­虚线短画的长度;LK­虚线短画间隔长。14第n+1段起点坐标:(1)算法分析:虚线段总长:

短画总数:第n段终点坐标:第n段起点坐标15SubXux(x1,y1,x2,y2,OB)LS=10:LK=5:LL=LK+LSLZ=Sqr((x2-x1)^2+(y2-y1)^2)CS=(x2-x1)/LZ:SN=(y2-y1)/LZN=Int(LZ/LL)x=x1:y=y1:OB.PSet(x,y)Fori=1ToNx=x+LS*CS:y=y+LS*SN:OB.Line-(x,y)x=x+LK*CS:y=y+LK*SN:OB.PSet(x,y)NextiOB.Line-(x2,y2)

EndSub(2)程序如下:16二、直点画线的子程序设计功能:根据起点和终点坐标,绘制点画线参数:x1,y1­线段的起点坐标;x2,y2­线段的终点坐标;LS­点画线长画的长度。LK­点画线间隔长和短画长。画点画线的过程:抬笔至长画的起点,然后利用循环画出点画线线段,在一个循环中,完成下面的工作:画线到长画的终点,再抬笔到短画的起点,然后画线到短画的终点,再抬笔到下一个长画的起点。17SubDianhx(x1,y1,x2,y2,OB)LS=25:LK=5:LL=LS+3*LK:LZ=Sqr((x2-x1)^2+(y2-y1)^2)‘LZ——总长CS=(x2-x1)/LZ:SN=(y2-y1)/LZN=Int(LZ/LL)‘循环次数

x=x1:y=y1:OB.PSet(x,y)Fori=1ToNx=x+LS*CS:y=y+LS*SN:OB.Line-(x,y)x=x+LK*CS:y=y+LK*SN:OB.PSet(x,y)x=x+LK*CS:y=y+LK*SN:OB.Line-(x,y)x=x+LK*CS:y=y+LK*SN:OB.PSet(x,y)NextiOB.Line-(x2,y2)EndSub程序如下:18功能:根据圆心坐标和半径,圆弧的起始角和终止角, 绘制虚线圆弧或圆。参数:X0,Y0-圆(弧)的圆心坐标 R-圆(弧)的半径 TS-圆弧的起始角,单位为度 TE-圆弧的终止角,单位为度实现方法: 虚线圆弧子程序的设计,是在圆弧子程序的基础上经过修改实现的。 在画圆弧时,空一段,连一段。三、虚线圆(弧)子程序设计19(1)计算短画弧长和间隔弧长分别对应的圆心角和:计算短画总数:计算每一短画弧长的起始角As与终止角Ae:(设I为循环控制变量,取值为0到(N-1))20Subxxy(x0,y0,R,Ts,Te,OBAsObject)PI=3.14159/180 HL=15 KL=5 AH=HL/R/PI AK=KL/R/PI N=Int((Te-Ts)/(AH+AK)) ForI=0ToN-1 As1=Ts+(AH+AK)*I AE1=As1+AH CallArc(x0,y0,R,As1,AE1,OB) NextIEndSub虚线圆(弧)子程序21第四节字符

字符在计算机图形处理技术中是必不可少的内容,任何图形的标注、说明都离不开字符。计算机键盘上虽有数字和字母,但这些字符在显示或打印时却不能改变其大小和旋转角度,给使用带来不便。因此,需要用户建立相应的字符库。字符在计算机内可用笔划(矢量)方式或点位图(点阵)方式来表示。它们的输入输出可以用基于字符发生器原理的硬件实现,也可以用基于编码技术的软件来实现。下面主要介绍使用编码技术来建立矢量型字符的方法。

矢量型字符是用一系列矢量代码表示字符的每一笔划。其最大特点是,字符的输出和变换比较简单,便于对字符进行放缩和旋转,便于在各种设备上输出。22写字模

选择一定大小的坐标网格,作为字符的界框。在此网格中写出某一字符,并采集其每一笔划两端点相对于坐标网格左下角(0,0)点的(X,Y)坐标值,如图中的字符A。确定字符的在字符库的编号定义字符在字符库中的唯一编号,该编号最好符合字符的排列规律,如按ASCII码排列。一、定义字符

矢量型字符是用一系列矢量代码表示字符的每一笔划。2324二、存储字符在字模中,每一字符是由一系列笔划写成的,而每一笔划都是一个矢量线段,把这些矢量线段的端点坐标存储起来,把每个字符的笔划数及字符宽度也存储起来。为减少抬笔和落笔的次数,提高书写字符的速度,应尽量把一些首尾相接的矢量线段作为折线处理,并且把每条折线定义为一个笔划,例如存储字符A的数学模型见下表25其字符库数据文件(zifu.txt)为:1,80,9,5,20,15,0,45,0,65,20,75,80,65,100,35,100,15,80,5,201,40,2,30,100,10,01,80,8,18,75,35,100,65,100,75,80,72,70,5,15,0,0,60,01,80,9,20,100,80,100,40,60,60,50,75,35,65,15,50,0,25,0,5,301,80,4,66,30,6,30,60,100,50,01,80,9,75,100,20,100,12,60,55,60,68,44,62,20,48,0,20,0,4,201,80,9,66,100,8,40,8,16,18,0,50,0,64,16,68,44,56,60,26,601,80,5,20,100,80,100,76,90,45,56,24,02,80,9,30,60,20,70,25,90,35,100,65,100,75,90,70,70,60,60,30,60,8,30,60,10,46,4,20,16,0,46,0,64,16,70,42,60,601,80,9,60,40,20,40,12,60,16,84,30,100,66,100,76,84,70,54,20,02,80,9,20,20,50,20,65,38,65,60,55,80,25,80,15,62,10,40,20,20,2,50,100,30,02,80,3,0,0,52,100,60,0,2,16,30,58,301,80,10,10,50,55,50,66,70,60,100,20,100,0,0,50,0,63,16,65,40,55,501,80,6,80,100,34,100,16,80,4,20,20,0,60,01,80,7,20,100,66,100,76,80,64,20,50,0,0,0,20,1002,80,4,80,100,20,100,0,0,60,0,2,10,50,60,502,80,3,80,100,20,100,0,0,2,10,50,60,501,80,8,80,100,30,100,16,80,4,20,20,0,60,0,70,50,50,502,80,4,20,100,0,0,10,50,70,50,2,80,100,60,01,80,2,50,100,30,01,80,4,60,100,44,20,30,0,0,0262,80,2,20,100,0,0,3,80,100,10,50,60,01,80,3,20,100,0,0,60,01,100,5,0,0,20,100,50,40,100,100,80,01,80,4,0,0,20,100,60,0,80,1001,80,9,4,20,14,0,46,0,64,20,76,80,66,100,34,100,16,80,4,201,80,7,10,50,60,50,72,60,78,90,70,100,20,100,0,02,80,9,4,20,14,0,46,0,64,20,76,80,66,100,34,100,16,80,4,20,2,40,30,70,02,80,7,10,50,60,50,72,60,78,90,70,100,20,100,0,0,2,45,50,60,01,80,10,78,90,66,100,30,100,18,90,14,76,66,30,62,10,50,0,10,0,2,102,80,2,20,100,80,100,2,50,100,30,01,80,6,20,100,4,20,10,0,50,0,62,10,80,1001,80,3,20,100,30,0,80,1001,100,5,20,100,0,0,56,70,80,0,100,1002,80,2,0,0,80,100,2,20,100,60,02,80,2,20,100,40,50,3,80,100,40,50,30,01,80,4,20,100,80,100,0,0,60,01,80,7,60,0,72,70,24,70,12,56,2,16,14,0,70,01,80,7,20,100,0,0,54,0,62,10,70,56,60,70,12,701,80,6,72,70,24,70,12,60,2,10,12,0,60,02,80,6,72,70,24,70,12,60,2,10,12,0,60,0,2,80,100,60,01,80,9,8,36,66,36,70,60,64,70,16,70,12,60,2,14,12,0,60,02,80,2,14,70,74,70,4,70,100,50,100,40,90,20,0271,80,7,60,0,14,0,4,16,14,70,74,70,52,-30,-4,-302,80,2,20,100,0,0,4,14,70,64,70,72,56,60,02,40,2,30,100,30,96,2,25,70,10,02,80,2,60,100,60,96,3,55,70,34,-30,6,-302,80,4,20,100,0,0,8,40,74,70,2,30,48,60,01,60,4,30,100,12,10,12,0,40,02,100,4,0,0,14,70,54,70,40,0,4,54,70,84,70,90,60,80,01,80,5,0,0,14,70,66,70,72,60,60,01,80,9,4,14,12,60,14,70,64,70,72,60,62,14,52,0,10,0,4,141,80,7,6,0,50,0,60,10,70,58,62,70,20,70,0,-301,80,7,60,0,15,0,7,10,17,60,25,70,75,70,54,-301,80,5,56,50,60,62,50,70,14,70,0,01,80,8,70,70,24,70,12,64,10,46,66,22,62,10,52,0,0,02,80,2,14,70,74,70,3,40,100,20,0,30,101,80,5,14,70,2,10,8,0,60,0,74,701,80,3,14,70,30,0,74,701,100,5,14,70,20,0,48,40,60,0,95,702,80,2,14,70,60,0,2,0,0,74,702,80,2,14,70,28,0,3,74,70,14,-30,-6,-301,80,4,14,70,74,70,0,0,60,028三、字符的提取

提取过程如下:求出字符串中每个字符的ASCⅡ码值V;确定该字符在字符库中的编号N;若字符库为:0~9、φ、A~Z、a~z则:N=V-U+1其中:当V≤57时U=48当V≥97时U=60当57<V<97时U=54进行一系列的坐标变换,计算出编码为N的字符中的每一个节点在用户坐标系中的坐标。29ASCII表01234567890NULSOHSTXETXEOTENQACKBELBSHT1LFVTFFCRSOSIDLEDC1DC2DC32DC4NAKSYNETBCANEMSUMESCFSGS3RSUS空格!“#$%&‘4()*+,-./01523456789:;126<=>?@ABCDE7FGHIJKLMNO8PQRSTUVWXY9Z[\]^_`abc10defghijklm11nopqrstuvwxyz{|}~^←ASCII码:0-9:48-57A-Z:65-90a-z:97-122Φ用@代替:6430四、字符串子程序设计程序流程图如下:31X0,Y0为旋转基点xs,ys为字符起点坐标M为缩放比例字符宽度ZK笔划数ZB笔画的点数ZD32Fori=1ToZB(Num)33SubZifu(xs,ys,A$,M,X0,Y0,A0,OB)‘X0,Y0为旋转基点,xs,ys为字符起点坐标,M为缩放比例DimMMAsString*1DimZB(63),ZK(63),ZD(63,3),XZ(63,3,10),YZ(63,3,10)AsIntegerOpen"D:\JIAOCAI\ZIFU.TXT"ForInputAs#1ForN=1To63’N为字符序号Input#1,ZB(N),ZK(N)‘读入字符的笔划数、字宽Fori=1ToZB(N)‘I为笔划序号Input#1,ZD(N,i)‘读入第N个字符的第I个笔划的折点数ForJ=1ToZD(N,i)‘J为折点序号Input#1,XZ(N,i,J),YZ(N,i,J)’读入第N字符第I笔划第J折点的坐标NextJNextiNextNClose#1字符串子程序34U=0:ST=0‘U为ASCII表中位于第N个字符前面而未收入字符库中的ASCII字符数目;ST为字符串的定位点坐标ForN=1ToLen(A$)’Len(A$)为字符串的长度MM=Mid$(A$,N,1):V=Asc(MM)‘MM为A$串中的第N个字符;V为该字符的ASCII值IfV<=57ThenU=48ElseIfV>=97ThenU=60ElseU=54num=V-U+1Ifnum>0ThenFori=1ToZB(num)ForJ=1ToZD(num,i)x=M*(XZ(num,i,J)+ST):y=M*YZ(num,i,J)x=x+xs:y=y+ysCallRotation(A0,X0,Y0,x,y,XRYR)‘x0,y0为旋转基点IfJ=1ThenOB.PSet(XR,YR)Else35OB.Line-(XR,YR)EndIfNextJNextiST=ST+ZK(num)‘下一字向后移ZKEndIfNextNEndSub36第五节尺寸标注尺寸标注是绘制工程图样的重要组成部分,标注尺寸的形式可以分成两种:线性尺寸和非线性尺寸。直线尺寸、直径和半径尺寸属于线性尺寸,角度尺寸属于非线性尺寸。37一、设计尺寸标注应满足的要求一个完整的尺寸由四部分组成:尺寸线、尺寸界限、箭头(或45°起止符号)和尺寸数字。因此设计尺寸标注通用子程序应能满足以下几点要求:1、可以实现箭头、45°起止符号、尺寸线、尺寸界限和尺寸数字的任意组合;2、可以实现任意方向的尺寸标注;3、可以书写任意大小、方向的尺寸数字。38二、尺寸标注的基本思想把尺寸线、尺寸界限、箭头(或45°起止符号)均视为彼此相关的一些二维图形,其中每一个图形都可以看成平面内众多点的集合。这个点集的点完全由参考点和形式参数通过计算进行确定,并把之放在某数组中,通过矩阵变换后再将点集中的点相应连接起来,即可实现尺寸线、尺寸界限、箭头(或45°起止符号)的绘制。39三、尺寸的标注形式1.直线尺寸2.圆的直径尺寸3.圆弧的直径尺寸4.圆弧的半径尺寸5.圆弧的大半径尺寸40四、尺寸标注程序设计举例1、直线尺寸标注子程序设计在设计上图所示尺寸标注形时,其形式参数应能满足画尺寸界限或不画尺寸界限,并能实现任意方向的尺寸标注等。在如图4-32所示的设计方案中,其形式参数的几何意义如下:X0,Y0-参考点的坐标;A0–尺寸线与X轴正向的夹角,单位为(°);L–尺寸线的长度;W–45°起止符号的长度;UL、DL–左端尺寸界限长度,其值可取正数、负数或零;UR、DR–右端尺寸界限长度,其值可取正数、负数或零。41SubCCLine(X0,Y0,l,A0,YC$,OB)Dimx(20),y(20)SC=1UL=20*SC:DL=8*SC:UR=20*SC:DR=8*SC:U=20*SC:W=4*SCSelectCaseYC$Case"YL","yl”:UL=0:DL=0Case"YR","yr”:UR=0:DR=0Case"YLR","ylr”:UL=0:DL=0:UR=0:DR=0EndSelectx(1)=X0:y(1)=Y0x(2)=X0:y(2)=Y0-UL-DLx(3)=x(1)+l:y(3)=Y0x(4)=x(3):y(4)=Y0-UR-DRx(5)=x(1):y(5)=Y0-Ux(6)=x(5)+l:y(6)=y(5)x(7)=x(5)-W:y(7)=y(5)-Wx(8)=x(5)+W:y(8)=y(5)+Wx(9)=x(7)+l:y(9)=y(7)x(10)=x(8)+l:y(10)=y(8)xx=x(5)+l/2-10:yy=y(5)+5B$=Str$(l)CallZifu(xx,yy,B$,0.1,X0,Y0,a0,OB)Fori=1To10CallRotation(a0,X0,Y0,x(i),y(i),xr,YR)Ifi=2*Int(i/2)ThendrawLine-(1,xr,YR,OB)Elsedrawline(0,xr,YR,OB)EndIfNextiEndSub422、半径尺寸标注子程序设计在设计半径尺寸标注形时,其形式参数应能满足画尺寸线的延伸线和水平引出线或不画尺寸线的延伸线和水平引出线,并能实现任意方向的半径尺寸标注等。在如图示的设计方案中,其形式参数的几何意义如下:(a)3426(5)1(b)半径尺寸形式参数X0,Y0-参考点(圆心)的坐标;A0–尺寸线与X轴正向的夹角,单位为度R–圆弧的半径长;W–箭头的长度;L–尺寸线的延伸线的长度;L0–水平引出线的长度,当L0>0时,水平引出线向右画线;当L0<0时,水平引出线向左画线;当L0=0时,不画水平引出线。43SubCR(X0,Y0,R,a0,TP$,OB)Dimx(20),y(20)B$="R"+Str$(R)V=2:L0=0:l=0IfR<20ThenW=0.5*RElseW=10IfTP$=“WP”OrTP$=“wp”ThenL0=30:l=30“WP”—界线外水平标注IfTP$="WX"OrTP$="wx"Thenl=30“WX”—界限外与尺寸线平行标注IfR>200ThenX0=X0+R-200:R=200x(1)=X0:y(1)=Y0x(2)=X0+R:y(2)=Y0x(3)=x(2)-W:y(3)=y(2)+Vx(4)=x(2)-W:y(4)=y(2)-Vx(5)=x(2):y(5)=y(2)x(6)=x(5)+l:y(6)=Y0Fori=1To6CallRotation(a0,X0,Y0,x(i),y(i),xr,YR)Ifi=1Thendrawline(0,xr,YR,OB)ElsedrawLine(1,xr,YR,OB)EndIfNextixx=xr+L0:yy=YR:CallDrawLINE(1,xx,yy,OB)SelectCaseTP$Case"WP","wp"xx=xx-L0/2-10:yy=yy+5:a0=0Case"WX","wx"xx=X0+R+5:yy=Y0+5CaseElsexx=X0+R/2-20:yy=Y0+5EndSelectCallZifu(xx,yy,B$,0.1,X0,Y0,a0,OB)EndSub44第六节图幅及标题栏45

1.图幅子程序设计图纸幅面及格式如下:竖装横装46根据幅面尺寸及格式,图幅子程序应能实现以下两点:1、仅需要输入图号,即可按国标规定进行绘制。2、图纸可以横放,也可以竖放。图纸

温馨提示

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

评论

0/150

提交评论