还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
使用进行二次开发Scripting什么是Scripting是一种编程技术,允许用户通过脚本语言来扩展和自动化软件的功能Scripting在设计软件如中,提供了一种强大的工具,使用户能够PC Altium Designer Scripting自定义设计流程、自动化重复性任务、创建自定义报告和进行复杂的设计验证中的支持Altium DesignerScripting支持多种脚本语言,包括和这些脚本语Altium DesignerPascal.JavaScript VBScript言可以用来访问和操作的内部对象和方法,从而实现各种自动化任Altium Designer务选择哪种脚本语言主要取决于用户的编程经验和偏好Pascal Scripting是中最常用的脚本语言之一它基于Pascal Scripting Altium DesignerDelphi Pascal,语法简洁明了,适合进行复杂的逻辑处理和对象操作示例创建一个新的文档PCB下面是一个使用脚本创建一个新的文档的示例Pascal PCB创建一个新的文档//PCBprocedure CreateNewPCBDocument;varPCBServer:IPCB Server;PCBDoc:IPCB Document;begin〃获取服务器对象PCBPCBServer:=GetPCBServer;创建一个新的文档//PCBPCBDoc:=PCBServer.PCBNew;〃主程序入口AddNewTrack;在这一行设置断点
3.NewTrack.StartX=1OOOO;.点击按钮,脚本将停在断点处4Run使用或按钮逐步执行脚本,观察每一步的效果
5.Step OverStep Into常见的脚本应用场景自动化设计规则检查通过脚本自动化执行设计规则检查,提高设计的准确
1.性批量修改元件属性批量修改元件的名称、位置、旋转角度等属性
2.生成自定义报告生成包含特定设计信息的报告,如元件列表、走线长度等
3.导出设计文件自动化导出设计文件,如、等
4.Gerber NCDrill设计验证编写脚本进行复杂的设计验证,确保设计符合特定要求
5.示例自动化设计规则检查下面是一个使用脚本自动化执行设计规则检查的示例Pascal〃自动化设计规则检查procedure AutomatedDRC;varPCBServer:IPCB_Server;PCBBoard:IPCB Board;DRCResults:IPCB DRCResults;begin〃获取服务器对象PCBPCBServer:=GetPCBServer;获取当前活动的文档//PCBPCBBoard:=PCBServer.GetCurrentPCBBoard;执行设计规则检查//DRCResults:=PCBBoard.DRCRunAndAddToErrorList;〃检查是否有错误if DRCResults.ErrorCount0thenbegin设计规则检查失败,错误数:+PCBLogC lntToStrDRCResults.ErrorCount;end elsebegin设计规则检查成功,无错误PCBLogC end;〃保存文档PCBBoard.Save;end;主程序入口//beginAutomatedDRC;end.示例生成自定义报告下面是一个使用脚本生成自定义报告的示例JavaScript〃生成自定义报告function GenerateCustomReport{〃获取当前活动的文档PCBvar PCBBoard=PCBServer.GetCurrentPCBBoard;〃获取所有元件var Components=PCBBoard.Components;〃创建报告文件var ReportFile=new ActiveXObjectCScripting.FileSystemObject J.CreateTextFileCCAXCustomReport.txt,true;〃遍历所有元件并记录信息for vari=0;iComponents.Count;i++{var Component=Components.ItemBylndexi;〃记录元件名称和位置元件名称:+位置:+ReportFile.WriteLine Component.Name+”,Component.X+,+Component.Y+〃关闭报告文件ReportFile.Close;〃主程序入口GenerateCustomReport;高级脚本开发技巧多线程编程在脚本中使用多线程可以提高脚本的执行效率,特别是在处理
1.大量数据时用户界面开发通过脚本开发自定义的用户界面,使用户可以更方便地与脚
2.本交互扩展通过编写扩展脚本,增加的功能,提高设计效率
3.API Altium Designer示例多线程处理元件列表下面是一个使用团本进行多线程处理元件列表的示例Pascal〃多线程处理元件列表procedure ProcessComponentsInThread;varPCBServer:IPCB_Server;PCBBoard:IPCB_Board;Components:IPCB_BoardComponents;Thread:TThread;begin获取服务器对象//PCBPCBServer:=GetPCBServer;〃获取当前活动的文档PCBPCBBoard:=PCBServer.GetCurrentPCBBoard;〃获取所有元件Components:=PCBBoard.Components;〃创建多线程对象Thread:=TThread.CreateAnonymousThreadprocedurebegin〃在新线程中处理元件for i:=0to Components.Count-1dobeginvar Component:=Components[i];〃记录元件信息到日志处理匕件++,位置+PCBLog Component.Name IntToStrComponent.X+,1+;IntToStr Components+end;end;〃启动线程Thread.Start;end;〃主程序入口beginProcessComponentsInThread;end.示例创建自定义用户界面下面是一个使用脚本创建自定义用户界面的示例JavaScript〃创建自定义用户界面function CreateCustomlll{〃创建一个对话框var Dialog=new ActiveXObjectPfc.Dialog;添加输入框//元件名称:“,Dialog.AddEditBoxComponentName,DefaultName;位置、;Dialog.AddEditBoxCXPosition,X0位置:Dialog.AddEditBoxYPosition,Y显示对话框//if Dialog.Show{〃获取用户输入var ComponentName=Dialog.GetEditBoxComponentName.Text;var XPosition=Dialog.GetEditBoxXPosition.Text;var YPosition=Dialog.GetEditBoxCYPositionJ.Text;〃将输入转换为数值XPosition=parselntXPosition;YPosition=parselntYPosition;获取服务器对象//PCBvar PCBServer=GetPCBServer;〃获取当前活动的文档PCBvar PCBBoard=PCBServer.GetCurrentPCBBoard;〃打开源件库var ComponentLibrary=PCBServer.OpenLibraries CAXComponentLibrary.PcbLib,1;〃从库中获取元件var Component=ComponentLibrary.ComponentByNameComponentName;将元件添加到文档中//PCBPCBBoard.AddPCBComponentJComponent,XPosition,YPosition,0,0,True,True;〃保存文档PCBBoard.Save;〃关闭元件库ComponentLibrary.Close;}〃主程序入口CreateCustomUI;示例扩展API通过编写扩展脚本,可以增加的功能,提高设计效率下面是一个Altium Designer使用脚本扩展功能的示例,该示例添加了一个新的菜单项,Pascal Altium Designer用于执行特定任务才广展功能//ATtium DesignerprocedureExtendAltiumDesigner;varMenu:IMenu;Menuitem:IMenultem;begin〃获取服务器对象PCBPCBServer:=GetPCBServer;〃获取主菜单对象Menu:=PCBServer.Menu;创建一个新的菜单项//Menuitem:=Menu.AddMenultemCustom Menu,Run CustomScript;设置菜单项的点击事件//Menuitem.OnClick:=procedure Sender:IMenultembegin〃执行自定义脚本CreateNewPCBDocument;end;end;〃主程序入口beginExtendAltiumDesigner;end.脚本开发的最佳实践代码注释在脚本中添加详细的注释,帮助其他用户理解和维护脚本
1.模块化设计将脚本拆分为多个模块,每个模块负责一个特定的功能,提高
2.代码的可读性和可维护性错误处理添加错误处理代码,确保脚本在遇到问题时能够优雅地退出,避免
3.对设计文件造成损坏.性能优化在处理大量数据时,注意性能优化,避免脚本运行过慢或占用过4多资源示例模块化设计下面是一个使用脚本的模块化设计示例,该示例将创建文档和添加Pascal PCB元件的功能拆分为两个独立的模块创建一个新的文档//PCBprocedure CreateNewPCBDocument;varPCBServer:IPCB_Server;PCBDoc:IPCB Document;begin〃获取服务器对象PCBPCBServer:=GetPCBServer;〃创建一个新的文档PCB PCBDoc:=PCBServer.PCBNew;〃设置文档名称PCBDoc.SetDocumentNameNewPCB;〃保存文档PCBDoc.SaveCCANewPCB.PcbDoc;end;在上添加一个新的元件//PCBprocedure AddNewComponentPCBBoard:IPCB_Board;ComponentName:string;X,Y:Integer;varPCBServer:IPCB_Server;ComponentLibrary:IPCB_Library;Component:IPCB_Component;begin获取服务器对象//PCBPCBServer:=GetPCBServer;〃打开源件库ComponentLibrary:=PCBServer.OpenLibrariesC:\ComponentLibrary.PcbLib,1;〃从库中获取元件Component:=ComponentLibrary.ComponentByName[ComponentName];〃将元件添加到文档中PCB丫PCBBoard.AddPCBComponentComponent,X,0,0,True,True;〃保存文档PCBBoard.Save;〃关闭元件库ComponentLibrary.Close;end;主程序入口//beginCreateNewPCBDocument;var PCBBoard:=GetPCBServer.GetCurrentPCBBoard;AddNewComponentPCBBoard,NewComponentName,,10000,10000;end.示例错误处理下面是一个使用脚本进行错误处理的示例JavaScript在上添加新的走线//PCBfunction AddNewTrack{try〃获取当前活动的文档PCBvar PCBBoard=PCBServer.GetCurrentPCBBoard;创建一个新的走线对象//var NewTrack=PCBBoard.Tracks.Add;〃设置走线的起点NewTrack.StartX=10000;//10mmNewTrack.StartY=10000;//10mm设置走线的终点//NewTrack.EndX=20000;//20mmNewTrack.EndY=20000;//20mm设置走线的层//NewTrack.Layer=1;//Top Layer设置走线的宽度//NewTrack.Width=1000;//1mm〃保存文档PCBBoard.Save;}catch e{〃记录错误信息发生错误:+PCBLog e.message;}〃主程序入口AddNewTrack;示例性能优化在处理大量数据时,性能优化尤为重要下面是一个使用脚本进行性能优VBScript化的示例,该示例通过批量处理元件来提高效率,批量处理元件Sub BatchProcessComponents,获取服务器对象PCBDim PCBServerSetPCBServer=GetPCBServer’获取当前活动的文档PCBDim PCBBoardSetPCBBoard=PCBServer.GetCurrentPCBBoard,获取所有元件Dim ComponentsSetComponents=PCBBoard.Components,批量处理元件Dim iFori=1To Components.CountDim ComponentSetComponent=Components.Itemi修改元件的名称Component.Name=ModifiedComponentNameJ+CStri’修改元件的位置Component.SetPosition15000+i*1000,15000+i*1000Next,保存文档PCBBoard.SaveEnd Sub,主程序入口BatchProcessComponents结论通过使用技术,用户可以在中实现各种自动化和自定义任ScriptingAltium Designer务,提高设计效率和准确性无论是、还是都有其适用的Pascal JavaScriptVBScript,场景和优势选择合适的脚本语言,结合调试技巧和最佳实践,可以有效地开发出高质量的脚本希望本文档能够帮助用户更好地理解和应用的Altium Designer功能Scripting参考资料官方文档•Altium DesignerAltium DesignerScripting编程教程•Delphi PascalDelphi Tutorial编程教程•JavaScript JavaScriptTutorial编程教程•VBScript VBScriptTutorial〃设置文档名称RCBDoc.SetDocumentNameNewPCB;〃保存文档PCBDoc.SaveCCANewPCB.RcbDoc;end;主程序入口//beginCreateNewPCBDocument;end.JavaScript Scripting是中另一种常用的脚本语言它具有更广泛的JavaScript ScriptingAltium Designer编程应用背景,适合进行快速原型开发和简单的任务自动化示例导出设计的文件PCB Gerber下面是一个使用脚本导出设计的文件的示例JavaScript PCBGerber导出设计的文件//PCB GerberfunctionExportGerber{获取当前活动的文档//PCBvar PCBBoard=PCBServer.GetCurrentPCBBoard;创建导出设置对象//var GerberSettings=PCBBoard.GerberSettings;〃设置导出路径GerberSettings.OutputDirectory=C:\\GerberOutput;〃设置导出格式GerberSettings.GerberFormat=RS274X;导出文件//GerberPCBBoard.ExportToGerberGerberSettings;〃主程序入口ExportGerber;VBScript Scripting是中另一种支持的脚本语言它基于VBScript Visual Basic ScriptAltium Designer语法简单易学,适合初学者使用VisualBasic,示例添加一个新的板层PCB下面是一个使用脚本添加一个新的板层的示例VBScript PCB添加一个新的板层PCBSub AddNewPCBLayer,获取服务器对象PCBDim PCBServerSetPCBServer=GetPCBServer’获取当前活动的文档PCBDim PCBBoardSetPCBBoard=PCBServer.GetCurrentPCBBoard创建一个新的板层Dim NewLayerSetNewLayer=PCBBoard.LayerStackManager.AddLayerNewLayer,,21,False,False/设置新板层的颜色红色NewLayer.Color:=$OOFFOOOO保存文档PCBBoard.SaveEnd Sub主程序入口AddNewPCBLayer脚本的开发环境提供了一个集成的脚本编辑器,可以在软件内部编写和调试脚本Altium Designer此外,用户还可以使用外部的如、或任何支持相应脚本语IDE DelphiVisual Studio言的编辑器来编写脚本,然后将其导入到中运行Altium Designer脚本编辑器的基本操作打开脚本编辑器在中,选择
1.AltiumDesignerTools-Scripting-PCBScripting Editor0编写脚本在脚本编辑器中编写脚本代码
2.运行脚本点击按钮或使用快捷键来运行脚本
3.Run F9调试脚本使用按钮或快捷键来逐步调试脚本
4.Debug F7示例在脚本编辑器中运行脚本Pascal打开并选择
1.AltiumDesignerTools-Scripting-PCB ScriptingEditor0在脚本编辑器中创建一个新的脚本文件,选择作为脚本语言
2.Pascal输入以下代码
3.创建一个新的文档//PCBprocedure CreateNewPCBDocument;varPCBServer:IPCB_Server;PCBDoc:IPCB_Document;begin获取服务器对象//PCBPCBServer:=GetPCBServer;创建一个新的文档//PCBPCBDoc:=PCBServer.PCBNew;〃设置文档名称PCBDoc.SetDocumentNameCNewPCB;〃保存文档PCBDoc.SaveCCANewPCB.PcbDoc;end;〃主程序入口beginCreateNewPCBDocument;end.保存脚本文件,点击按钮运行脚本
4.Run脚本中的常见对象和方法在的脚本开发中,常见的对象和方法包括AltiumDesigner用于访问服务器对象,获取当前活动的文档•PCBServer PCBPCB表示当前的文档对象,可以对其进行各种操作•PCBBoard PCB用于管理文档中的板层•LayerStackManager PCB表示走线对象,可以添加、删除和修改走线•Track表示焊盘对象,可以添加和修改焊盘•Pad表示元件对象,可以添加和修改元件•Component示例在上添加一个新的元件PCB下面是一个使用脚本在上添加一个新的元件的示例Pascal PCB〃在上添加一个新的元件PCBprocedure AddNewComponent;varPCBServer:IPCB_Server;PCBBoard:IPCB_Board;Component:IPCB_Component;ComponentLibrary:IPCB_Library;begin获取服务器对象//PCBPCBServer:=GetPCBServer;〃获取当前活动的文档PCBPCBBoard:=PCBServer.GetCurrentPCBBoard;〃打开元件库ComponentLibrary:=PCBServer.OpenLibrariesCCAComponentLibrary.PcbLib,1;〃从库中获取元件Component:=ComponentLibrary.ComponentByNametNewComponentName];〃将元件添加到文档中PCBPCBBoard.AddPCBComponentComponent,10000,10000,0,0,True,True;〃保存文档PCBBoard.Save;〃关闭元件库ComponentLibrary.Close;end;〃主程序入口beginAddNewComponent;end.示例在上添加新的走线PCB下面是一个使用脚本在上添加新的走线的示例:JavaScript PCB〃在上添加新的走线PCBfunction AddNewTrack{〃获取当前活动的文档PCBvar PCBBoard=PCBServer.GetCurrentPCBBoard;〃创建一个新的走线对象var NewTrack=PCBBoard.Tracks.Add;〃设置走线的起点NewTrack.StartX=10000;//10mmNewTrack.StartY=10000;//10mm设置走线的终点//NewTrack.EndX=20000;//20mmNewTrack.EndY=20000;//20mm设置走线的层//NewTrack.Layer=1;//Top Layer设置走线的宽度//NewTrack.Width=1000;//1mm保存文档//PCBBoard.Save;主程序入口//AddNewTrack;示例修改现有元件的属性下面是一个使用脚本修改现有元件属性的示例VBScript修改现有元件的属性Sub ModifyComponentProperties获取服务器对象PCBDim PCBServerSetPCBServer=GetPCBServer’获取当前活动的文档PCBDim PCBBoardSetPCBBoard=PCBServer.GetCurrentPCBBoard,获取第一个元件Dim ComponentSetComponent=PCBBoard.ComponentListl修改元件的名称Component.Name:=ModifiedComponentName,;〃修改元件的位置Component.SetPosition15000,15000;//15mm,15mm//保存文档PCBBoard.SaveEnd Sub主程序入口ModifyComponentProperties脚本的调试技巧调试脚本是确保脚本正确运行的重要步骤以下是一些常用的调试技巧使用日志输出通过在脚本中添加日志输出语句,可以监控脚本的执行过程
1.和变量的值逐步调试使用脚本编辑器中的逐步调试功能,可以逐行执行脚本,观
2.察每一步的执行效果异常处理添加异常处理代码,捕获并处理脚本运行中的错误
3.示例使用日志输出调试脚本Pascal下面是一个使用日志输出调试脚本的示例Pascal〃在上添加一个新的元件PCBprocedure AddNewComponent;varPCBServer:IPCB Server;PCBBoard:IPCB_Board;Component:IPCB_Component;ComponentLibrary:IPCB_Library;begin〃获取服务器对象PCBPCBServer:=GetPCBServer;(获取服务器对象成功);PCBLog PCB获取当前活动的文档//PCBPCBBoard:=PCBServer.GetCurrentPCBBoard;(获取当前文档成功);PCBLog PCB,〃打开元件库()ComponentLibrary:=PCBServer.OpenLibraries C:\ComponentLibrary.PcbLib,1;打开元件库成功)PCBLog i;〃从库中获取元件Component:=ComponentLibrary.ComponentByName[lNewComponentName,];从库中获取元件成功匕PCBLog〃将元件添加到文档中PCB()PCBBoard.AddPCBComponent Component,10000,10000,0,0,True,True;(,添加元件到文档成功);PCBLog PCB〃保存文档PCBBoard.Save;保存文档成功)PCBLogf,;关闭元件库//ComponentLibrary.Close;关闭元件库成功,);PCBLogend;〃主程序入口beginAddNewComponent;end.示例逐步调试脚本JavaScript在的脚本编辑器中,可以通过设置断点并逐步执行脚本来进行调AltiumDesigner试以下是一个示例打开脚本编辑器,选择作为脚本语言
1.JavaScript输入以下代码
2.〃在上添加新的走线PCBfunction AddNewTrack{〃获取当前活动的文档PCBvar PCBBoard=PCBServer.GetCurrentPCBBoard;创建一个新的走线对象//var NewTrack=PCBBoard.Tracks.Add;〃设置走线的起点NewTrack.StartX=10000;//10mmNewTrack.StartY=10000;//10mm设置走线的终点//NewTrack.EndX=20000;//20mmNewTrack.EndY=20000;//20mm设置走线的层//〃NewTrack.Layer=1;Top Layer设置走线的宽度//NewTrack.Width=1000;//1mm保存文档//PCBBoard.Save;。
个人认证
优秀文档
获得点赞 0