版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 用Visual Basic 编写交互式三维图形程序本章论述如何使用Visual Basic 和Intra3D 的COM 库来编写交互式3D 应用程序。Visual Basic版本与Visual C+版本的3D 示例程序功能完全一样,但各有优缺点。程序复杂性方面,Visual Basic版本的3D 程序要比Visual C+版本的简单。速度方面,Visual Basic 版本的3D 程序则比Visual C+版本的慢。7.1 编译器设置与示例程序说明四个示例程序存放于Intra3D 标准版软件的ExamplesVisualBasic目录下。为了能编译这些示例程序,首先应正确引用Intra
2、3D.ocx 、OglWindow.ocx 与OpenGL.ocx 三个COM 库文件。Intra3D 的安装程序将上述三个COM 库文件安装到Windows 的System 目录下。由于Intra3D.ocx 与OglWindow.ocx 含有ActiveX 控件,应在Visual Basic的Components 属性中添加Intra3D.ocx 与OglWindow.ocx ,如图7.1所示。OpenGL.ocx 不含有ActiveX 控件,应在Visual Basic的Refrences 属性中添加OpenGL.ocx ,如图7.2所示。每个示例程序的工程文件为Project.vbp
3、,可执行文件为App.exe 。Project.vbp 含三个文件(如图7.3所示):(1)frmMain.frm 为主界面程序,使用SceneView 控件交互式绘制场景; (2)frmAbout 为About 对话,使用OglWindow 控件实现图标的3D 动画; (3)Scene.bas 用于创建场景的Scene Graph。图7.1 在Components 属性中添加Intra3D.ocx 与OglWindow.ocx 图7.2 在Referencs 属性中添加OpenGL.ocx图7.3 工程文件Project.vbpApp.exe 可用Visual Basic的Make Proj
4、ect菜单生成,如图7.4所示。注意不要用Visual Basic 的Start 菜单运行示例程序。这是因为Start 菜单是以解释方式运行程序的,往往不能正确运行交互式的3D 应用程序。图7.4 生成可执行程序App.exe 7.2 示例程序之一:简单图形对象示例程序存放于ExamplesVisualBasicSimpleObjects目录下,主要演示:(1)简单图形对象的使用;(2)材质对象与材质对话的使用;(3)光源节点与光源对话的使用;(4)编辑背景颜色、多重采样削锯齿、标准三维交互、辅助三维交互等功能的实现。 使用Visual Basic 开发用户界面非常方便,frmMain.frm
5、 的界面如图7.5所示。图7.5中“白色”的控件名为AppView ,是Intra3D 的SceneView 类型的控件;程序运行时,AppView 的窗口将扩大覆盖frmMain 的用户区,3D 图形绘制在AppView 的窗口中,如图.6所示。图7.5 示例程序SimpleObject 的frmMain图7.6 示例程序SimpleObject 的主界面 全局对象与Scene Graph 定义在Scene.bas 程序中,在程序结束时Visual Basic 将自动释放这些对象。用Visual Basic的Object Browser工具可以浏览COM 对象的编程接口,如图7.7所示。图7
6、.7 用Object Browser 浏览COM 对象的编程接口Option ExplicitPublic ogl As New OpenGL OpenGL对象 材质对象 长方体对象 锥体对象 圆柱体对象 球体对象 圆环体对象 形体节点 相机节点 平行光源节点 点光源节点 锥光源节点 组节点Public m_pMaterial As New Material Public m_pBox As New BoxObjectPublic m_pCone As New ConeObjectPublic m_pCylinder As New CylinderObject Public m_pSphere
7、 As New SphereObject Public m_pTorus As New TorusObject Public m_pShape As New ShapeNode Public m_pCamera As New CameraNode Public m_pLight0 As New DirLightNodePublic m_pLight1 As New PointLightNode Public m_pLight2 As New SpotLightNode Public m_pGroup As New GroupNode函数CreateScene 用于创建Scene Graph ,
8、AppView 将引用组节点m_pGroup。 要注意节点的初始化:每个节点均有一个缺省接口和一个继承接口(ISceneNode ),所以节点的初始化信息必须由两个接口分别设置。例如形体节点m_pShape的缺省接口为IShapeNode ,继承接口为ISceneNode 。以下语句可以获得形体节点的ISceneNode 接口,功能相当于 C+ 中的QueryInterface 函数:Dim node As SceneNodeSet node = m_pShape 相当于 C+ 中的QueryInterface 函数当一个COM 对象含有多个接口时,均可用上述方法获取各个接口。Public S
9、ub CreateScene(- 初始化材质对象 - m_pMaterial.ReadMaterialFromLib MAT_ARTDECO_03- 初始化长方体对象 - m_pBox.SetBox 3, 3, 3, 0, 0, 0 m_pBox.SetDrawMode SOLID m_pBox.SetMaterial m_pMaterial- 初始化锥体对象 - m_pCone.SetCone 2, 4 m_pCone.SetDrawMode SOLID m_pCone.SetMaterial m_pMaterial- 初始化圆柱体对象 - m_pCylinder.SetCylinder 2
10、, 4 m_pCylinder.SetDrawMode SOLID m_pCylinder.SetMaterial m_pMaterial- 初始化球体对象 -m_pSphere.SetSphere 2, 32 m_pSphere.SetDrawMode SOLID m_pSphere.SetMaterial m_pMaterial- 初始化圆环体对象 - m_pTorus.SetTorus 2, 3 m_pTorus.SetDrawMode SOLIDm_pTorus.SetMaterial m_pMaterial- 用于获取场景节点的 ISceneNode 接口 -Dim node As
11、SceneNode- 初始化形体节点 - Set node = m_pShape node.SetName Shape 使用m_pShape的ISceneNode 接口node.SetPosition 0, 0, 0node.SetRotation 0, 1, 0, 0node.SetScale 1, 1, 1node.SetTranslateStep 0.1node.SetRotateStep 4node.SetScaleStep 0.1m_pShape.SetGraphicalObject m_pSphere 使用m_pShape的IShapeNode 接口m_pShape.SetBoun
12、dColor 0.8, 0.8, 0.8- 初始化相机节点 -Set node = m_pCameranode.SetName Cameranode.SetPosition 0, 0, 20node.SetRotation 0, 1, 0, 0node.SetScale 1, 1, 1node.SetTranslateStep 0.1node.SetRotateStep 1node.SetScaleStep 0.1m_pCamera.SetProjectionMode PERSPECTIVE 使用m_pCamera的ICameraNode 接口 m_pCamera.SetViewVolume
13、30, 1, 100, 20- 初始化平行光源节点 -Set node = m_pLight0node.SetName DirLightnode.SetPosition 3, 0, 5node.SetRotation 30, 0, 1, 0node.SetScale 1, 1, 1m_pLight0.SetColor 0, 0, 1 使用m_pLight0的IDirLightNode 接口 使用m_pLight0的ISceneNode 接口 使用m_pCamera的ISceneNode 接口m_pLight0.SetDiffuseIntensity 0.8m_pLight0.SetAmbien
14、tIntensity 0.1m_pLight0.SetSpecularIntensity 1m_pLight0.TurnOnm_pLight0.ShowShape- 初始化点光源节点 -Set node = m_pLight1node.SetName PointLightnode.SetPosition -2, -2, 2node.SetRotation 0, 1, 0, 0node.SetScale 1, 1, 1159 使用m_pLight1的ISceneNode 接口m_pLight1.SetColor 1, 0, 0 使用m_pLight1的IPointLightNode 接口m_pL
15、ight1.SetDiffuseIntensity 0.8m_pLight1.SetAmbientIntensity 0.1m_pLight1.SetSpecularIntensity 1m_pLight1.TurnOnm_pLight1.ShowShape- 初始化锥光源节点 -Set node = m_pLight2node.SetName SpotLightnode.SetPosition 0, 4, 2node.SetRotation -60, 1, 0, 0node.SetScale 1, 1, 1m_pLight2.SetColor 0, 1, 0 使用m_pLight2的ISpo
16、tLightNode 接口 使用m_pLight2的ISceneNode 接口m_pLight2.SetDiffuseIntensity 0.8m_pLight2.SetAmbientIntensity 0.1m_pLight2.SetSpecularIntensity 1m_pLight2.SetCutoffAngle 60m_pLight2.TurnOnm_pLight2.ShowShape- 初始化组节点 -Set node = m_pGroupnode.SetName pGroupm_pGroup.AddChild m_pCameram_pGroup.AddChild m_pLight
17、0m_pGroup.AddChild m_pLight1m_pGroup.AddChild m_pLight2m_pGroup.AddChild m_pShapeEnd Sub 使用m_pGroup的IGroupNode 接口 使用m_pGroup的ISceneNode 接口Public Sub ControlAnimate(Dim node As SceneNodeSet node = m_pShapenode.Rotate 5, 1, 0, 0End Sub 使用m_pShape的ISceneNode 接口 函数ControlAnimate 用于控制场景的动画,以下程序使形体节点绕X 轴旋
18、转,角度步长为5度:160一、场景与窗口的初始化当应用程序的窗口尺寸发生变化时,控件AppView 的窗口也作相应的变化,由函数Form_Resize实现。其中tbStandard 是标准交互工具条,tbDetailed 是辅助交互工具条,tbApp 是其它用途的工具条。Private Sub Form_Resize(If (Me.WindowState = 1 Then Exit Sub 最小化AppView.Move tbApp.Width, tbStandard.Height,Me.ScaleWidth - tbApp.Width - tbDetailed.Width - 3, _End
19、 SubMe.ScaleHeight - tbStandard.Height函数AppView_InitScene与AppView_ControlAnimate均是控件AppView 的事件。AppView_InitScene用于初始化场景,AppView_ControlAnimate用于控制场景的动画。Private Sub AppView_InitScene(ogl.glDepthFunc GL_Lessogl.glEnable GL_DEPTH_TESTogl.glEnable GL_NORMALIZEogl.glEnable GL_LIGHTINGCreateSceneAppView.
20、SetClearColor 0, 0, 0, 1AppView.SetSceneRoot m_pGroupEnd SubPrivate Sub AppView_ControlAnimate(ControlAnimateEnd Sub二、改变形体节点的图形对象- 引用长方体对象 -Private Sub mnuBox_Click(m_pShape.SetGraphicalObject m_pBoxAppView.RunEnd Sub161 形体节点的函数SetGraphicalObject 可引用图形对象。本例中有5个图形对象可以分别被形体节点引用。- 引用锥体对象 -Private Sub m
21、nuCone_Click(m_pShape.SetGraphicalObject m_pConeAppView.RunEnd Sub- 引用圆柱体对象 -Private Sub mnuCylinder_Click(m_pShape.SetGraphicalObject m_pCylinderAppView.RunEnd Sub- 引用球体对象 -Private Sub mnuSphere_Click(m_pShape.SetGraphicalObject m_pSphereAppView.RunEnd Sub- 引用圆环体对象 -Private Sub mnuTorus_Click(m_pSh
22、ape.SetGraphicalObject m_pTorusAppView.RunEnd Sub三、编辑材质编辑材质是使用CommonDialog 对象的EditMaterialDialog 函数实现的。Private Sub EditMaterial(Dim dialog As New CommonDialogDim flag As Longflag = dialog.EditMaterialDialog(Edit Material, m_pMaterialIf flag Then AppView.RunEnd Sub四、编辑光源- 编辑平行光源 -Private Sub EditDirL
23、ight(Dim dialog As New CommonDialogDim flag As Longflag = dialog.EditDirLightDialog(Edit DirLight, m_pLight0162 编辑光源是使用CommonDialog 对象的EditDirLightDialog 、EditPointLightDialog 与EditSpotLightDialog 函数实现的。If flag Then AppView.RunEnd Sub- 编辑点光源 -Private Sub EditPointLight(Dim dialog As New CommonDialog
24、Dim flag As Longflag = dialog.EditPointLightDialog(Edit PointLight, m_pLight1If flag Then AppView.RunEnd Sub- 编辑锥光源 -Private Sub EditSpotLight(Dim dialog As New CommonDialogDim flag As Longflag = dialog.EditSpotLightDialog(Edit SpotLight, m_pLight2If flag Then AppView.RunEnd Sub五、编辑背景颜色编辑材质是使用Common
25、Dialog 对象的EditColorDialog 函数实现的。Private Sub EditClearColor(Dim red As Single, green As Single, blue As Single, alpha As SingleAppView.GetClearColor red, green, blue, alpha 获取背景颜色 - 颜色对话 - Dim dialog As New CommonDialogDim flag As Longflag = dialog.EditColorDialog(Edit Background Color, red, green, b
26、lue If flag ThenAppView.SetClearColor red, green, blue, alphaAppView.RunEnd IfEnd Sub 设置背景颜色六、多重采样消锯齿函数mnuAntialiasing_Click用于实现场景的消锯齿。Private Sub mnuAntialiasing_Click(Dim flag As LongDim times As EnumJitterTimesAppView.GetAntialiasingInfo flag, times163If flag ThenAppView.DisableAntialiasingmnuAnt
27、ialiasing.Checked = FalseElseAppView.EnableAntialiasing JITTER_TIMES_4mnuAntialiasing.Checked = TrueEnd IfAppView.RunEnd Sub 启用Antialiasing 取消Antialiasing七、保存图像函数OnSaveAsBMP 将窗口中的3D 图形保存为BMP 图像,图像文件名为temp.bmp 。Private Sub mnuSave_Click(AppView.SaveAsBMP temp.bmpEnd Sub八、标准3D 交互Private Sub tbStandard
28、_ButtonClick(ByVal Button As MSComctlLib.Button- 匹配15个标准交互函数 -Select Case Button.KeyCase AnimateAppView.OnToggleAnimateCase SelectAppView.OnMouseSelectCase TranslateXYAppView.OnMouseTranslateXYCase TranslateXZAppView.OnMouseTranslateXZCase TrackballAppView.OnMouseRotateCase RotateLRAppView.OnMouseRo
29、tateLeftRightCase RotateUDAppView.OnMouseRotateUpDownCase RotateCWAppView.OnMouseRotateCWCCW164 SceneView 控件定义了的15个标准交互函数,这些函数与工具条tbStandard 的15个Button 对应。Case ScaleUpAppView.OnScaleUpCase ScaleDownAppView.OnScaleDownCase ZoomOutAppView.OnZoomOutCase ZoomInAppView.OnZoomInCase PerspectiveAppView.OnP
30、erspectiveCase OrthoAppView.OnOrthoCase ResetAppView.OnResetEnd Select- 设置工具条Button 的状态 - 动画状态 -If AppView.IsAnimateEnabled( ThentbStandard.Buttons(Animate.Value = tbrPressedElsetbStandard.Buttons(Animate.Value = tbrUnpressedEnd If- 投影模式 -If AppView.ProjectionMode = PERSPECTIVE ThentbStandard.Button
31、s(Perspective.Value = tbrPressedtbStandard.Buttons(Ortho.Value = tbrUnpressedElsetbStandard.Buttons(Perspective.Value = tbrUnpressedtbStandard.Buttons(Ortho.Value = tbrPressedEnd If- 互斥的鼠标直接交互(7个) -Dim interaction As EnumMouseInteractioninteraction = AppView.MouseInteractionTypeIf interaction MOUSE_
32、SELECT ThentbStandard.Buttons(Select.Value = tbrUnpressedEnd IfIf interaction MOUSE_TRANSLATE_XY ThentbStandard.Buttons(TranslateXY.Value = tbrUnpressedEnd IfIf interaction MOUSE_TRANSLATE_XZ Then165 获取属性tbStandard.Buttons(TranslateXZ.Value = tbrUnpressedEnd IfIf interaction MOUSE_ROTATE ThentbStand
33、ard.Buttons(Trackball.Value = tbrUnpressedEnd IfIf interaction MOUSE_ROTATE_LEFT_RIGHT ThentbStandard.Buttons(RotateLR.Value = tbrUnpressedEnd IfIf interaction MOUSE_ROTATE_UP_DOWN ThentbStandard.Buttons(RotateUD.Value = tbrUnpressedEnd IfIf interaction MOUSE_ROTATE_CW_CCW ThentbStandard.Buttons(Rot
34、ateCW.Value = tbrUnpressedEnd IfEnd Sub九、辅助3D 交互Private Sub tbDetailed_ButtonClick(ByVal Button As MSComctlLib.ButtonSelect Case Button.KeyCase TranslateXPAppView.OnTranslateXPCase TranslateYPAppView.OnTranslateYPCase TranslateZPAppView.OnTranslateZPCase TranslateXNAppView.OnTranslateXNCase Translat
35、eYNAppView.OnTranslateYNCase TranslateZNAppView.OnTranslateZNCase RotateXPAppView.OnRotateXPCase RotateYPAppView.OnRotateYPCase RotateZPAppView.OnRotateZP166 SceneView 控件定义了的18个辅助交互函数,这些函数与工具条tbDetailed 的18个Button 对应。Case RotateXNAppView.OnRotateXNCase RotateYNAppView.OnRotateYNCase RotateZNAppView.
36、OnRotateZNCase ScaleXPAppView.OnScaleXPCase ScaleYPAppView.OnScaleYPCase ScaleZPAppView.OnScaleZPCase ScaleXNAppView.OnScaleXNCase ScaleYNAppView.OnScaleYNCase ScaleZNAppView.OnScaleZNEnd SelectEnd Sub十、About 对话设计使用控件OglWindow.ocx ,可以在对话中执行3D 动画。About 对话的界面如图7.8所示,其中“白色”的窗口即为OglWindow 类型的控件。图7.9为Abo
37、ut 对话的运行示例。图7.8 frmAbout 的界面 图7.9 About 对话运行示例frmAbout.frm 程序如下:Option Explicit Dim angle As Single167- 创建对话 -Private Sub Form_Load(AboutWindow.SetCameraPosition 0, 0, 10AboutWindow.SetViewVolume 10, 10, 5, 15AboutWindow.SetOrthoAboutWindow.SetClearColor 0.75, 0.75, 0.75AboutWindow.EnableAnimateangl
38、e = 0End Sub- 绘制3D 图标 -Private Sub AboutWindow_DrawShape(AboutWindow.DrawIntra3DIcon 6End Sub- 控制3D 图标的动画 -Private Sub AboutWindow_ControlAnimate(If (angle = 360 Then angle = 0ogl.glLoadIdentityogl.glRotatef angle, 0, 1, 0angle = angle + 5End Sub7.3 示例程序之二:纹理映射示例程序存放于ExamplesVisualBasicTextureMappin
39、g目录下,主要演示:(1)简单图形对象的使用;(2)材质对象与材质对话的使用;(3)光源节点与光源对话的使用;(4)纹理映射;()编辑背景颜色、多重采样削锯齿、标准三维交互、辅助三维交互等功能的实现。该示例程序与7.2节的程序非常相似,仅增加了纹理映射功能。本节只需说明纹理映射的实现,其它功能可参见7.2节。示例程序主界面如图7.8所示。Option ExplicitPublic ogl As New OpenGL OpenGL 对象 材质对象 纹理对象 长方体对象 全局对象与Scene Graph 定义在Scene.bas 程序中,在程序结束时Visual Basic 将自动释放这些对象。重
40、点是函数CreateScene 中纹理对象的使用: Public m_pMaterial As New Material Public m_pTexture As New Texture2D Public m_pBox As New BoxObject 168Public Sub CreateScene(- 初始化材质对象 -m_pMaterial.ReadMaterialFromLib MAT_ARTDECO_03- 初始化纹理对象 -m_pTexture.SetEnvMode DECALm_pTexture.SetWrapS REPEATm_pTexture.SetWrapT REPEAT
41、m_pTexture.SetImage .DataImagesnake.bmp, 0- 初始化长方体对象 -m_pBox.SetBox 3, 3, 3, 0, 0, 0m_pBox.SetDrawMode SOLIDm_pBox.SetMaterial m_pMaterialm_pBox.SetTexture m_pTexture- 初始化其它图形对象与节点 -End Sub图7.10 示例程序TextureMapping 的主界面有关场景的初始化、设置形体节点的图形对象、编辑材质、编辑光源、编辑背景颜色、多重采样消锯齿、保存图像、标准3D 交互、辅助3D 交互等程序与7.2节完全一致,此处不
42、再重复。与纹理映射相关的函数如下: 图案移印模式的纹理映射Private Sub mnuDecal_Click(m_pTexture.SetEnvMode DECALAppView.RunEnd Sub 调制模式的纹理映射Private Sub mnuModulate_Click(m_pTexture.SetEnvMode MODULATEAppView.RunEnd Sub 使用BMP 格式的纹理图像Private Sub mnuBmpImage_Click(m_pTexture.SetImage .DataImagesnake.bmp, 0AppView.RunEnd Sub 使用GIF
43、格式的纹理图像Private Sub mnuGifImage_Click(m_pTexture.SetImage .DataImageback.gif, 0AppView.RunEnd Sub 使用JPEG 格式的纹理图像Private Sub mnuJpegImage_Click(m_pTexture.SetImage .DataImageearth.jpg, 0AppView.RunEnd Sub 使用SGI 格式的纹理图像Private Sub mnuSgiImage_Click(m_pTexture.SetImage .DataImagebrick.rgb, 0AppView.RunE
44、nd Sub 使用TGA 格式的纹理图像Private Sub mnuTgaImage_Click(m_pTexture.SetImage .DataImageface.tga, 0AppView.RunEnd Sub7.4 示例程序之三:多边形模型示例程序存放于ExamplesVisualBasicPolygonalModels目录下,主要演示:(1)Wavefront 公司.obj 模型的绘制;(2)Autodesk 公司的.3ds 模型的绘制;(3)编辑背景颜色、多重采样削锯齿、标准三维交互、辅助三维交互等功能的实现。COM 对象ModelOBJ 用于绘制 .obj 模型,.obj 的示
45、例模型存放于DataModelOBJ目录下。.3ds 模型必须先转化为 .bfm 格式(见3.3节),再由COM 对象Model3DS 绘制,.3ds 与.bfm 的示例模型存放于DataModel3DSBMF目录下。示例程序主界面如图7.9所示。图7.9 示例程序PolygonalModels 的主界面Option ExplicitPublic ogl As New OpenGL OpenGL对象 绘制 .obj 模型的图形对象 绘制 .bmf 模型的图形对象 引用m_pModelOBJ的形体节点 引用m_pModel3DS的形体节点 全局对象与Scene Graph 定义在Scene.ba
46、s 程序中,在程序结束时Visual Basic 将自动释放这些对象。 Public m_pModelOBJ As New ModelOBJ Public m_pModel3DS As New Model3DS Public m_pShapeOBJ As New ShapeNode Public m_pShape3DS As New ShapeNodePublic m_pCamera As New CameraNodePublic m_pLight0 As New DirLightNodePublic m_pGroup As New GroupNode 相机节点 平行光源节点 组节点函数Cre
47、ateScene 用于创建Scene Graph ,其中图形对象m_pModelOBJ被形体节点m_pShapeOBJ引用,图形对象m_pModel3DS被形体节点m_pShape3DS引用。Public Sub CreateScene(- 初始化m_pModelOBJ 对象 -m_pModelOBJ.SetDrawMode SOLIDm_pModelOBJ.LoadModel .DataModelOBJal.obj- 初始化m_pModel3DS 对象 -m_pModel3DS.SetDrawMode SOLIDm_pModel3DS.LoadModel .DataModel3DS-BMFs
48、kell.bmf- 用于获取场景节点的 ISceneNode 接口 -Dim node As SceneNode- 初始化 m_pShapeOBJ节点 -Set node = m_pShapeOBJnode.SetName Shape OBJnode.SetPosition 1.5, 1, 0node.SetScale 1.5, 1.5, 1.5 使用m_pShapeOBJ的IShapeNode 接口m_pShapeOBJ.SetGraphicalObject m_pModelOBJm_pShapeOBJ.SetBoundColor 0.8, 0.8, 0.8- 初始化 m_pShape3DS节点 -Set node = m_pShape3DSnode.SetName Shape 3DSnode.SetPosition -1.5, -1, 0node.SetScale 1.5, 1.5, 1.5 使用m_pShape3DS的IShapeNode 接口m_pShape3DS.SetGraphicalObject m_pModel3DSm_pShape3DS.SetBoundColor 0.8, 0.8, 0.8- 初始化 m_pShape3DS节点 -S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年水利工程围堰施工培训考试试卷及答案
- 2026年食品稽查协管员招录综合试题
- 2026年生态环境执法辅助人员考试题库
- 2026年社区卫生服务中心公卫岗招聘笔试试题(附答案)
- 2026年陕西汉中初级统计师资格考试(统计学和统计法基础知识)题库及答案
- 2026年商标专利监管培训考试试卷及答案
- 2026年普外科高级职称理论题库及答案
- 2025年温州市乐清市辅警招聘考试真题附答案解析
- 2026年法考认罪认罚制度试题(含答案)
- 2025年通信工程师中级通信专业实务(终端与业务)考试真题及答案
- 南京地铁行测竞聘考试题库
- 四川省达州市2026年初一入学语文分班考试真题含答案
- 2026年AIGC技术应用工程师考试复习题库(附答案)
- 田径项目核心训练计划
- 工程测量员保密意识考核试卷含答案
- 雇佣钟点工免责合同协议书模板
- 中枢神经系统血管炎诊疗
- 2026及未来5年中国煎药壶行业市场供需态势及发展趋向研判报告
- 2026届上海市莘庄中学等四校联考高一下数学期末质量检测试题含解析
- mckinsey -2026 年全球私募市场报告 私募股权:视野更清晰前路更崎岖 Global Private Markets Report 2026 Private equity Clearer view,tougher terrain
- 智慧路灯施工方案及施工要点
评论
0/150
提交评论