microwave office壓縮包-案例22-腳本scripting_第1頁(yè)
microwave office壓縮包-案例22-腳本scripting_第2頁(yè)
microwave office壓縮包-案例22-腳本scripting_第3頁(yè)
microwave office壓縮包-案例22-腳本scripting_第4頁(yè)
microwave office壓縮包-案例22-腳本scripting_第5頁(yè)
已閱讀5頁(yè),還剩92頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

腳本設(shè)計(jì)2ScriptingMWO中用戶的代碼方程原理圖或GlobalDefinitions頁(yè)面-也可以在OutputEquations編寫(xiě)代碼設(shè)置參數(shù)將測(cè)試的數(shù)據(jù)傳給一個(gè)參數(shù)(輸出方程)也可以應(yīng)用內(nèi)建的函數(shù)注意:你可以應(yīng)用腳本創(chuàng)建函數(shù)3ScriptingMWO中用戶的代碼-2腳本腳本應(yīng)用VisualBasic書(shū)寫(xiě)通過(guò)菜單運(yùn)行腳本Global:所有工程有效.Project:本工程有效.在MWO或者文件系統(tǒng)中操作4ScriptingMWO中用戶的代碼-3用戶庫(kù)(PDK)的代碼用于編寫(xiě)編譯模型(models),Pcells和BridgeCode.注意:本代碼應(yīng)用C++書(shū)寫(xiě)參數(shù)(W,L)會(huì)改變版圖和模型Bridgecode允許智能連接5Scripting腳本應(yīng)用腳本GlobalScripts–保存在你的電腦中.ProjectScripts–與工程保存在一起.注意:GlobalScripts–保存在:軟件自帶的腳本,在軟件安裝目錄上C:\ProgramFiles\AWR\AWR2010\scripts6Scripting腳本的應(yīng)用領(lǐng)域電路合成改變圖表的格式測(cè)試XMLLibrary文件–腳本將XML庫(kù)中的每個(gè)元件放置在電路原理圖中用于測(cè)試目的.GUI向?qū)?shù)據(jù)處理工程文檔版圖清除Optimization/Yield/Tuning變量7Scripting首字母縮寫(xiě)及詞匯表API-ApplicationProgrammingInterface(應(yīng)用程序編程接口)用于簡(jiǎn)易的對(duì)MWO進(jìn)行編程.COM-ComponentObjectModel(組件對(duì)象模型)允許程序之間的相互通信,如MWO和ExcelSaxBasic通常應(yīng)用此種語(yǔ)言為MWO編寫(xiě)腳本Schema

可以用于編程的多種對(duì)象的集合,如:graph,schematic...AWRDE-AWRDesignEnvironmenti.e.MWO!OOP-ObjectOrientedProgramming(面向?qū)ο蟮某绦蛟O(shè)計(jì))8Scripting面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)對(duì)象的類(lèi).MWO中的類(lèi):Schematic,Graph,ShapeinaLayout,...Excel的類(lèi):Workbook,Sheet對(duì)象是類(lèi)的一個(gè)實(shí)例如:Schematic1是Schematic類(lèi)的一個(gè)對(duì)象.對(duì)象擁有屬性:如Shape2對(duì)象:擁有頂點(diǎn),繪圖層等屬性...方法–對(duì)對(duì)象所作的動(dòng)作

如對(duì)schematic1這個(gè)對(duì)象的動(dòng)作:Create,Delete,Export,...集合-同一類(lèi)的對(duì)象如:Schematics這個(gè)類(lèi)的集合-現(xiàn)有工程所有的原理圖9ScriptingAWR

Schema放大顯示MWO中所有對(duì)象的類(lèi)10ScriptingAWRSchema對(duì)象的類(lèi)-Project集合Collection-Schematics包含一個(gè)或多個(gè)Schematic類(lèi)的原理11ScriptingAWR

Schema-3列舉了所有的集合和對(duì)象的類(lèi)注意:集合的結(jié)尾是“s”.如:Schematic–類(lèi)Schematics–對(duì)象的類(lèi)的集合

12Scripting實(shí)例:列舉所有的原理圖編寫(xiě)程序?qū)⒐こ讨兴械脑韴D列表打開(kāi)工程:“First_Program”.打開(kāi)腳本編輯器打開(kāi)腳本編輯器的方法:Tools>ScriptingEditorAlt-F11命令工具欄技巧:找不到相應(yīng)的命令-檢查T(mén)ools>ManageAddins.確定AWRScriptingIDE被選中13Scripting腳本編輯器創(chuàng)建工程腳本.右鍵點(diǎn)擊ObjectModules>InsertModulesGlobalScriptsProjectScripts注意:對(duì)所有工程有效.注意:僅保存在工程中.14Scripting腳本編輯器-2我們創(chuàng)建的工程腳本調(diào)試窗口CodeModule15Scripting運(yùn)行腳本方法1:在需要運(yùn)行的腳本上點(diǎn)擊右鍵>RunSubMain16Scripting運(yùn)行腳本-2方法2:打開(kāi)codemodule運(yùn)行下圖所示按鍵17Scripting運(yùn)行腳本-3方法3:為腳本設(shè)置快捷鍵快捷鍵:Tools>Hotkeys.Category–Macros下的腳本18Scripting練習(xí):列舉原理圖-2如何編寫(xiě)代碼1.查看Collection

下的Schematics2.Schematic

類(lèi)下的每個(gè)對(duì)象(Collection

Schematics) -查看Schematic’sName(AProperty屬性) -在調(diào)試窗口中打印下一個(gè)原理圖下一步...我們?nèi)绾螐念?lèi)中創(chuàng)建對(duì)象?我們?nèi)绾螒?yīng)用對(duì)象這個(gè)集合?我們?nèi)绾潍@得對(duì)象的屬性?如何打印?19ScriptingSaXBasic技巧注釋以‘開(kāi)頭應(yīng)用

OptionExplicit

減少錯(cuò)誤選取易理解的名字.技巧:應(yīng)用OptionExplicit后,變量必須應(yīng)用Dim定義DimfooAsLongDimbarAsSchematic用于防止書(shū)寫(xiě)錯(cuò)誤.

若寫(xiě)fo0則會(huì)給出錯(cuò)誤“Error:fo0notdeclared”.如果沒(méi)有OptionExplicit–將會(huì)創(chuàng)建變量fo0.20Scripting查找對(duì)象的類(lèi)每個(gè)使用COM(包括MWO)的程序擁有對(duì)象的類(lèi)這個(gè)概念.可用的程序可以在ReferencesBrowser下查看.打開(kāi):Edit>References圖標(biāo)注意:查看referencebrowser之前需要打開(kāi)一個(gè)Module我們只需要AWRDE.21Scripting代碼的書(shū)寫(xiě)規(guī)則添加代碼-OptionExplicit注意:OptionExplicit,如果沒(méi)有定義一個(gè)變量,但卻使用它,將會(huì)出現(xiàn)犯錯(cuò)誤程序-名為Main.注意:必須有Main–程序開(kāi)始的地方.你可以添加其他的.添加代碼:DimschAsSchematic創(chuàng)建Schematic類(lèi)的對(duì)象Sch注意:腳本首先將對(duì)象定義為類(lèi).也可在此定義變量.技巧:sch是給對(duì)象賦的名,可以是任何名字22Scripting在腳本編輯器中獲得幫助ObjectBrowser類(lèi)或數(shù)據(jù)類(lèi)型方法及屬性-為字符串View>ObjectBrowser23Scripting在腳本編輯器中獲得幫助-2智能幫助你自動(dòng)填充.當(dāng)開(kāi)始輸入時(shí),自動(dòng)顯示合理的選項(xiàng)

24Scripting在腳本編輯器中獲得幫助-3F1.如果光標(biāo)在VB函數(shù)上,自動(dòng)獲得函數(shù)的幫助.25ScriptingSchema和對(duì)象從上而下...對(duì)于我們的原理圖:MWOfficeProjectSchematicsSchematic類(lèi)類(lèi)類(lèi)集合技巧:在定義對(duì)象和集合時(shí)一般省略MWOffice–如果你有另一個(gè)命名空間,如Excel,必須詳細(xì)聲明MWOffice.Project輸入:MWOffice.Project.Schematics因此...Project.Schematics即可26Scripting集合如何在集合中對(duì)單個(gè)原理圖進(jìn)行操作?SchematicsSchematic類(lèi)集合Count是屬性:原理圖的個(gè)數(shù).方法1:27Scripting集合-2Debug.Print在調(diào)試窗口中輸出numsch定義numsch為長(zhǎng)整型注意:路徑-Project.Schematics...Count是集合Schematics的屬性28Scripting集合-3如果你知道集合中的某一項(xiàng)—可以直接讀取此項(xiàng)最下面的一行代碼:獲得Schematics集合的第二項(xiàng)—是原理圖的對(duì)象,然后再輸出原理圖的名稱(chēng)(屬性)技巧:應(yīng)用如下方法進(jìn)行集合元素遍歷,比較困難ForI=1toN…因?yàn)槟惚仨氈兰侠锩嬖貍€(gè)數(shù).最好用:For…Each…29Scripting集合-4對(duì)于集合來(lái)講比較好用-ForEach...In...-它會(huì)遍歷集合中所有的元素...而不需要提前知道有多少個(gè)元素Thisclearsthedebuggerwindow.循環(huán)將每個(gè)原理圖賦值給sch變量并打印方法2:30Scripting調(diào)試SaxBasic有自己的調(diào)試具.Debug.print將數(shù)據(jù)輸出到調(diào)試窗口可以設(shè)置斷點(diǎn)并運(yùn)行至下一個(gè)斷點(diǎn)可運(yùn)行程序至子程序?yàn)閟chematic類(lèi)設(shè)置變量清空調(diào)試窗口遍歷工程中的schematics集合在調(diào)試窗口中打印原理圖的名字31Scripting調(diào)試窗口當(dāng)腳本運(yùn)行時(shí),所有的原理圖名字顯示在調(diào)試窗口中32Scripting調(diào)試–斷點(diǎn)選擇添加斷點(diǎn)的位置,添加斷點(diǎn)下面顯示了在腳本運(yùn)行之前,在FOR循環(huán)前面的斷點(diǎn)33Scripting調(diào)試–查詢(xún)變量當(dāng)程序運(yùn)行至斷點(diǎn)時(shí),你可以查看變量的值.此例中,進(jìn)行FOR循環(huán)。在調(diào)試窗口中添加“?sch.Name”顯示的值應(yīng)用()獲得向量的值。在()之間放置索引值獲得某個(gè)元素值也可以將光標(biāo)放至變量處,查看其值34Scripting調(diào)試–查詢(xún)變量另外,你可以在調(diào)試窗口的Watch選項(xiàng)卡中添加變量。當(dāng)代碼進(jìn)行時(shí),持續(xù)顯示變量的值輸入變量的名字,當(dāng)單步運(yùn)行代碼時(shí)即可顯示35Scripting調(diào)試–斷點(diǎn)當(dāng)程序運(yùn)行時(shí),在斷點(diǎn)處停止.斷點(diǎn)處變黃.按F8單步運(yùn)行代碼36Scripting調(diào)試–打印Debug.Print在調(diào)試窗口中打印變量的值.自動(dòng)識(shí)別數(shù)據(jù)類(lèi)型.Debug.print打印多個(gè)數(shù)據(jù)如:Debug.Print3;4;5Debug.Clear清空調(diào)試窗口.放在腳本的前面.37Scripting變量和數(shù)據(jù)類(lèi)型我們?nèi)孕枰獋鹘y(tǒng)的變量類(lèi)型-尤其是應(yīng)用函數(shù)時(shí).需要應(yīng)用Dim聲明進(jìn)行定義(若應(yīng)用OptionExplicit).最常用的變量類(lèi)型:Integer(16位整型)Long(32位整型)Single和Double(16bit和32bit浮點(diǎn)型)String(輸入““形成字符串.應(yīng)用&連接多個(gè)字符串.)BooleanComplex(MWO的數(shù)據(jù)類(lèi)型.)38Scripting數(shù)組定義數(shù)組:如:Dimmywire(5)AsTrace...Trace類(lèi),5個(gè)元素.如:Dimthe_values(3,4)AsString...3*4的二維數(shù)組.數(shù)組元素的存取:如:the_values(0,2)=“bigvalue”注意–數(shù)組從0開(kāi)始.?Dimmyarray(1,1)是2X2數(shù)組,索引分別是0和1.39ScriptingArrays–重定義常見(jiàn)問(wèn)題-起初并不知道數(shù)組的大小,直到后來(lái)獲得一些用戶輸入才知道具體大小.首先–定義動(dòng)態(tài)數(shù)組

如:ival()AsInteger元素個(gè)數(shù)未定最后–應(yīng)用ReDimReDimival(4)AsInteger應(yīng)用Preserve聲明符保存現(xiàn)有的數(shù)據(jù)ReDimPreserveival(4)AsInteger數(shù)組變大后,這會(huì)保持ival(0)…ival(4)的數(shù)據(jù).若不然,數(shù)據(jù)將丟失.注意:若數(shù)組變小,則數(shù)據(jù)丟失!注意:多維數(shù)組,僅能改變最后面的維度.(如,可以添加列,而不能添加行.)腳本實(shí)例-ReDim_Array40Scripting控制語(yǔ)句For...

簡(jiǎn)單循環(huán)(步長(zhǎng)自動(dòng)) ForNum=FirstToLast statements NextNumFor...Each

容易對(duì)某一群組的變量進(jìn)行操作 ForEachvarInItems -statements NextvarDo...Until

出現(xiàn)特定條件后,停止循環(huán). Do -statements LoopUntilconditionalexpression 注意:可用While循環(huán)代替Until.41Scripting控制語(yǔ)句-2For...Next

IfThenElse

SelectCaseGoTo其他語(yǔ)句Goto語(yǔ)句:使程序變得可讀性太差。。。42Scripting練習(xí)–原理圖中電阻的數(shù)目單個(gè)原理圖中電阻的數(shù)目,工程中電阻的總數(shù)目.不需要包含子電路或者網(wǎng)表.用戶可以在選擇原理圖.原理圖中電阻的數(shù)目和在新對(duì)話框中工程.需要的工作:如何在原理圖中讀取元件.確定哪些元件是電阻.創(chuàng)建選擇按鍵,輸出區(qū)域.43Scripting原理圖中的元件若需要解答以下問(wèn)題,可以查閱Schema和對(duì)象說(shuō)明如何在原理圖中讀取元件?小提示:查看schematics集合的屬性.schematic類(lèi)的路徑/上下級(jí)結(jié)構(gòu)?如何從原理圖到元件?元件的哪個(gè)屬性可讓我們確認(rèn)他是一個(gè)電阻?技巧:我們需要確定某一個(gè)屬性是電阻的,從而進(jìn)行選擇44Scripting原理圖中的元件-2代碼的流程定義我們所需的所有變量和對(duì)象.DimschAsSchematic…

2.初始化電阻的數(shù)值.

totalres=0 …3.確定原理圖的數(shù)量并重新定義數(shù)組.

numsch=Thenumberofschematics ReDimschnames(numsch-1)AsString …需要確定循環(huán)的類(lèi)型.45Scripting原理圖中的元件-34.遍歷schematics集合….查看每個(gè)原理圖的元件…查看每個(gè)元件的屬性…確定是否是電阻…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.原理圖的數(shù)值,重新定義數(shù)組.numsch=Project.Schematics.CountReDimschnames(numsch-1)AsStringReDimresvalues(numsch-1)AsInteger48Scripting代碼-34.遍歷schematics集合….查看每個(gè)原理圖的元件…查看每個(gè)元件的屬性…確定是否是電阻……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代碼執(zhí)行結(jié)果如下.調(diào)試窗口.PartB:添加用戶界面應(yīng)用UIbuilder.50ScriptingUIBuilder圖形化生成UI,自動(dòng)編寫(xiě)UI的代碼.Insert>UserForm

啟動(dòng)空的UIbuilder.完成UI后,添加代碼51ScriptingUIBuilder-2UI的簡(jiǎn)單例子…創(chuàng)建新的代碼:CodeModules>InsertModule.重命名:“TestUI”.腳本將會(huì)要求用戶輸入文本,并在調(diào)試窗口中輸入。52ScriptingUIBuilder-3創(chuàng)建字符串變量:usertext.將光標(biāo)置此…userform添會(huì)在光標(biāo)后添加代碼.…開(kāi)啟UserForm對(duì)話框.53ScriptingUIBuilder-4繪制所需的區(qū)域.應(yīng)用“A”繪制輸出.右鍵點(diǎn)擊,設(shè)置如圖所示注意:僅是將文本輸出至屏幕,與用戶輸入無(wú)關(guān).54ScriptingUIBuilder-5應(yīng)用“ab”繪制文本框,此即為用戶的輸入55ScriptingUIBuilder-6添加OKandCancel鍵.OK–關(guān)閉對(duì)話框并執(zhí)行代碼.Cancel–關(guān)閉對(duì)話框,返回錯(cuò)誤技巧:可以應(yīng)用返回的錯(cuò)誤.56ScriptingUIBuilder-7關(guān)閉UserDialogEditor…選擇Yes保存變化在光標(biāo)處自動(dòng)生成代碼.技巧:如果你將光標(biāo)放置于此…Insert>UserForm…允許你重新編輯.57ScriptingUIBuilder-8下述代碼可當(dāng)作一個(gè)類(lèi)–UserDialog.DimdlgAsUserDialog…創(chuàng)建類(lèi)UserDialog的一個(gè)對(duì)象Dialogdlg…方法…創(chuàng)建用戶表格.開(kāi)始.dlg是類(lèi)的對(duì)象.Thiscreates(amethod)theform.58ScriptingUIBuilder-9改變消息TextBox的初始值注意:前面已經(jīng)應(yīng)用Dim創(chuàng)建了dlg注意:可以將.TextBox1改為任何值技巧:.Text1,…etc.arepropertiesthatcanbeassignedtotheobject.59ScriptingUIBuilder-10將用戶的輸入輸出到調(diào)試窗口.注意:應(yīng)用Dialog創(chuàng)建表用戶點(diǎn)擊OK鍵,會(huì)繼續(xù)運(yùn)行代碼輸入字符串,并點(diǎn)擊OK鍵在調(diào)試窗口中顯示60ScriptingUIBuilder-11錯(cuò)誤處理如果用戶點(diǎn)擊Cancel,會(huì)有錯(cuò)誤提示.Dialog(dlg)返回一個(gè)整數(shù)…0代表錯(cuò)誤–如.點(diǎn)擊Clear鍵注意:確保errornumber是一個(gè)長(zhǎng)整型注意:很多的方法會(huì)返回一個(gè)值…還有進(jìn)行某個(gè)動(dòng)作(makingthedialogform).技巧:End…結(jié)束程序.若不然,會(huì)一直進(jìn)行.61ScriptingUIBuilder-13回到Resistor工程.應(yīng)用列表框顯示

原理圖的名字.用戶選擇原理圖…并給出電阻的名字.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維字符串 -應(yīng)用schname()代替ListArray().ListBox1是dlg的一個(gè)屬性,會(huì)給出選擇中的schname()的元件注意:在任一關(guān)鍵詞是按F1獲得幫助64ScriptingUIBuilder-4UsingtheCodeDimdlgAsUserDialogDialogdlgDebug.Printdlg.ListBox1定義對(duì)象-dlgofTypeUserDialog運(yùn)行Dialog注意:ListBox1函數(shù)是定dlg內(nèi).我們可以打印記住–數(shù)組的起始為0!dlg.ListBox1=0...ListBox的第一個(gè)元素dlg.ListBox1=1...ListBox的第二個(gè)元素...65ScriptingUIBuilder-5創(chuàng)建第二個(gè)用戶對(duì)話框...將工程中所有的元件和電阻列表.列表選中原理圖中的電阻.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))注意:應(yīng)用Str()函數(shù)志換為字符串.67Scripting共享腳本將VisualBasic模塊導(dǎo)出為a.bas文件用以導(dǎo)入到另一工程中.68ScriptingGlobalvsLocalScriptsGlobalscripts對(duì)所有打開(kāi)的工程有效.Projectscripts僅對(duì)打開(kāi)的工程有效.Projectscripts存儲(chǔ)在工程之中.將腳本GlobalScript導(dǎo)入69Scripting為GlobalScripts設(shè)置快捷鍵Tools>Customize確保點(diǎn)擊Apply!技巧:也可應(yīng)用Ctrl,Shift,和Alt鍵定義快捷鍵.70Scripting調(diào)用其他Com對(duì)象應(yīng)用MicrosoftComAPI,可以輕松的調(diào)用其他COM兼容的應(yīng)用.需要在工在工程中添加objectreference.當(dāng)你需要定義矢量為其他對(duì)象時(shí),你可以調(diào)用這些對(duì)象查看以下兩個(gè)實(shí)例MicrosoftScriptingRuntimeExcel71ScriptingDictionarieDictionaries用以存儲(chǔ)數(shù)據(jù) -Noneedtodynamicallyresizeanything -Arrayiskeywordandvaluepairs需要添加MicrosoftScriptRuntime當(dāng)作objectreference注意:此庫(kù)允許你操作Files,Folders,Drives,等.-在文件系統(tǒng)的操作中,此庫(kù)最重要72ScriptingVariant類(lèi)所有的變量屬于Variant類(lèi).Integer,Long,....Variant可以是任何東西!-string,integer,float,...因此Variant數(shù)組可以包含任何東西.可以應(yīng)用OptionExplicit防止出錯(cuò).DictionaryitemsandkeysworkwiththeVariantdatatypes-formaximumflexibility.73ScriptingDictionaries-2DimTestAsScripting.DictionarySetTest=NewDictionary聲明將Test定義為Dictionaryobject.注意:Scripting確保我們應(yīng)用MWOffice腳本庫(kù).如果你不提前聲明,它將先在AWRDesignEnvironment中查找...(但AWR沒(méi)有Dictionary...)DecreasingPrioritySetisusedtoassignTesttoclassDictionary.分配和定義不同-需要二者.當(dāng)你創(chuàng)建對(duì)象,并想使用它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實(shí)例–將元件導(dǎo)出至Excel表格中將所有元件的所有參數(shù)放在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調(diào)用其他應(yīng)用–Results88ScriptingEventHandlersScriptingCodethatrunswhencertaineventshappenwiththesoftware(simulationstarts,simulationstops,placeanelement,etc).Canstopthesimulationineachoptimizationiteration.EventhandlesarecodedbyopeninguptheThisProjectnodeundertheObjectModulesnode.SelectProjectintheObjectselectiontohave

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論