版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GIS二次开发实验指导书
(ArcGIS9.3——VBA/AO/Engine开发教程)
张宝一
csuzby@
中南大学GIS研究中心
用扁一
宏语言式二次开发
(ArcGIS9.3/VBA)
实验一创建VBA宏与UIButtonControl
实验目的
通过ArcMap的VBA环境下编程,初步了解ArcObjects组件库,力
求能读懂、理解VBA实例程序,基本了解宏语言式GIS二次开发的基
本思路和方法。
实验内容
1.在ArcMap地图文档中添加一个VBA宏,实现对某一图层的唯一
值渲染;
2.在ArcMap地图文档中添加一个UlControl按钮,打开一个“虫眼”
窗口。
实验学时
2学时。
实验步骤
设置VBA编译环境(显式声明),输入代码
OptionExplicit
内容一:写VBA宏(直接在VBA编辑器中编辑函数和过程)
1、创建宏,并启动VBA编辑器
2、在地图文档中Project中编写宏(函数或过程)
3、在Macro对话框或VBA编辑器中运行VBA宏
设置层UniqueValueRenderer
本例要实现的是如何在一个层中设置UniqueValueRenderer,根据属性
字段填充上不同的颜色的polygon;首先实例化接口IGeoFeatureLayer,
通过类UniqueValueRenderer实现lUniqueValueRender接口的对象实例,
通过对lUniqueValueRender的属在进行赋值,最后赋值给
IGeoFeatureLayer.Render属性
参考代码如下:
DimpMxDocumentAsIMxDocument
DimpMapAsIMap
DimILyrCntAsLong
DimILyrAsLong
DimpLyrAsILayer
DimpGeoFeatLyrAsIGeoFeatureLayer
DimpUniqueValueRAslUniqueValueRenderer
DimpTableAsITable
DimIfieldNumberAsLong
DimpColorRampAsIRandomColorRamp
DimpEnumRampAslEnumColors
DimpNextUniqueColorAsIColor
DimpQueryFilterAsIQueryFilter
DimpCursorAsICursor
DimpNextRowAsIRow
DimpNextRowBufferAsIRowBuffer
DimcodeValueAsString
DimpFillSymbolAsIFillSymbol
SetpMxDocument=ThisDocument
SetpMap=pMxDocument.FocusMap
ILyrCnt=pMap.LayerCount
ForILyr=0ToILyrCnt-1
SetpLyr=pMap.Layer(ILyr)
IfpLyr.Namc="xianjie_changsha_9"Then
SetpGeoFeatLyr=pLyr
ExitFor
EndIf
NextILyr
SetpUniqueValueR=NewUniqueValueRenderer
SetpTable=pGeoFeatLyr
'Afieldfortheshapefile
ConststrNameField="Name'1
IfieldNumber=pTable.FindField(strNameField)
IfIfieldNumber=-1Then
MsgBox"Can'tfindfieldcalled"&strNameField
ExitSub
EndIf
•pUniqueValueR.FieldCounl=1
,pUniqueValueR.Field(O)=strNameField
,SetpColorRamp=NewRandomColorRamp
,pCoIorRamp.StartHue=0
•pCoIorRamp.MinValue=99
,pCoIorRamp.MinSaturation=15
•pColorRamp.EndHue=360
,pColorRamp.MaxValue=100
•pColorRamp.MaxSaturation=30
,pColorRamp.size=100
•pColorRamp.CreateRampTrue
•SetpEnumRamp=pColorRamp.Colors
•SetpNextUniqueColor=Nothing
•SetpQueryFilter=NewQueryFilter
,pQueryFilter.AddFieldstrNameField
,SetpCursor=pTable.Search(pQueryFilter,True)
,SetpNextRow=pCursor.NextRow
,DoWhileNotpNextRowIsNothing
,SetpNextRowBuffer=pNextRow
,codeValue=pNextRowBuffer.Value(lfieldNumber)
,SetpNextUniqueColor=pEnumRamp.Next
,IfpNextUniqueColorIsNothingThen
,pEnumRamp.Reset
,SetpNextUniqueColor=pEnumRamp.Next
•EndIf
•SetpFillSymbol=NewSimpleFillSymbol
•pFillSymbol.Color=pNextUniqueColor
,pUniqueValueR.AddValuecodeValue,,u,,pFillSymbol
•'Advancethecursortothenextrow,orendofthedataset
•SetpNextRow=pCursor.NextRow
•Loop
*'Nowsetthelayersrenderertotheuniquevaluerenderer
•SetpGeoFeatLyr.Renderer=pUniqueValueR
•pMxDocument.ActiveView.Refresh
,pMxDocument.UpdateContents
运行效果图如下
〜无标StIWcMap-AtelnTo
内容二:创建UlContro】(交互式VBA编程)
1>Customize对话框的“Commands"页,选中"UlControls”后点击66亚
UlControb按钮
2、选择UlControl类型:
UIButtonControl:创建Button;
UIToolControl:创建与Map交互的Tool;
UIEditBoxControl:创建EditBox;
UIComboBoxControl:仓U建ComboBox。
3、进入VBA编辑器在UlControl的事件中进行VBA编程
4、添加一个工具条,选中UlControl并将其拖置到工具条上。
ToolbarX
ToolbarName:
|VBASamplesl
H]
V.®
OKCancel
参考代码如下:
•'运用这个子程序生成了一个新的放大镜窗口,在本例中将放大率设定为200%
,SubCreateMagnifierWindow()
,DimpMapInsetAsIMapInset
,DimpMapInsetWindowAsIMapInsetWindow
,DimpDataWindowFactoryAsIDataWindowFactory
,SetpDataWindowFactory=NewMapInsetWindowFactory
,IfpDataWindowFactory.CanCreate(Application)Then
,SetpMapInsetWindow=pDataWindowFactory.Create(Application)
,SetpMapInset=pMapInsetWindow.MapInset
,'Setthezoompercentto2(X)%
,pMapInset.ZoomPercent=200
,pMapInsetWindow.ShowTrue
・EndIf
,EndSub
运行效果图如下
实验要求
1.使用基础实习成果数据(或其他示例数据)
2.完成实验要求的两个实例(最好要有自己的内容)
3.将代码保存在一个地图文件MXD中,上交后方可离开实验室(如
未完成可在课下通过邮件提交)
实验二创建VBAUIToolControl
实验目的
通过ArcMap的VBA环境下编程,初步了解ArcObjects组件库,实
现GIS的基本窗口操作,了解宏语言式GIS二次开发的基本思路和方法。
实验内容
1.在ArcMap地图文档中添加一个UlControl工具,实现对地图的拉
框和点击放大;
2.在ArcMap地图文档中添加一个UlControl工具,实现对地图的鼠
标移动。
实验学时
2学时。
实验步骤
设置VBA编译环境(显式声明),输入代码
OptionExplicit
内容一:窗口放大
用户点击按钮后,可以在地图上进行点击或者拖放矩形框来放大地图
因为考虑到用户可以单击放大,©可以拖放矩形框来放大,所以采用
INewEnvelopeFeedback接口来显示拖放矩形框效果。
IDiSDlavFeedbacklo
□INewEnvelopeFeedback:IDisplayFeedback
■-■AspectRatio:Double
ThenewenvelopeMlConstraint:esriEiivelopeConstraiiits
Y-Start(inPoint:IPoiirt)
feedbackisperhapstheStop:(Envelope
mostusefijlandsim日IDisplayFeedback:IUnknown
—□Display:IScreenDisplay
plestofthefeedbacks.Symbol:(Symbol
Itisusedtoallowthev-MoveTo(inPoint:IPoiirt)
+Refresh(inhDC:OLE_HANDLE)
usertocreateanew日IUnknown[hidden]
envelopeonthedisplay,knownas+AddRef
v-Querylnterface(inriid:GUID,outppvObj:Any)
9
^draggingarectangleRelease
接口INewEnvelopeFeedback有IDisplayFeedback派生。
接口IDisplayFeedback具有如下属性和方法:
Display:设置Feedback所利用的显示属性;
MoveTo:当鼠号移动时,设置鼠标点所在的坐标;
Refresh:刷新画面;
Symbol:设置显示风格。
Feedbacks对象可以划分为两类:
1.大部分是通过stop方法返回一个新的儿何
2.也有一些纯粹为了显示,开发者来计算一个新的几何,包括
MoveGeometryFeedback,MovelmageFeedback,NewMultiPointFeedback,
VertexFeedbacko
Displayfeedbackobjects
rn
।>•Bezi«rMove-NewB«zier-
CraalcaafwntMckPoint-Curve-
onthefta/WrrFeedbackCivtUaatMdDnckonttedeployFe>edbeck
mgvt^apctlanalor3tMr^ano*Bactorcurva
B»zkrctfV0
Callout-
Feedback
•ZnaixifMdZdconCreate*ateadEockanimdi
m•paylaracakMforanewt
Nt«Omn>ionF«Mb<ck
IS»tOGroup-Dim«nsfon-
CraatsearMdbKkcotteFeedbackCrartMatoedcockonthe/”,Feedback
«cragro(^tfteraddgnawdlnenienshapai
fKdMCkejects
LineMove-Envelcpe-
Pokit-
Croat-aiwctockonV»CTMtc*itKdEadc8gdphyfv
Feedback但.anowsn/dope
"layrefmovhjapotncna
2
O-
NewLine-
Fe«dback
I
Create*ateodt»:«cntr»■N/y
tot川叫anewE/
FMvWurParfHtdbuKc-
MultiPoint-
Ktv4ErwMcpaF»Mtn:io-Move-
CroatsafMlxickanlhddtapAiy,Feadback
Envelope-Kraddnganewmttfxlrt/
CsHM■r«e£Kkonn»dtapiyFeedback
KrtnoMnganfimaiop*
Cg。aiMdDadt
Geometty-toraddng
Feedbeck
MovePoirit-
LTMiM1roaltMCk8t!»dtptoyF«edfc«ck
lormovhgaparthapoygon
CtMte:afwx«:kco2wpaytot
mt»Eanhugecfcyneol&sdstemsrisIReiMpeF»Mt*»o-
orglx,
MoveLne-
Crvelao•fMdEMdcOH1h«。甲ayforFe«dback
nxMtgaInenR68120-
MovePoint-reccinganenvcicpt
Feedteck
0-■
CroatsafMabackcnthsdtaptiyformoMng!Vertex-
crouoaa!M<SO<»8m»cFeedback
n.ve«i>9Moraqeonwtiyty
图1显示反馈Feedbacks对象
具体步骤如下:
添加UIToolControl
添加模块级变量,参考代码如下:
Dimm_bIsMouseDownAsBoolean
Dimm_pPointAsIPoint
Dimm_pFeedbackEnvAsINewEnvelopeFeedback
修改箴标键按下事件,
-^1licrosoftVisualBasic-Changsha,axd-fThisDocaaent(代码)]KE®
文件0)编辑⑥视图叩独人Q)格式Q)0Q)运行®工具a)外餐程序㈤窗口量)港助QP
必豹-)fr79»Mli
ZoM»Oat
pFillSymbol.Color=
•雄d«rBal■■()
就Project(Ckaasska■>pUniqueValueR.AddValueeg矫
-对象'AdvancethecursortoL,’
国ThiiD«an«at
-T横成SetpNextRow=pCursor.小三赳
避模出LOOPg«€r«sb
班快2
Cj引用'NowsetthelayersrenderetlsiL
SetpGeoFeatLyr.Renderer=pUniqueValueR
pMxDocument.ActiveView.Refresh
pMxDocument.UpdateContents
EndSub_________________________________________
Th>SDOCM**RxDocunaat
技字母序|按分英序|PrivateSubZoomOut_Select0
EndSub
PrivateSubZoomWindow_C1ick()
DimpMapInsetAsIMapInset
DimpMapInsetWindowAsIMapInsetWindow
DimpDataWindowFactoryAsIDataWindowFactory
pDataWindowFactory=NewMapInsetWindowFactory
IfpDataWindowFactory.CanCreate(Application)Then
SetpMapInsetWindow=pDataWindowFactory.Create(Applicat.
SetpMapInset=pMapInsetWindow.Mapinset
'Setthezoompercentto200%
参考代码如下:
PrivateSubZoomOut_MouseDown(ByValbuttonAsLong,ByVaishiftAsLong,ByVaixAsLong,ByVaiyAsLong)
DimpActiveViewAslActiveView
DimpMxDocumentAsIMxDocument
・,鼠标左键按下
,Ifbutton<>1ThenExitSub
,IfpActiveViewIsNothingThen
,SetpMxDocument=ThisDocument
,SetpActiveView=pMxDocument.ActivatedView
•EndIf
♦'得到起始点
•Setm_pPoint=pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x,y)
・m_bIsMouseDown=True
•ExitSub
EndSub
修改鼠标移动事件响应函数,参考代码如下:
PrivateSubZoomOut_MouseMove(ByValbuttonAsLong,ByVaishiftAsLong,ByVaixAsLong,ByVaiyAsLong)
DimpMxDocumentAsIMxDocument
DimpActiveViewAslActiveView
,,鼠标移动:主要通过InewEnvelopeFeedback.StartPoint和MoveTo方法来绘制矩形框,然后赋值给
lActiveView.Extend属性,达到地图的放大缩小
•IfNotm_bIsMouseDownThenExitSub
•IfpActiveViewIsNothingThen
・SetpMxDocument=ThisDocument
・SetpActiveView=pMxDocument.ActivatedView
・EndIf
・Ifm_pFeedbackEnvIsNothingThen
・Setm_pFccdbackEnv=NewNewEnvelopeFcedback
・Setm_pFeedbackEnv.Display=pActiveView.ScreenDisplay
•m_pFeedbackEnv.Startm_pPoint
•EndIf
•Setm_pPoint=pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x,y)
,'DrawEnvelope
,m_pFeedbackEnv.MoveTom_pPoint
,ExitSub
EndSub
修改鼠标键弹起事件响应函数,参考代码如下:
PrivateSubZoomOut_MouseUp(ByValbuttonAsLong,ByVaishiftAsLong,ByVaixAsLong,ByVaiyAsLong)
DimpActiveViewAslActiveView
DimpMxDocumentAsIMxDocumcnt
DimpEnvAslEnvelope
・,鼠标左键弹起
•Ifbutton<>1ThenExitSub
,IfpActiveViewIsNothingThen
•SetpMxDocument=ThisDocument
•SetpActiveView=pMxDocument.ActivatedView
•EndIf
•If(m_pFeedbackEnvIsNothing)Then
•'UserOnlyClickMapwithleftbutton
・SetpEnv=pActiveView.Extent
•果是缩小的话,将这里的两个0.5都改成L5
,pEnv.Expand0.5,0.5,True
•Else
*'UserDrawaEnvelope
,SetpEnv=m_pFeedbackEnv.Stop
•EndIf
,pActiveView.Extent=pEnv
•m_bIsMouseDown=False
,Setm_pPoint=Nothing
,Setm_pFeedbackEnv=Nothing
,pActiveView.Refresh
,ExitSub
EndSub
内容二:窗口移动
理户点击按钮后,可以拖动地图显示
采用lActiveView.ScreenDisplay.PanStart和PanStop方法使地图移动。
通过lActiveView.ScreenDisplay的PanStart和PanStop方法在ITool的
MouseDown,MouseUp和MouseMove事件的响应实现移动效果
添加模块级变量,参考代码如下:
Dimm_bIsMouseDownAsBoolean
修改前标键按下事件响应函数,参考代码如下:
PrivateSubPan_MouseDown(ByVaIbuttonAsLong,ByVaishiftAsLong,ByVaixAsLong,ByVaiyAsLong)
DimpMxAppAsIMxApplication
DimpScrDispAsIScreenDisplay
DimpStarlPointAsIPoint
♦鼠'标左键按下
•IfNotbutton=1ThenExitSub
•SetpMxApp=Application
,SetpScrDisp=pMxApp.Display.FocusScreen
,m_bIsMouseDown=True
,SetpStartPoint=pScrDisp.Displayrrransformation.ToMapPoint(x,y)
•'得到起始点,开始移动
,pScrDisp.PanStartpStartPoint
,ExitSub
EndSub
修改鼠标移动事件响应函数,参考代码如下:
PrivateSubPan_MouseMove(ByValbuttonAsLong,ByVaishiftAsLong,ByVaixAsLong,ByVaiyAsLong)
DimpMxAppAsIMxApplication
DimpScrDispAsIScreenDisplay
DimpMoveToPointAsIPoint
•'鼠标移动
,IfNotm_bIsMouseDownThenExitSub
,SetpMxApp=Application
,SetpScrDisp=pMxApp.Display.FocusScreen
,SetpMoveToPoint=pScrDisp.DisplayTransfonnation.ToMapPoint(x,y)
•'根据鼠标移动,移动地图
,pScrDisp.PanMoveTopMoveToPoint
,ExitSub
EndSub
修改鼠标键弹起事件响应函数,参考代码如下:
PrivateSubPan_MouseUp(ByVaibuttonAsLong,ByVaishiftAsLong,ByVaixAsLong,ByVaiyAsLong)
DimpMxAppAsIMxApplication
DimpScrDispAsIScreenDisplay
•'鼠标左键弹起
,IfNotm_bIsMouseDownThenExitSub
,SetpMxApp=Application
•SetpScrDisp=pMxApp.Display.FocusScreen
,m_bIsMouseDown=False
,pScrDisp.PanStop
・ExitSub
EndSub
实验要求
1.使用基础实习成果数据(或其他示例数据)
2.完成实验要求的两个实例(最好要有自己的内容)
3.将代码保存在一个地图文件MXD中,上交后方可离开实验室(如
未完成可在课下通过邮件提交)
见—^痫
客户化组件库扩展
(ArcGIS9.3/C#)
实验三AO组件库扩展
由于Arcinfo是完全COM化的,对于需要对Arcinfo进行结构定制和功
能扩展的高级开发人员来说,这非常具有吸引力。任何与COM兼容的编
程语言,如:C#,VisualC++,Delphi或VisuaU++都能用来定制和扩展
Arcinfoo一个扩展模块开发的基本步骤如下:
(1)新建工程,添加AO的引用;
(2)实现需要的接口,添加具体的代码;
(3)编译为DLL,注册该COM组件,并在ArcGIS的omponentcategories
注册(也可以使用界面的自定义对话框浏览定位到具体的dll来注册);
(4)测试和调试。
编写ArcGIS扩展,可以完成以下任务:
OCommand:即一个按钮、菜单,通过实现【Command、ITool>
IToolCommand接口来创建;
OEditTask:与ArcMapEditor协同工作的组件,需要实现lEditTask
接口;
OTableofContentstab:类似左侧的数据和图层视图的小窗口,通过实
现IContentsView接口来创建;
OClassextension:自定义对象(feature),即有自己属性和规则的空间
对象,例如红绿灯对象,电线,电闸等等,需要实现IClassExtension等
接口。
实验目的
脱离ArcMap环境而在VB/VC或C#开发环境中进行外部独立的开
发,初步了解ArcObjects组件库,力求能读懂、理解COM组件实例程
序,基本了解客户化组件库扩展的基本思路和方法。
实验内容
1.创建定制的按钮button,实现要素feature的过滤显示;
2.创建定制的工具tool,实现Polygon要素查询;
实验学时
2学时。
实验步骤
内容一:创建feature过滤显示的按钮
通过实现【Command接口来创建定制的按钮(COMcommand)o
ICommand接口包括caption>name、category>bitmap>message
(StatusBarr的提示信息)、tooltip(微帮助)、helpcontextid、helpfile>
enabled以及checked等十个属性和OnCreate、OnClick两个事件。从
Icommand接口的OnCreate事件中获取的ArcMap的Application实例必
须用一个公共变量保存,以便在其它事件中(或者其它接口的事件中甚至
整个工程中)使用。
•OnCreate事件的参数hook传入的是一个Object,也就是ArcMAP的
Application实例,可把它赋给一个lApplication接口的变量,便获得了
ArcMAP的实例。
•在OnClick事件中写入相关代码,表示按下按钮时要实现的功能.
车例要完成的功能是过滤层中要显示的Features,即根据指定的条件显
示层中的Features。
实现本例的功能用到接口IFeatureLayerDefinition中的属性
DefinitionExpression:设置查询条件来选择出要显示的Features0先得
到要过滤层的FeatureLayer,再用IFeatureLayerDefinition的
DefinitionExpression设置显示条件。
在VS.NET2005中使用ArcEngine提供的C#向导建立项目,项目类型
为ClassLibraryo
添加对ArcGIS核心组件的引用。
选中解决方案,单击鼠标右键菜单,添加,新建项。
新建一个BaseCommando
设置Command的类型。
向导自动生成了OnCreate函数,代码如下:
publicoverridevoidOnCreate(objecthook)
(
if(hook==null)
return;
try
(
m_hookHelper=newHookHelperClassO;
m_hookHelper.Hook=hook;
if(m_hookHelper.ActiveView==null)
m__hookHelper=null;
}
catch
{
m_hookHelper=null;
)
if(m_hookHelper=null)
base.m_enabled=false;
else
base.m_enabled=true;
//TODO:Addotherinitializationcode
}
通过m_hookHelper可以得至(JActiveView、FocusMap、PageLayout组件
对象。
修改按钮所在的分类,参考代码如下:
base.m_category="C#Samples*;//localizabletext
base.m_caption="Filter";//localizabletext
base.m_message="Thisshouldworkin
ArcMap/MapControl/PageLayoutControl7";//localizabletext
base.m_toolTip="Filter";//localizabletext
base.m_name="MySample_FilterCommand";//uniqueid,non-localizable
(e.g."MyCategory_MyCommand")
使用ArcGIS开发工具LibraryLocator来查找接口、组件类所在的组件
包名称
在类定义文件头使用using组件包的命名空间。
修改Onclick事件相应函数代码,参考代码如下:
publicoverridevoidOnClick()
(
//TODO:AddCommand1.OnClickimplementation
ILayerlyr=m_hookHelper.FocusMap.get_Layer(O);
IFeatureLayerDefinitionfLyrDef=lyrasIFeatureLayerDefinition;
fLyrDef.DefinitionExpression="人口>=50”;
m_hookHelper.ActiveView.Refresh();
)
开发好一个客户化组件后,便可根据实际需要,在ArcMap环境下加载
这个客户化组件。其一般步骤如下:
1>在Customize对话框“Toolbars"或者"Commands”页,然后点击<Add
FromFile>
2、如果加载是“Commands”,可以将其拖置于任何工具条上
3、如果加载是“ToolBars”,则可在ArcMap中显示
打开ArcMap客户化Customize对话框,添加按钮到ArcMap工具条上。
一回反
[lie工&t丫1«*(ooloiarkxXnsertS«leutaon[oolslindovHelp
口方。昌X电exGC6h295:0O6;]:幺△。:R?陶⑥⑻国目门ED码P际一W回回金
Bditot▼.▼T3:f-31Yyt「3|XOS3:EJ
-gL«yers
-0行陶
匚开福区
匚初近Castoaize巨画
口天心区
ToolbarsQcenwds|Qptio&x|
-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省通州区金郊初级中学2024年中考生物考前最后一卷含解析
- 全国专业技术人才培养工程
- 中秋佳节团建方案设计
- 传媒公司未来发展计划书
- 企业员工体检方案
- 企业安全管理调研报告
- 作物生产技术知识培训总结报告
- 亲子阅读月活动方案
- 企业管理专业知识总结报告
- 中秋节活动方案及总结幼儿园
- 巴赫的故事(音乐故事)
- 全国第十届优质课大赛《IAmAngry》教学设计
- 【制度模板】安全早会各工种记录表(8页)
- 诊所执业医师资格证挂靠注册合同协议书范本
- 围墙计算表格
- 部编(统编)版 一年级下册语文 教材解读分析与教学建议 讲座课件(62页精品PPT)
- 某某学校教育发展联盟章程
- 浅谈人事工作在幼儿园管理中的运用
- 深基坑专家评审意见表
- GB_T 325.1-2018 包装容器钢桶 第1部分:通用技术要求(高清正版)
- 青岛日本企业一覧表
评论
0/150
提交评论