计算机图形学课程设计报告

上传人:靓*** 文档编号:62049496 上传时间:2022-03-13 格式:DOCX 页数:23 大小:527.30KB
收藏 版权申诉 举报 下载
计算机图形学课程设计报告_第1页
第1页 / 共23页
计算机图形学课程设计报告_第2页
第2页 / 共23页
计算机图形学课程设计报告_第3页
第3页 / 共23页
资源描述:

《计算机图形学课程设计报告》由会员分享,可在线阅读,更多相关《计算机图形学课程设计报告(23页珍藏版)》请在装配图网上搜索。

1、讨为%计算机图形学课程设计报告组号:第七组小组成员:宋洁邵海军谷文海冯新科学院:资源环境学院专业班级:地科14-2指导老师:向中林目录1实习目的2课程设计题目题目要求及内容要求内容分析实习原理人机交互动画几何变换二维几何图形变换三维几何图形变换:错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。3主要流程图三维图形处理流程图二维几何画板流程图4主要源程序错误键盘事件函数错误创建菜单函数光照函数几何变换事件旋转事件.移动事件.放大事件.缩小事件.误误误误误误错错错错错错错未7E义书签。

2、未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。5问题讨论1实习目的课程设计是信息与计算科学专业集中实践性环节之一,是学习完计算机图形学课程后进行的一次全面的综合练习。其目的是:(1)要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。(2)在实践中认识为什么要学习数据结构,掌握数据结构、程序设计语言、程序设计技术之间的关系,是前面所学知识的综合和回顾。要求(1)了解并掌握交互式图形系统的设计方法,具备初步的独立分析和设计能力;(2)初步

3、掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能;(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;(5)培养学生团结协作,共同完成相关课题的能力。2课程设计题目人机交互系统三维图形处理及动画实现题目要求及内容要求创建三维立体图形,通过创建菜单及键盘、鼠标事件实现对图形的人机交互式处理。在理解直线、圆、区域填充、图形裁剪等理论知识的基础上,借助于程序设计语言VC+和OpenGL三维图形库进行小型图形应用软件或三维场景的开发。本课程课程设计注重图形交互处理的主要实现

4、,包括如下几部分:三维立体图形人机交互的处理,主要内容包括以下几点:(1)创建菜单及键盘事件实现对图形的基本处理;(2)平移、缩放、旋转等计算机图形的几何变换;(3)图形的裁剪;(4)平面投影和透视投影;(5)消隐和光照处理;(6)动画的绘制及实现。附:二维图形的绘制主要内容包括以下几点:(1)点、线、圆、多边形、Bezier曲线等计算机基本图元的的绘制;(2)点、线、圆、多边形、Bezier曲线等计算机基本图元属性的设置。内容分析定义三维齐次坐标结构和面的结构;定义各图形绕轴旋转的结构及各坐标轴的放缩结构;定义各个光源的属性及材质表面的属性;定义键盘输入及鼠标输入对应响应的事件;定义各菜单对

5、应执行的响应事件;通过双缓存技术实现动画效果。实习原理人机交互人机交互主要包括鼠标输入、键盘输入以及创建菜单执行对应的处理事件,其基本原理如下:鼠标:1)检测鼠标ClicksGLUT为处理鼠标clicks事件提供了一个方法。函数glutMouseFunc,这个函数一般在程序初始化阶段被调用。函数原型如下:voidglutMouseFunc(void(*func)(intbutton,intstate,intx,inty);参数:func:处理鼠标click事件的函数的函数名。从上面可以看到到,处理鼠标click事件的函数,一定有4个参数。第一个参数表明哪个鼠标键被按下或松开,这个变量可以是下面

6、的三个值中的一个:GLUT_LEFT_BUTTONGLUT_MIDDLE_BUTTONGLUT_RIGHT_BUTTON第二个参数表明,函数被调用发生时,鼠标的状态,也就是是被按下,或松开,可能取值如下:GLUT_DOWNGLUT_UP当函阪赖调用时,state的值是GLUT_DOWN,那么程序可能会假定将会有个GLUT_UP事件,甚至鼠标移动到窗口外面,也如此。然而,如果程序调用glutMouseFunc传递NULL作为参数,那么GLUT将不会改变鼠标的状态。剩下的两个参数(x,y)提供了鼠标当前的窗口坐标(以左上角为原点)。2)检测动作(motion)GLUT提供鼠标motion检测能力。

7、有两种GLUT处理的motion:activemotion和passivemotion。Activemotion是指鼠标移动并且有一个鼠标键被按下。Passivemotion是指当鼠标移动时,并有没鼠标键按下。如果一个程序正在追踪鼠标,那么鼠标移动期间,每一帧将产生一个结果。GLUT让我们可以指定两个不同的函数,一个追踪passivemotion,另一个追踪activemotion。它们的函数原型,如下:voidglutMotionFunc(void(*func)(intx,inty);voidglutPassiveMotionFunc(void(*func)(intx,inty);参数:Fu

8、nc:处理各自类型motion的函数名。处理motion的参数函数的参数(x,y)是鼠标在窗口的坐标。以左上角为原点。3)检测鼠标进入或离开窗口GLUT还能检测鼠标鼠标离开,进入窗口区域。一个回调函数可以被定义去处理这两个事件。GLUT里,调用这个函数的是glutEntryFunc,函数原型如下:voidglutEntryFunc(void(*func)(intstate);参数:Func:处理这些事件的函数名。上面函数的参数中,state有两个值:GLUT_LEFTGLUT_ENTERED表明,是离开,还是进入窗口。键盘:当你按下一个键后,GLUT提供了两个函数为这个键盘消息注册回调。1)

9、第一个是glutKeyboardFunc。这个函数是告诉窗口系统,哪一个函数将会被调用来处理普通按键消息。普通键是指字母,数字,和其他可以用ASCII代码表示的键。函数原型如下:voidglutKeyboardFunc(void(*func)(unsignedcharkey,intx,inty);参数:func:处理普通按键消息的函数的名称。如果传递NULL,则表示GLUT忽略普通按键消息。这个作为glutKeyboardFunc函数参数的函数需要有三个形参。第一个表示按下的键的ASCII码,其余两个提供了,当键按下时当前的鼠标位置。鼠标位置是相对于当前客户窗口的左上角而言的。2) GLUT提

10、供函数glutSpecialFunc以便当有特殊键按下的消息时,你能注册你的函数。函数原型如下:voidglutSpecialFunc(void(*func)(intkey,intx,inty);参数:func:处理特殊键按下消息的函数的名称。传递NULL则表示GLUT忽略特殊键消息。菜单:弹出式菜单(像点鼠标右键出来的菜单那样的)也是GLUT的一部分,虽然它不能实现我们经常看到的windows系统弹出式菜单的所有的功能,但是它也有很大的作用。给一个程序增加菜单提供了一个比键盘更简单的方法来和程序交互,选择不同选项,而不用去记那些按键。1)创建菜单:创建菜单函数glutCreateMenu的原

11、型如下:intglutCreateMenu(void(*func)(intvalue);参数:func:为新建的菜单处理菜单事件的函数名。这个函数的返回值是菜单的标识符(menuidentifier)。3) 菜单增加条目:出来个空菜单也没什么用,使用的函数是glutAddMenuEntry:voidglutAddMenuEntry(char*name,intvalue);参数:name:菜单名称的字符串。value:当你选择菜单里的一项后,这个值就返回给上面的glutCreateMenu里调用的函数。3)联接鼠标:必须指定菜单怎么出现,使用GLUT你可以在按下一个鼠标按键后让菜单显示,函数是g

12、lutAttachMenu:voidglutAttachMenu(intbutton);参数:button:一个整数,指定菜单和哪个鼠标键关联起来。botton可以去下面的值;GLUT_LEFT_BUTTONGLUT_MIDDLE_BUTTONGLUT_RIGHT_BUTTON用glutAttachMenu来在鼠标和菜单间建立关联,但我们有时候需要断开这种关联。完成这个工作的函数是glutDetachMenu。函数原型如下:voidglutDetachMenu(intbutton);参数:button:要断开的鼠标按键。Button的取值和glutAttachMenu一样。最后,如果你想恢复被

13、菜单使用了的资源,我们可以销毁(destroy)它,相应的函数是glutDestroyMenu,它的原型如下:voidglutDestroyMenu(intmenuIdentifier);参数:menuIdentifier:要销毁的菜单的标识符,它必须和函数glutCreateMenu返回的值相同。4)子菜单的建立:和我们前面用的建立菜单的函数一样。建立菜单后我们把子菜单作为一个条目添加进去。使用函数glutAddSubMenu来完成这项工作:voidglutAddSubMenu(char*entryName,intmenuIndex);参数:entryName:子菜单名称。menuIndex

14、:子菜单索引,这个就是我们调用glutCreateMenu来创建子菜单返回的值。动画计算机动画与实际的动画有些不同,实际的动画都是先画好,播放的时候直接显示出来,计算机动画则是一边画一边显示,通过双缓存技术将后台绘制好的图形与前台图形交换,这样循环反复,屏幕上便呈现出我们所看到的动画。计算机实现动画主要启动双缓冲功能,在主函数里启用双缓冲:glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);当每次绘制完成时,我们需要交换两个缓冲区,把绘制好向信息显示到屏幕。为了完成这一工作,我们在绘图函数里调用glutSwapBuffers()便很好的实现

15、了动画前台与后台的光滑交换显示,达到了动画效果。几何变换二维几何图形变换对于几何变换主要通过与变换矩阵的矩阵运算改变顶点坐标(用齐次坐标)来实现:abpxyHxy1cdqmns:对图形进行缩放、旋转、对称、错切等变换cdmn:对图形进行平移变换。p:对图形做投影变换。q,1.,、,.一,p:在x一处产生一个火点。p,1一、,一,q:在y处产生一个火点。qs:对整体图形进行伸缩变换。100x*y*1xy101000s若s1,则总体缩小;否则,总体放大。例如:Sx0(1)放缩:SC0Sycossin2)旋转:sincos(3)关于x轴对称:x4)关于原点对称:y x10xx10xy010 1 x

16、yxy01x cyyc15)沿 X 轴方向的错切变换:三维几何图形变换三维几何图形变换原理同二维几何图形变换,只是采用的变换矩阵为4X4矩阵,空间点xyz采用四维齐次坐标XYZ1表示。2、OpenGL环境下的几何变换基本变换函数:(1)平移矩阵构造函数为glTranslate(tx,ty,tz),作用是把当前矩阵和一个表示移动物体的矩阵相乘。tx,ty,tz指定这个移动物体的矩阵,它们可以是任意的实数值,后缀为f(单精度浮点float)或d(双精度浮点double),对于二维应用来说,tz=。(2)旋转矩阵构造函数为glRotate(theta,vx,vy,vz),作用是把当前矩阵和一个表示旋

17、转物体的矩阵相乘。theta,vx,vy,vz指定这个旋转物体的矩阵,物体将绕着(0,0,0)到(x,y,z)的直线以逆时针旋转,参数theta表示旋转的角度。向量v=(vx,vy,vz)的分量可以是任意的实数值,该向量用于定义通过坐标原点的旋转血的方向,后缀为f(单精度浮点float)或d(双精度浮点double),对于二维旋转来说,vx=,vy=,vz=。(3)缩放矩阵构造函数为glScale(sx,sy,sz),作用是把当前矩阵和一个表示缩放物体的矩阵相乘。sx,sy,sz指定这个缩放防体的矩阵,分别表示在x,y,z方向上的缩放比例,它们可以是任意的实数值,当缩放参数为负值时,该函数为反

18、射矩阵,缩放相对于原点进行,后缀为f(单精度浮点float)或d(双精度浮点double)。假设当前矩阵为单位矩阵,然后先乘以一个表示旋转的矩阵R,再乘以一个表示移动的矩阵T,最后得到的矩阵再乘上每一个顶点的坐标矩阵v。那么,经过变换得到的顶点坐标就是(RT)v)。由于矩阵乘法满足结合率,(RT)v)=R(Tv),换句话说,实际上是先进行移动,然后进行旋转。即:实际变换的顺序与代码中写的顺序是相反的。由于“先移动后旋转”和“先旋转后移动”得到的结果很可能不同,初学的时候需要特别注意这一点。由于模型变换都通过矩阵运算来实现,在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”。设置的方法是以G

19、L_MODELVIEW为参数调用glMatrixMode函数,像这样:glMatrixMode(GL_MODELVIEW);该语句指定一个4x4的建模矩阵作为当前矩阵。通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。把当前矩阵设置为单位矩阵的函数为:glLoadIdentity();我们在进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复它。当我们需要保存时,调用glPushMatrix()函数,它相当于把当前矩阵压入堆栈。当需要恢复最近一次的保存时,调用glPopMatrix()函数,它相当于从堆栈栈顶弹出一个矩阵为当前矩阵。OpenGL规定堆栈的容量至少可以容纳32个矩阵,某些

20、OpenGL实现中,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。通常,用这种先保存后恢复的措施,比先变换再逆变换要更方便,更快速。注意:模型视图矩阵和投影矩阵都有相应的堆栈。使用glMatrixMode来指定当前操作的究竟是模型视图矩阵还是投影矩阵。OpenGL环境下三维图形变换相关函数:( 1) glMatrixMode(GLenummode)/设置当前矩阵类型( 2) glLoadMatrixfd(constTYPE*m)/用指定的矩阵替换当前矩阵( 3) glLoadIdentity(void)用单位矩阵替换当前矩阵( 4) glMultMatrixfd(constTY

21、PE*m)/用当前矩阵去乘*m所指定的矩阵,并将结果存放与*m中( 5) glTranslatefd(TYPEx,TYPEy,TYPEz)/平移变换函数( 6) glRotatefd(TYPEangle,TYPEx,TYPEy,TYPEz)/旋转变换函数( 7) glScalefd(TYPEx,TYPEy,TYPEz)/缩放和反射变换函数( 8) glPushMatrix(void);glPopMatrix(void);/堆栈操作函数3主要流程图三维图形处理流程图程序开始图3-1三维图形处理流程图二维几何画板流程图程序开始图3-2二维几何画板流程图4主要源程序主要源程序程序主要由绘制图形、创建

22、菜单、添加光照、几何变换及视点等基本功能组成,程序实现由以下几个基本图形绘制程序:voidmyDisplay(void)glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glPushMatrix();glTranslated(0,0,-60);立方体();球();月亮();路面();仓库();房子();太阳();行星();天桥();glPopMatrix();glFlush();glutSwapBuffers();视点设置:gluLookAt(-1,-1,1,-1,1,1,0,0,1);/XOZ面gluLookAt(-1,-1,1,-1,-1,0

23、,0,1,0);/XOY面光照设置:glEnable(GL_LIGHTING);/启动光照glDisable(GL_LIGHTING);/关闭光照注册鼠标事件:glutMotionFunc(myMouseMotion_旋转);glutMotionFunc(myMouseMotion_移动);glutMouseFunc(myMouse_M大);glutMouseFunc(myMouse_小);主函数:intmain(intargc,char*argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH)

24、;glutInitWindowPosition(300,50);glutInitWindowSize(winWidth,winHeight);glutCreateWindow(计算机图形处理课程设计三维图形处理);init();init1();glutDisplayFunc(&myDisplay);glutReshapeFunc(Reshape);createGLUTMenus();glutKeyboardFunc(keyboard);glutIdleFunc(&myAnimate);/设置全局空闲回调函数glutMainLoop();return0;图4-1三维图形处理运行初始图形键盘事件函

25、数voidkeyboard(unsignedcharkey,intx,inty)switch(key)casey:year=(year+1)%360;if(year=2*(int)(acos/*180/PI)year=-year;glutPostRedisplay();break;caseY:year=(year-1)%360;if(year=-2*(int)(acos/*180/PI)year=-year;glutPostRedisplay();break;default:break;图4-2键盘事件运行图菜单创建菜单函数voidprocessMenuEvents(intoption)swi

26、tch(option)case,恢复:glutMouseFunc(NULL);glutMotionFunc(NULL);glDisable(GL_LIGHTING);init1();break;case旋转:glutMouseFunc(NULL);glutMotionFunc(myMouseMotion_旋转);break;case移动:glutMouseFunc(NULL);glutMotionFunc(myMouseMotion_移动);break;case启动光照:glEnable(GL_LIGHTING);break;case关闭光照:glDisable(GL_LIGHTING);br

27、eak;case放大:glutMotionFunc(NULL);glutMouseFunc(myMouse_M大);break;case缩小:glutMotionFunc(NULL);glutMouseFunc(myMouse_小);break;caseXOZH:glLoadIdentity();gluLookAt(-1,-1,1,-1,1,1,0,0,1);break;caseXOY面:glLoadIdentity();gluLookAt(-1,-1,1,-1,-1,0,0,1,0);break;default:break;voidcreateGLUTMenus()intmenu,subme

28、nu1,submenu2,submenu3;submenu1=glutCreateMenu(processMenuEvents);glutAddMenuEntry(启动光照,启动光照);glutAddMenuEntry(关闭光照,关闭光照);submenu2=glutCreateMenu(processMenuEvents);glutAddMenuEntry(旋转,旋转);glutAddMenuEntry(移动,移动);glutAddMenuEntry(放大,放大);glutAddMenuEntry(缩小,缩小);submenu3=glutCreateMenu(processMenuEvent

29、s);glutAddMenuEntry(XOZ面,XOZ面);glutAddMenuEntry(XOY面,XOY面);menu=glutCreateMenu(processMenuEvents);glutAddSubMenu(环境设置,submenul);glutAddSubMenu(几何变换,submenu2);glutAddSubMenu(视图设置,submenu3);glutAddMenuEntry(恢复,恢复);glutAttachMenu(GLUT_RIGHT_BUTTON);图4-3创建菜单运行图光照函数voidinit()GLfloatlight1_ambient口=一,;GLf

30、loatlight1_diffuse=,;GLfloatlight1_specular口=,;GLfloatlight1_position口=,;GLfloatlight2_ambient口=一,;GLfloatlight2_diffuse=,一;GLfloatlight2_specular口=,;GLfloatlight2_position口=一,;GLfloatlight3_ambient口=一,;GLfloatlight3_diffuse=,一;GLfloatlight3_specular口=,;GLfloatlight3_position=,;GLfloatspot0_directio

31、n=,;GLfloatspot3_direction=,;glLightfv(GL_LIGHT1,GL_AMBIENT,light1_ambient);glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse);glLightfv(GL_LIGHT1,GL_SPECULAR,light1_specular);glLightfv(GL_LIGHT1,GL_POSITION,light1_position);glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,;glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,;glLight

32、fv(GL_LIGHT1,GL_SPOT_DIRECTION,spot0_direction);glLightfv(GL_LIGHT2,GL_AMBIENT,light2_ambient);glLightfv(GL_LIGHT2,GL_DIFFUSE,light2_diffuse);glLightfv(GL_LIGHT2,GL_SPECULAR,light2_specular);glLightfv(GL_LIGHT2,GL_POSITION,light2_position);glLightf(GL_LIGHT2,GL_SPOT_CUTOFF,;glLightf(GL_LIGHT2,GL_SPO

33、T_EXPONENT,;glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,spot0_direction);glLightfv(GL_LIGHT3,GL_AMBIENT,light3_ambient);glLightfv(GL_LIGHT3,GL_DIFFUSE,light3_diffuse);glLightfv(GL_LIGHT3,GL_SPECULAR,light3_specular);glLightfv(GL_LIGHT3,GL_POSITION,light3_position);glLightf(GL_LIGHT3,GL_SPOT_CUTOFF,;glLigh

34、tf(GL_LIGHT3,GL_SPOT_EXPONENT,;glLightfv(GL_LIGHT3,GL_SPOT_DIRECTION,spot3_direction);/GLfloatmat_ambient=,;GLfloatmat_diffuse=,;GLfloatmat_specular=,;GLfloatmat_shininess=;glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,m

35、at_specular);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);/glEnable(GL_LIGHTING);/启动光照,菜单控制启动光照glEnable(GL_LIGHT1);glEnable(GL_LIGHT2);glEnable(GL_LIGHT3);glDepthFunc(GL_LESS);glEnable(GL_DEPTH_TEST);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);图4-4添加光照运行图几何变换事件旋转事件voidmyMouseMotion_旋转(GLin

36、tx,GLinty)m_xRotate=cx-x;m_yRotate=cy-y;cx=x,cy=y;glMatrixMode(GL_MODELVIEW);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glRotated(3*m_xRotate+4*m_yRotate)/2,;图4-5旋转事件运行图移动事件voidmyMouseMotion_移动(GLintx,GLinty).tcx=x-cx,tcy=y-cy;glMatrixMode(GL_MODELVIEW);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUF

37、FER_BIT);glTranslatef(tcx,0,0);glTranslatef(0,0,-tcy);cx=x,cy=y;图4-6移动事件运行图放大事件voidmyMouse_fct(intbutton,intstate,intx,inty).glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);if(button=GLUT_LEFT_BUTTON&state=GLUT_DOWN)glScalef(i*,i*,i*;图4-7放大事件运行图缩小事件voidmyMouse_/b(intbutton,intstate,intx,inty).glCle

38、ar(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);if(button=GLUT_LEFT_BUTTON&state=GLUT_DOWN)glScalef(i/,i/,i/;图4-8缩小事件运行图5问题讨论绘制动画时出现图形闪烁,如何解决这一问题通过组员讨论,发现在主函数中设置的初始显示模式为单缓冲模式(GLUT_SINGLE),图形绘制复杂时绘制相对缓慢,使用单缓冲模式,计算机一边绘制:应显示,导致人眼暂留在未绘制完成的残缺图像上,未看到完整图像,造成了屏幕闪烁。当修改为双缓存(GLUT_DOUBLE)时,并在每一个图形绘制子函数最后调用glutSwapBuffers,当再次执行程序时屏幕闪烁却加强了,问题又出现在哪里呢多次分析绘图函数,原来当每一个绘图子函数都调用glutSwapBuffers时导致每次绘制完成一个子图形时后面的图形还未开始绘制就将当前绘制完成的子图形显示出来,而当下一个子图形绘制完成时才开始显示图形,致使屏幕闪烁。最终将glutSwapBuffers只在绘图主函数(myDisplay(void)中调用时屏幕不再闪烁,顺畅的显示出来动画效果。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!