microwave office压缩包-案例22-脚本scripting_第1页
microwave office压缩包-案例22-脚本scripting_第2页
microwave office压缩包-案例22-脚本scripting_第3页
microwave office压缩包-案例22-脚本scripting_第4页
microwave office压缩包-案例22-脚本scripting_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

脚本设计2ScriptingMWO中用户的代码方程原理图或GlobalDefinitions页面-也可以在OutputEquations编写代码设置参数将测试的数据传给一个参数(输出方程)也可以应用内建的函数注意:你可以应用脚本创建函数3ScriptingMWO中用户的代码-2脚本脚本应用VisualBasic书写通过菜单运行脚本Global:所有工程有效.Project:本工程有效.在MWO或者文件系统中操作4ScriptingMWO中用户的代码-3用户库(PDK)的代码用于编写编译模型(models),Pcells和BridgeCode.注意:本代码应用C++书写参数(W,L)会改变版图和模型Bridgecode允许智能连接5Scripting脚本应用脚本GlobalScripts–保存在你的电脑中.ProjectScripts–与工程保存在一起.注意:GlobalScripts–保存在:软件自带的脚本,在软件安装目录上C:\ProgramFiles\AWR\AWR2010\scripts6Scripting脚本的应用领域电路合成改变图表的格式测试XMLLibrary文件–脚本将XML库中的每个元件放置在电路原理图中用于测试目的.GUI向导数据处理工程文档版图清除Optimization/Yield/Tuning变量7Scripting首字母缩写及词汇表API-ApplicationProgrammingInterface(应用程序编程接口)用于简易的对MWO进行编程.COM-ComponentObjectModel(组件对象模型)允许程序之间的相互通信,如MWO和ExcelSaxBasic通常应用此种语言为MWO编写脚本Schema

可以用于编程的多种对象的集合,如:graph,schematic...AWRDE-AWRDesignEnvironmenti.e.MWO!OOP-ObjectOrientedProgramming(面向对象的程序设计)8Scripting面向对象的程序设计(OOP)对象的类.MWO中的类:Schematic,Graph,ShapeinaLayout,...Excel的类:Workbook,Sheet对象是类的一个实例如:Schematic1是Schematic类的一个对象.对象拥有属性:如Shape2对象:拥有顶点,绘图层等属性...方法–对对象所作的动作

如对schematic1这个对象的动作:Create,Delete,Export,...集合-同一类的对象如:Schematics这个类的集合-现有工程所有的原理图9ScriptingAWR

Schema放大显示MWO中所有对象的类10ScriptingAWRSchema对象的类-Project集合Collection-Schematics包含一个或多个Schematic类的原理11ScriptingAWR

Schema-3列举了所有的集合和对象的类注意:集合的结尾是“s”.如:Schematic–类Schematics–对象的类的集合

12Scripting实例:列举所有的原理图编写程序将工程中所有的原理图列表打开工程:“First_Program”.打开脚本编辑器打开脚本编辑器的方法:Tools>ScriptingEditorAlt-F11命令工具栏技巧:找不到相应的命令-检查Tools>ManageAddins.确定AWRScriptingIDE被选中13Scripting脚本编辑器创建工程脚本.右键点击ObjectModules>InsertModulesGlobalScriptsProjectScripts注意:对所有工程有效.注意:仅保存在工程中.14Scripting脚本编辑器-2我们创建的工程脚本调试窗口CodeModule15Scripting运行脚本方法1:在需要运行的脚本上点击右键>RunSubMain16Scripting运行脚本-2方法2:打开codemodule运行下图所示按键17Scripting运行脚本-3方法3:为脚本设置快捷键快捷键:Tools>Hotkeys.Category–Macros下的脚本18Scripting练习:列举原理图-2如何编写代码1.查看Collection

下的Schematics2.Schematic

类下的每个对象(Collection

Schematics) -查看Schematic’sName(AProperty属性) -在调试窗口中打印下一个原理图下一步...我们如何从类中创建对象?我们如何应用对象这个集合?我们如何获得对象的属性?如何打印?19ScriptingSaXBasic技巧注释以‘开头应用

OptionExplicit

减少错误选取易理解的名字.技巧:应用OptionExplicit后,变量必须应用Dim定义DimfooAsLongDimbarAsSchematic用于防止书写错误.

若写fo0则会给出错误“Error:fo0notdeclared”.如果没有OptionExplicit–将会创建变量fo0.20Scripting查找对象的类每个使用COM(包括MWO)的程序拥有对象的类这个概念.可用的程序可以在ReferencesBrowser下查看.打开:Edit>References图标注意:查看referencebrowser之前需要打开一个Module我们只需要AWRDE.21Scripting代码的书写规则添加代码-OptionExplicit注意:OptionExplicit,如果没有定义一个变量,但却使用它,将会出现犯错误程序-名为Main.注意:必须有Main–程序开始的地方.你可以添加其他的.添加代码:DimschAsSchematic创建Schematic类的对象Sch注意:脚本首先将对象定义为类.也可在此定义变量.技巧:sch是给对象赋的名,可以是任何名字22Scripting在脚本编辑器中获得帮助ObjectBrowser类或数据类型方法及属性-为字符串View>ObjectBrowser23Scripting在脚本编辑器中获得帮助-2智能帮助你自动填充.当开始输入时,自动显示合理的选项

24Scripting在脚本编辑器中获得帮助-3F1.如果光标在VB函数上,自动获得函数的帮助.25ScriptingSchema和对象从上而下...对于我们的原理图:MWOfficeProjectSchematicsSchematic类类类集合技巧:在定义对象和集合时一般省略MWOffice–如果你有另一个命名空间,如Excel,必须详细声明MWOffice.Project输入:MWOffice.Project.Schematics因此...Project.Schematics即可26Scripting集合如何在集合中对单个原理图进行操作?SchematicsSchematic类集合Count是属性:原理图的个数.方法1:27Scripting集合-2Debug.Print在调试窗口中输出numsch定义numsch为长整型注意:路径-Project.Schematics...Count是集合Schematics的属性28Scripting集合-3如果你知道集合中的某一项—可以直接读取此项最下面的一行代码:获得Schematics集合的第二项—是原理图的对象,然后再输出原理图的名称(属性)技巧:应用如下方法进行集合元素遍历,比较困难ForI=1toN…因为你必须知道集合里面元素个数.最好用:For…Each…29Scripting集合-4对于集合来讲比较好用-ForEach...In...-它会遍历集合中所有的元素...而不需要提前知道有多少个元素Thisclearsthedebuggerwindow.循环将每个原理图赋值给sch变量并打印方法2:30Scripting调试SaxBasic有自己的调试具.Debug.print将数据输出到调试窗口可以设置断点并运行至下一个断点可运行程序至子程序为schematic类设置变量清空调试窗口遍历工程中的schematics集合在调试窗口中打印原理图的名字31Scripting调试窗口当脚本运行时,所有的原理图名字显示在调试窗口中32Scripting调试–断点选择添加断点的位置,添加断点下面显示了在脚本运行之前,在FOR循环前面的断点33Scripting调试–查询变量当程序运行至断点时,你可以查看变量的值.此例中,进行FOR循环。在调试窗口中添加“?sch.Name”显示的值应用()获得向量的值。在()之间放置索引值获得某个元素值也可以将光标放至变量处,查看其值34Scripting调试–查询变量另外,你可以在调试窗口的Watch选项卡中添加变量。当代码进行时,持续显示变量的值输入变量的名字,当单步运行代码时即可显示35Scripting调试–断点当程序运行时,在断点处停止.断点处变黄.按F8单步运行代码36Scripting调试–打印Debug.Print在调试窗口中打印变量的值.自动识别数据类型.Debug.print打印多个数据如:Debug.Print3;4;5Debug.Clear清空调试窗口.放在脚本的前面.37Scripting变量和数据类型我们仍需要传统的变量类型-尤其是应用函数时.需要应用Dim声明进行定义(若应用OptionExplicit).最常用的变量类型:Integer(16位整型)Long(32位整型)Single和Double(16bit和32bit浮点型)String(输入““形成字符串.应用&连接多个字符串.)BooleanComplex(MWO的数据类型.)38Scripting数组定义数组:如:Dimmywire(5)AsTrace...Trace类,5个元素.如:Dimthe_values(3,4)AsString...3*4的二维数组.数组元素的存取:如:the_values(0,2)=“bigvalue”注意–数组从0开始.?Dimmyarray(1,1)是2X2数组,索引分别是0和1.39ScriptingArrays–重定义常见问题-起初并不知道数组的大小,直到后来获得一些用户输入才知道具体大小.首先–定义动态数组

如:ival()AsInteger元素个数未定最后–应用ReDimReDimival(4)AsInteger应用Preserve声明符保存现有的数据ReDimPreserveival(4)AsInteger数组变大后,这会保持ival(0)…ival(4)的数据.若不然,数据将丢失.注意:若数组变小,则数据丢失!注意:多维数组,仅能改变最后面的维度.(如,可以添加列,而不能添加行.)脚本实例-ReDim_Array40Scripting控制语句For...

简单循环(步长自动) ForNum=FirstToLast statements NextNumFor...Each

容易对某一群组的变量进行操作 ForEachvarInItems -statements NextvarDo...Until

出现特定条件后,停止循环. Do -statements LoopUntilconditionalexpression 注意:可用While循环代替Until.41Scripting控制语句-2For...Next

IfThenElse

SelectCaseGoTo其他语句Goto语句:使程序变得可读性太差。。。42Scripting练习–原理图中电阻的数目单个原理图中电阻的数目,工程中电阻的总数目.不需要包含子电路或者网表.用户可以在选择原理图.原理图中电阻的数目和在新对话框中工程.需要的工作:如何在原理图中读取元件.确定哪些元件是电阻.创建选择按键,输出区域.43Scripting原理图中的元件若需要解答以下问题,可以查阅Schema和对象说明如何在原理图中读取元件?小提示:查看schematics集合的属性.schematic类的路径/上下级结构?如何从原理图到元件?元件的哪个属性可让我们确认他是一个电阻?技巧:我们需要确定某一个属性是电阻的,从而进行选择44Scripting原理图中的元件-2代码的流程定义我们所需的所有变量和对象.DimschAsSchematic…

2.初始化电阻的数值.

totalres=0 …3.确定原理图的数量并重新定义数组.

numsch=Thenumberofschematics ReDimschnames(numsch-1)AsString …需要确定循环的类型.45Scripting原理图中的元件-34.遍历schematics集合….查看每个原理图的元件…查看每个元件的属性…确定是否是电阻…ForeachschematicintheSchematics ForEachelementinElements ForEachparameterintheParameters Iftheparameter=“R” incrementnumresistors EndIf Nextparameter Nextelement PrintouttheresistorsandschematicnameNextschematicSchematics集合元件的集合元件的集合SchematicsElementsParameters46Scripting代码-1PartA_Res.basDefineAllthevariablesandobjectsweneed.OptionExplicitSubMainDimschnames()AsString'ThearraysandobjectsDimresvalues()AsIntegerDimschAsSchematicDimanelementAsElementDimaparameterAsParameterDimtotalresAsInteger'VariablesDimtotalelementsAsIntegerDimelementnameAsStringDimnumschAsIntegerDimschindexAsIntegerDimnumresAsInteger47Scripting代码-22.初始化变量.totalres=0totalelements=0schindex=0elementname="R"3.原理图的数值,重新定义数组.numsch=Project.Schematics.CountReDimschnames(numsch-1)AsStringReDimresvalues(numsch-1)AsInteger48Scripting代码-34.遍历schematics集合….查看每个原理图的元件…查看每个元件的属性…确定是否是电阻……ForEachschInProject.Schematics numres=0 ForEachanelementInsch.Elements ForEachaparameterInanelement.Parameters Ifelementname=aparameter.NameThen numres=numres+1 EndIf Nextaparameter Nextanelement schnames(schindex)=sch.Name resvalues(schindex)=numres Debug.Printschnames(schindex);"NumberofResistorsis:";numres schindex=schindex+1Nextsch49Scripting原理图中的元件-6代码执行结果如下.调试窗口.PartB:添加用户界面应用UIbuilder.50ScriptingUIBuilder图形化生成UI,自动编写UI的代码.Insert>UserForm

启动空的UIbuilder.完成UI后,添加代码51ScriptingUIBuilder-2UI的简单例子…创建新的代码:CodeModules>InsertModule.重命名:“TestUI”.脚本将会要求用户输入文本,并在调试窗口中输入。52ScriptingUIBuilder-3创建字符串变量:usertext.将光标置此…userform添会在光标后添加代码.…开启UserForm对话框.53ScriptingUIBuilder-4绘制所需的区域.应用“A”绘制输出.右键点击,设置如图所示注意:仅是将文本输出至屏幕,与用户输入无关.54ScriptingUIBuilder-5应用“ab”绘制文本框,此即为用户的输入55ScriptingUIBuilder-6添加OKandCancel键.OK–关闭对话框并执行代码.Cancel–关闭对话框,返回错误技巧:可以应用返回的错误.56ScriptingUIBuilder-7关闭UserDialogEditor…选择Yes保存变化在光标处自动生成代码.技巧:如果你将光标放置于此…Insert>UserForm…允许你重新编辑.57ScriptingUIBuilder-8下述代码可当作一个类–UserDialog.DimdlgAsUserDialog…创建类UserDialog的一个对象Dialogdlg…方法…创建用户表格.开始.dlg是类的对象.Thiscreates(amethod)theform.58ScriptingUIBuilder-9改变消息TextBox的初始值注意:前面已经应用Dim创建了dlg注意:可以将.TextBox1改为任何值技巧:.Text1,…etc.arepropertiesthatcanbeassignedtotheobject.59ScriptingUIBuilder-10将用户的输入输出到调试窗口.注意:应用Dialog创建表用户点击OK键,会继续运行代码输入字符串,并点击OK键在调试窗口中显示60ScriptingUIBuilder-11错误处理如果用户点击Cancel,会有错误提示.Dialog(dlg)返回一个整数…0代表错误–如.点击Clear键注意:确保errornumber是一个长整型注意:很多的方法会返回一个值…还有进行某个动作(makingthedialogform).技巧:End…结束程序.若不然,会一直进行.61ScriptingUIBuilder-13回到Resistor工程.应用列表框显示

原理图的名字.用户选择原理图…并给出电阻的名字.62ScriptingUIBuilder-2添加文本FinishedDialogBoxDoubleClickonTexttoInputListBoxOKButton63ScriptingUIBuilder-3BeginDialogUserDialog400,203'%GRID:10,7,1,1 Text30,7,310,70,"PleaseSelectaSchematic",.Text1,2

ListBox100,49,170,91,ListArray(),.ListBox1 OKButton160,154,40,21 Text50,182,310,14,"SelectOKWhenFinished",.Text2,2EndDialogDimdlgAsUserDialogDialogdlgListArray()用于放置1维字符串 -应用schname()代替ListArray().ListBox1是dlg的一个属性,会给出选择中的schname()的元件注意:在任一关键词是按F1获得帮助64ScriptingUIBuilder-4UsingtheCodeDimdlgAsUserDialogDialogdlgDebug.Printdlg.ListBox1定义对象-dlgofTypeUserDialog运行Dialog注意:ListBox1函数是定dlg内.我们可以打印记住–数组的起始为0!dlg.ListBox1=0...ListBox的第一个元素dlg.ListBox1=1...ListBox的第二个元素...65ScriptingUIBuilder-5创建第二个用户对话框...将工程中所有的元件和电阻列表.列表选中原理图中的电阻.TextBoxes66ScriptingUIBuilder-6BeginDialogUserDialog400,203'%GRID:10,7,1,1 Text30,7,330,28,"TheTotalNumberofElementsintheProject:",.Text1 TextBox310,7,70,21,.TextBox1 TextBox310,42,70,21,.TextBox2 Text30,49,280,21,"TheNumberofResistorsinthe Project",.Text2 Text80,91,210,28,"NumberofResistorsin",.Text3 TextBox240,91,90,21,.TextBox3 TextBox130,119,70,28,.TextBox4 OKButton120,161,90,28EndDialog DimanswerboxAsUserDialog answerbox.TextBox1=Str(totalelements) answerbox.TextBox2=Str(totalres) answerbox.TextBox3=schnames(dlg.ListBox1) answerbox.TextBox4=Str(resvalues(dlg.ListBox1))注意:应用Str()函数志换为字符串.67Scripting共享脚本将VisualBasic模块导出为a.bas文件用以导入到另一工程中.68ScriptingGlobalvsLocalScriptsGlobalscripts对所有打开的工程有效.Projectscripts仅对打开的工程有效.Projectscripts存储在工程之中.将脚本GlobalScript导入69Scripting为GlobalScripts设置快捷键Tools>Customize确保点击Apply!技巧:也可应用Ctrl,Shift,和Alt键定义快捷键.70Scripting调用其他Com对象应用MicrosoftComAPI,可以轻松的调用其他COM兼容的应用.需要在工在工程中添加objectreference.当你需要定义矢量为其他对象时,你可以调用这些对象查看以下两个实例MicrosoftScriptingRuntimeExcel71ScriptingDictionarieDictionaries用以存储数据 -Noneedtodynamicallyresizeanything -Arrayiskeywordandvaluepairs需要添加MicrosoftScriptRuntime当作objectreference注意:此库允许你操作Files,Folders,Drives,等.-在文件系统的操作中,此库最重要72ScriptingVariant类所有的变量属于Variant类.Integer,Long,....Variant可以是任何东西!-string,integer,float,...因此Variant数组可以包含任何东西.可以应用OptionExplicit防止出错.DictionaryitemsandkeysworkwiththeVariantdatatypes-formaximumflexibility.73ScriptingDictionaries-2DimTestAsScripting.DictionarySetTest=NewDictionary声明将Test定义为Dictionaryobject.注意:Scripting确保我们应用MWOffice脚本库.如果你不提前声明,它将先在AWRDesignEnvironment中查找...(但AWR没有Dictionary...)DecreasingPrioritySetisusedtoassignTesttoclassDictionary.分配和定义不同-需要二者.当你创建对象,并想使用它74ScriptingDictionaries-3Providesabilitytolookupan‘item’basedona‘key’AddandremoveentriesbasedoneithertheitemorthekeyAddingitemsTest.Add("first","Resistor1")Test.Add("second","My_project")Test.Add("third",3.14)Test.Add(4,7)Test.Add("4","Pi")_Object.Add(_Key,_Value)NoticetheKeyandValuepairscanbeanyscalarvariabletype:Integer,String,Float,...Note:Thesekeysaredifferent!Oneisaninteger4,theotherisastring.75ScriptingDictionaries-4MethodsandPropertiesforDictionariesDebug.PrintTest("third")PrintsitemofTestwithkey“third”.Test("third")=6.7Setsarrayelementwithkey“third”to6.7.myitems=Test.Itemsmyitemsisa1DVariantarraywithelementsoftheTestitems.OtherExamples76ScriptingDictionaryExampleWorkwiththePartA_Resscript.Weaddadictionary–wherethekeywordsarethenamesoftheschematics,andthevaluesarethenumberofresistors.DimdictResAsScripting.Dictionary'AdictonaryfromMicrosoftScriptingNamespace.SetdictRes=NewDictionaryTheDimstatementdefinesthedictResasanobjectoftypeDictionary…but….TheSet…Newstatementisneededtoactuallycreatethedictionary!77ScriptingDictionaryExample-2schnames(schindex)=sch.Name resvalues(schindex)=numres dictRes(sch.Name)=numresThedictionaryisplacedintheloopwiththeschematicnamesaskeywords…andnumresasvalues.Debug.PrintdictRes("Moe")...Solateronwecanfindthenumberofresistorsforaschematic.Theadvantageofthis…ausercouldjusttypeinastring-tobeusedasthekeywordinthedictionary…78ScriptingMicrosoftScriptingRuntime…andthefilesystemYoucaninteractwiththefilesystem.Here’ssomesnipetsofascriptwrittenforrecursivelycopyingallthefilesfromonedirectorytoanother.FunctionRecCopy(strFromLoc,strToLoc)'RecursivelycopiesdirectoriesandfilesfromstrFromLoctostrToLoc.Note:Afunctioncanbeusedinthemainprogram.Forexample–wecanusethisoneinthemainprogramas:RecCopy(“C:\foo”,”C:\bar”)Functionshavetheform:Functionfuncname(variables) …EndFunction79ScriptingTheFileSystem-2FunctionRecCopy(strFromLoc,strToLoc)'RecursivelycopiesdirectoriesandfilesfromstrFromLoctostrToLoc.DimobjFSystemAsScripting.FileSystemObjectDimobjFolderAsObjectDimobjSubFOlderAsObjectDimobjFileAsObjectSetobjFSystem=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSystem.GetFolder(strFromLoc)DefiningtheobjectsCreatingtheobjects…2differentways.Set…CreateObject–sameasSet…NewGetFolder–sincewearedoingsomething(method)…theobjFolderiscreatedintheprocess.Wegotafolder!80ScriptingTheFileSystem-3objFSystem.CreateFolder(strToLoc)Createafolder.objFSystem.CopyFile(strFilePath,strToLoc&strFileRel,True)CopyFiles.strFolderName=objSubFOlder.NameFinditsname.Youcanalsodelete…so–becareful!It’susuallyagoodideatocheckifafolderordirectoryexistsbeforeyoudosomething…IfobjFolder.SubFolders.Count>0Then…Theentirefunctionisnamed…RecCopy.basTip:(VS.85).aspxforalotofinfoonScriptRuntimeLibrary.81Scripting实例–将元件导出至Excel表格中将所有元件的所有参数放在Excel表中.原理图如下-Excel.emp.82Scripting添加ExcelReference添加ExcelObject添加MicrosoftExcelReference83ScriptingExcel代码-1DimschAsSchematicDimpAsMWOffice.ParameterDimelemAsElementDimExcelAsObjectDimWorkbookAsObjectDimsheetAsObjectDimExAsExcel.ApplicationSubMain'CreateaninstanceofExcelSetEx=CreateObject("Excel.Application")DefiningtheseasgenericObjectsrightnow...Cangetspecificlater.NeedtospecificallyrefertoExcelnamespaceasMWOfficealsohasApplication.ExisnowassignedtoanExcelApplication.84ScriptingExcel代码-2IfEx=""Then

MsgBox("Excelnotfoundonthismachine,programterminated")

ExitSubEndIfEx.Visible=TrueEx.Interactive=Trueshts=Ex.SheetsInNewWorkbook'storesusersoriginaldefaultsheetsperworkbookEx.SheetsInNewWorkbook=1'setsnewworkbookstoonlyhaveonesheet,however,changesuserdefaultSetWorkbook=Ex.Workbooks.Add()'addsnewworkbook Ex.SheetsInNewWorkbook=shts'resetsheetsperworkbookdefault shtcnt=1'storesnumberofsheetsForcesyououtoftheIfThenThiscodeaddsanewworkbookwithonesheet-aftermakingsurenottotrashtheuser’sdefaultnumberofsheetsfornewworkbooks.85ScriptingExcelCode-3'setschematic(couldbedonewithUI).Setsch=Project.Schematics("filter")'AddcolumnheadersforeachnewsheetSetsheet=Workbook.Sheets(1)sheet.Name=sch.Namesheet.Range("A1").FormulaR1C1="Element"sheet.Range("B1").FormulaR1C1="Parameters"row=2'startingrowThiscodenamesthesheettotheschematicname,andputsthefieldsElementandParametersatthetopofthefirst2columns.86ScriptingExcelCode-4'loopthroughallelementsForEachelemInsch.Elements

Ifelem.Enabled=True

Then sheet.Range("A"+row).FormulaR1C1=elem.Name chrval=66'numbericalvalueforcharacterA ForEachpInelem.Parameters EndIf Nextelemsheet.Range(Chr(chrval)&row).FormulaR1C1=p.Name+"="+p.ValueAsString chrval=chrval+1 Nextp row=row+1

'Fitthecolumnstothedatawe'veentered. sheet.Range("A1:J1").EntireColumn.AutoFit EndSub87Scripting调用其他应用–Results88ScriptingEventHandlersScriptingCodethatrunswhencertaineventshappenwiththesoftware(simulationstarts,simulationstops,placeanelement,etc).Canstopthesimulationineachoptimizationiteration.EventhandlesarecodedbyopeninguptheThisProjectnodeundertheObjectModulesnode.SelectProjectintheObjectselectiontohave

温馨提示

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

评论

0/150

提交评论