脚本实例参考

本参考资料涵盖了可从Altium下载的Altium Designer脚本示例。

ZIP文件中的Scripts文件夹包含了根据脚本语言组织的子文件夹。例如,DelphiScript脚本位于DelphiScript Scripts文件夹中。可用的特定语言脚本包括:

由于对Altium Designer API的持续更新,以及脚本系统接口及其方法和属性的更新,一些旧的脚本示例可能无法按原计划工作。尽管如此,脚本示例集合中的所有脚本都是有用的资源,可以作为创建自己的脚本的参考信息。

另请注意,尽管EnableBasic和Query Script示例是脚本示例集合的一部分,但这些示例不能在当前版本的Altium Designer中运行/使用。因此,本页面不描述这些示例。

请注意,可以在Altium Designer GitHub集合中找到大量有用的脚本。

DelphiScript 示例

所有 DelphiScript 脚本,无论是脚本单元还是脚本表单,都有一个 *.pas 扩展名。DelphiScript 脚本示例按以下脚本文件夹分类:

通用文件夹

通用脚本

\DelphiScript 脚本\General_Scripts.PRJSCR

脚本文件名

描述

IniFileEg

此脚本演示了TIniFile对象及其读/写方法的使用。

Mandelbrot

此脚本演示了如何使用图形在脚本表单上构建一个Mandelbrot集。

MM

此脚本演示了TMediaPlayer组件的使用。此MM脚本需要Protel.avi文件。

ShowModalEg

此脚本演示了脚本表单的ShowModal属性的使用。

SineWave

此脚本演示了如何在脚本表单上生成和绘制正弦波。

TextFileConvert

提供input.txt文件用于演示目的。

TicTac

一个井字棋游戏。

UpdateTime

此脚本演示了TTimer组件和Time函数的使用。

HelloWorld

\DelphiScript 脚本\General\HelloWorld.PRJSCR

脚本文件名

描述

HelloWorldDialog

使用脚本表单的简单 hello world 消息。

HelloWorld

一个简单的 hello world - 介绍 DelphiScript 语言。

压缩工具

\DelphiScript 脚本\通用\Zipper.PRJSCR

脚本文件名

描述

ZipperForm

该脚本使用在脚本引擎中公开的压缩API。该项目将设计项目及其相关文件压缩。

DXP 文件夹

DXP 脚本

\DelphiScript 脚本\DXP\DXP_Scripts.PrjScr

脚本文件名

描述

ClientServerInterfacesReport

此脚本展示了如何使用客户端接口,并检索有关服务器安装文件、窗口类型、命令和面板的信息。

ExtractFilesFromIntLibs

此脚本展示了如何从带有INTLIB扩展名的集成库文件中提取源库文件。

IntLibSearchDemo

此脚本展示了如何在集成库文件和PCBLIB文件中查找封装和3D模型。

OpenADoc

此脚本展示了如何使用客户端的OpenDocument方法打开文本文档。

ReportIntLibData

此脚本展示了如何使用集成库管理器和模型类型管理器接口来提取与每个接口相关的数据。

ReportPCBViews

此脚本报告所有打开的PCB文档及其在X2中的视图。

ServerProcessReport

此脚本展示了如何为X2中所有已安装服务器的进程生成报告。

SettingDocumentDirty

此脚本展示了如何设置文档为已修改状态,以便在调用保存命令时保存。

DXP 版本

\DelphiScript 脚本\DXP\DXPVersion.PrjScr

脚本文件名

描述

DXPVersionUnit

此脚本演示如何找到 X2 应用程序的版本号。

PCB 文件夹

PCB 脚本

\DelphiScript 脚本\PCB\PCB_Scripts.PrjScr

脚本文件名

描述

Count_Connection_Lines

此脚本演示了如何在PCB文档上计算连接线(未布线的轨迹)并在消息面板上显示结果。

CreateAVia

此脚本演示了如何在PCB文档上创建一个新的通孔(Via)对象。

CreateComponentOnPCB

此脚本演示了如何在PCB文档上创建一个新的组件。

CreateFootprintInLibrary

此脚本演示了如何在库文档上创建一个新的封装。

CreatePCBObjects

此脚本具有在PCB文档上创建不同PCB对象的多种功能。该脚本使用SendMessageToRobots方法发送PCB消息。

CreateRules

此脚本演示了如何创建两种不同的规则 - 最大-最小宽度规则和房间定义规则(限制约束)。

Cycle_Pcb_Cursor_Type

此脚本在PCB文档上循环切换可用的光标类型。

DeletePCBObjects

此脚本演示了如何删除PCB对象并正确更新撤销系统。

EmbeddedObjects

此脚本演示了嵌入式对象的使用;即,在当前PCB文档上创建和获取这些嵌入式对象。

NetObjectAssign

此脚本演示了如何为已放置在PCB文档上的新对象分配网属性。

PadViaCacheProperties

此脚本演示了TPadCache记录和GetObjectAtCursor方法对焊盘和通孔对象的使用。在运行脚本之前,从\DelphiScript Scripts\PCB文件夹加载PadViaExamples.PcbDoc

PadStackInfo

此脚本演示了如何在PCB文档上获取不同的焊盘堆栈信息。

QueryBoard

此脚本查询当前PCB文档以获取板设置信息。

Undo

此脚本演示了PCB的撤销系统。两个程序演示了撤销系统的工作方式 - 作为一个大的撤销或多个较小的撤销。

板轮廓复制器

\DelphiScript 脚本\PCB\板轮廓复制器\CopyBoardOutline.PrjScr

脚本文件名

描述

CopyBoardOutlineForm

该脚本将电路板轮廓以轨迹和弧线的形式复制到指定的层上。用户在进行之前需要指定层和宽度值。

PCB图片创建器

\DelphiScript 脚本\PCB\从位图创建区域\PCB图片创建器.PrjScr

脚本文件名

描述

ConvertPicture

该脚本的主要表单。

ConstructContourSetFromPicture

处理从加载的位图创建轮廓集的脚本。

ConstructRegionsFromContourSet

处理从每个轮廓集创建区域的脚本。

封装查找器

\DelphiScript 脚本\PCB\封装查找器\FootprintFinder.PrjScr

脚本文件名

描述

FindFootprintUnit

使用 PCB API 在 PCB 库中查找一个封装。

来自Tos生成器

\DelphiScript 脚本\PCB\FromTosGenerator\FromTosGenerator.PrjScr

脚本文件名

描述

CreateInterComponentFromTos

一个脚本,用于请求用户选择两个组件,然后连接具有相同网络分配的焊盘。此脚本的限制:您需要将光标从组件移开以退出。运行此脚本后,所有网络都需要手动重建。

formFormTos

此项目的脚本表单。

孔径编辑器

\DelphiScript 脚本\PCB\孔径编辑器\孔径编辑器.PrjScr

脚本文件名

描述

HSForm

这是特定孔径大小编辑器对话框,用于更改其中一个孔的大小。

HSEditForm

这是孔径大小编辑器的主脚本。

Customsort

这个customsort脚本包含了孔径大小编辑器脚本的排序程序。

铣削导出器

\DelphiScript 脚本\PCB\铣削导出器\MillExporter.PrjScr

脚本文件名

描述

MillExporter

一个项目文件。将PCB设计导出为CNC铣床可以加工的格式。目前,仅支持Roland RML铣削语言。

MillExporter

此单元将PCB文档的板轮廓转换为多边形,以便为PCB文档生成数据,并由CNC铣床加工。

MMExportDlg

此单元控制将PCB文档导出以在铣床上加工的设置。

MMSetup

在INI文本文件中设置MillExporter使用的铣床的默认值。

PCB 类生成器

\Delphiscript 脚本\PCB\PCB_Class_Generator.PrjScr

脚本文件名

描述

PCB_Class_Generator.PrjScr

一个PCB类生成器项目文件。

PCB_Class_Generator_Form.dfm

此脚本表单与PCB_Class_Generator_Form脚本相关联。

PCB_Class_Generator_Form.pas

此脚本将选定的PCB对象的网络添加到一个网络类中,并有一个相应的脚本表单。

PCB迭代器

\DelphiScript 脚本\PCB\PCB 迭代器\PCB 迭代器.PrjScr

脚本文件名

描述

Count_pads

此脚本用于计算当前PCB文档上的焊盘数量。

CountTracksInComponent

此脚本计算当前PCB文档中五个不同组件的走线数量。

IterateComponentBodies

此脚本从当前PCB文档中获取组件体。

IterateNets

此脚本演示如何迭代当前PCB文档的网络。

IteratePolygons

此脚本从当前PCB文档中迭代多边形。

IterateRegions

此脚本从当前PCB文档中迭代区域。

LibraryIterator

此脚本演示了库迭代器的使用,并显示在PCB库中找到的每个足迹的子对象(足迹的原语)数量。

SpatialIterator

此脚本演示了ChooseRectangleByCorners方法和空间迭代器的使用。仅选择聚焦PCB上的自由原语。

PCB 层

\DelphiScript 脚本\PCB\PCB 层\PCB_Layers.PrjScr

脚本文件名

描述

Layers_Info

此脚本获取PCB层堆栈的层信息。

QueryLayerPairs

此脚本查询当前PCB文档的PCB层对。

QueryLayersOfMechType

此脚本查询当前PCB文档的机械层。

QueryLayerStack

此脚本查询当前PCB文档的层堆栈。

QueryMechLayers

此脚本查询当前PCB文档的机械层。

QueryUsedLayers

此脚本查询当前PCB文档中使用的层。

RebuildInternalAndSplitPlanes

此脚本强制重建PCB的内部层和分割平面。

Toggle_Connect_layer_display

此脚本切换当前PCB的连接层的可见性。

ValidateLayerStack

此脚本验证层堆栈,并在堆栈无效时报告警告。

PCB 标志创建器

\DelphiScript 脚本\PCB\PCB 标志创建器\PCBLogoCreator.PrjScr

脚本文件名

描述

转换器

脚本形式为对话框,提示用户加载单色图像,然后选择走线的厚度,是否镜像等。

PCB 对象移动器

\DelphiScript 脚本\PCB\PCB对象移动器\PCBObjectsMover.PrjScr

脚本文件名

描述

OffSetObjectsForm

项目表单。

OffSetObjects

演示ChooseRectangleByCorners方法和空间迭代器的使用。在PCB上定义边界内移动对象。

PCB 输出

\DelphiScript 脚本\PCB\PCB输出\PCBOutputsProject.PrjScr

脚本文件名

描述

PCBOutputGenerator

此单元执行以下操作:

  1. 寻找定位点。
  2. 检查电路板外形尺寸。
  3. 生成输出文件(贴片和BOM)。

Violations

获取现有违规对象并生成报告,概述不同的违规情况。

GetObjectClasses

对象类别报告脚本表单。您可以选择特定的对象类别,然后生成该类别的对象类别列表文本文件。

PCB 规则

\DelphiScript 脚本\PCB\PCB 规则\PCB 规则.PrjScr

脚本文件名

描述

IterateRules

此脚本获取当前PCB的现有规则,并生成关于使用的规则、它们的ID和它们的名称的文本报告。

ModifyWidthRules

此脚本修改现有的宽度约束,将最小、最佳和最大宽度小于20 mils的宽度更新为10 mils。

PCBLIB 输出

\DelphiScript 脚本\PCB\PCBLIB 输出\FootprintInfo.PrjScr

脚本文件名

描述

FootprintInfoReport

此脚本生成一个CSV格式的报告,包含所有脚印的脚印名称、高度和描述。

交换或旋转组件

\DelphiScript 脚本\PCB\SwapOrRotateComponents\SwapOrRotateComponents.PrjScr

脚本文件名

描述

SwapComponentsUnit

交换两个相似的组件或旋转一个组件。
该脚本要求用户选择两个组件,然后交换它们的位置,或者如果选择了两次相同的组件,则将其旋转。
此脚本的限制:您需要将光标从组件上移开才能退出。

唯一对象检查器

\DelphiScript 脚本\PCB\唯一对象检查器\UniqueObjectChecker.PrjScr

脚本文件名

描述

Common

项目中使用的常见程序。

ObjectChecker

检查当前PCB文档中重复的网络和组件。

未布线网络类

\DelphiScript 脚本\PCB\未布线网络类\未布线网络类.PrjScr

脚本文件名

描述

Form_ChooseNetClass

此脚本表单提示您选择哪个网络类,以便可以对属于此网络类的对象进行未布线处理。

值检查器

\DelphiScript 脚本\PCB\值检查器\ValuesChecker.PrjScr

脚本文件名

描述

ValuesCheckerUnit

此脚本检查PCB文档上的对象在生成用于加载到CAM编辑器的输出之前是否包含有效值。

PCBAPI函数

包含用于值检查器对话框的函数的脚本单元。

SCH 文件夹

原理图脚本。

Sch 脚本

\DelphiScript Scripts\SCH\Sch_Scripts.PrjScr

脚本文件名

描述

AddModelToComponentScript

此脚本演示如何向555组件添加仿真模型。这是通过向该组件添加555.ckt文件来完成的。

CountPorts

此脚本使用迭代器来计数端口。

CreateComponent_on_Sch

此脚本演示如何在原理图文档上放置一个组件。

CreateSchObjects

此脚本两种方式创建原理图对象;

  1. 第一种方法放置两个端口,只需一个撤销操作就可以移除两者
  2. 第二种方法放置两个端口,需要两个撤销操作来移除两者。

此脚本使用RobotManager接口发送原理图消息。

DeleteSchObjects

该脚本演示如何删除原理图对象并通过使用RobotManager接口发送原理图消息来更新撤销系统。

FetchParameters

此脚本有两个程序。第一个程序获取系统参数(文档参数),第二个程序展示如何获取组件的参数。

IterateSchSheets

此脚本展示如何在Altium Designer中获取打开的原理图表单句柄。

ModelsOfaComponent

此脚本获取原理图文档上每个组件的模型,并生成一个包含组件及其关联(链接)模型列表的报告。

ModifySchObjects

此脚本展示如何获取和修改原理图对象,并通过使用RobotManager接口发送原理图消息来更新撤销系统。

MoveParameters

此脚本展示如何图形化地移动父对象(如组件)的参数,使用Location属性及其get/set方法。

ParentChild_Iterators

此脚本使用迭代器查找表单符号,然后在每个表单符号内部,使用表单符号的迭代器查找表单条目。

PlaceAPort

这个简单的脚本展示了如何在原理图表单上放置一个新的端口对象。

PlaceSchObjects

这个简单的脚本在原理图表单上放置不同的对象。

ReplaceSchObjects

此脚本将跨表连接器替换为端口对象,并自动传输网信息。

SchDocsRenamer

此脚本利用Delphi Windows单元的FileCopy函数复制现有文件并使用不同的文件名。

SimModelsOfComponents

此脚本获取每个组件的仿真模型及其相关参数,然后生成关于这些模型和参数的文本报告。

UndoRedo

此脚本演示如何在修改原理图文档时使用撤销系统。

UsingaSpatialIterator

此脚本演示如何使用空间迭代器在定义的区域内进行搜索。

UsingSchInterfaces

此脚本演示原理图接口。

UsingWSMInterfaces

此脚本演示工作空间管理器接口。

SchLib 脚本

\DelphiScript 脚本\SCH\SchLib_Scripts.Prjscr

脚本文件名

描述

CheckPins

此脚本用于检查库中符号的有效引脚。

CreateComp_in_Lib

此脚本演示如何在库中创建一个新的符号。

CompLibReader

此脚本使用CreateLibCompInfoReader方法提取指定的原理图库中的组件数据。

LibIterator

此脚本展示了如何遍历原理图库并获取符号。

ParametersOfSymbolsInALibrary

此脚本展示了如何使用迭代器获取原理图库中符号的参数。

SymbolPrimsIterator

此脚本展示了如何获取符号的原始图元。

Sch 翻译器

\DelphiScript 脚本\SCH\Circad 翻译器\Sch 翻译器.PrjScr

脚本文件名

描述

StringUtils

该单元处理数据类型。

DesignSettings

该单元处理读取CirCad数据的设置表。

Log

该单元处理生成带有结果的日志文件。

ImportUtils

该单元处理CirCad数据转换为Altium Designer的过程。

InputForm

该单元处理翻译对话框。

Test

这是一个独立单元,处理CirCad数据的测试。

组件替换器

\DelphiScript 脚本\SCH\CompReplace\ComponentReplacer.PrjScr

脚本文件名

描述

ReplaceSelectedComponent

Miscellaneous Devices.IntLib库中的2N3904符号替换原理图上选定的组件。

连接性

\DelphiScript 脚本\SCH\连接性\NetInfoPrj.PrjScr

脚本文件名

描述

连接性

此单元为PCB项目的焦点原理图或选定原理图的组件引脚生成带有引脚网络信息的参数。

DefnForm

处理用户输入的脚本表单。

字体编辑器

\DelphiScript 脚本\SCH\字体编辑器\Fonts Editor.PrjScr

脚本文件名

描述

FontsDialog

此脚本演示了如何使用原理图字体管理器接口。

导入引脚

\DelphiScript 脚本\SCH\导入引脚\ImportPins.PrjScr

脚本文件名

描述

ImportPinsForm

ImportPinsForm是主表单。你需要一个包含用于导入并在SchLib文档上创建新引脚的数据的CSV文件。
使用该脚本:

  1. 执行ImportPins过程,引脚导入器对话框会出现。
  2. 点击浏览按钮以加载包含原理图引脚数据的CSV文件。
  3. 点击更新映射按钮以刷新文本字段与引脚属性之间的链接,然后点击导入按钮在Sch库页面上生成不同引脚的列表。

ChangeMappingForm

更改映射对话框用于从CSV文本文件映射字段。此脚本由主导入引脚对话框使用。

ConvUtils

此脚本包含原理图类型到字符串的转换反之亦然的例程。

PinData.CSV

此文件包含用于ImportPins脚本的引脚信息。

更新封装位置

\DelphiScript 脚本\SCH\更新封装位置\FootprintPathUpdater.PrjScr

脚本文件名

描述

UpdateFootprintPathsOfComps

一个原理图组件具有一个印制电路板(PCB)模型属性和一个库路径属性。在某些情况下,组件可能具有相同的印制电路板名称,但来自不同的库。
此脚本允许您从当前打开的原理图中选择一个印制电路板名称,然后选择一个可用的印制电路板位置。这些位置基于现有组件印制电路板的位置。然后,当对话框关闭时,所有具有相同印制电路板名称的组件都会用指定的位置更新其位置。
确保为原理图组件安装了库,以便可以显示印制电路板库位置(路径)。

用户定义的参数

\DelphiScript Scripts\SCH\UserDefinedParameters\UserDefinedCompParameters.PrjScr

脚本文件名

描述

ComponentParameters

此脚本演示了如何为分层项目的原理图设计中的组件创建、修改和删除用户定义的参数。

流程文件夹

流程脚本

\DelphiScript 脚本\流程\流程_脚本.PrjScr

脚本文件名

描述

Clrins1

此脚本演示了如何删除用户定义区域内的对象。

Clrins2

此脚本演示了如何删除用户定义区域内的对象。在清除对象之前会提示用户。

CirWiz

此脚本表单生成一个简单的滤波电路,并将其放置在原理图表上。

PCBColor

此脚本演示了如何使用SetupPreferences过程更改PCB文档的PCB颜色。

PCBLayer

此脚本演示了如何使用DocumentPreference过程切换PCB层的可见性。

PlacePCBPolygon

此脚本使用PlacePolygonPlane过程在PCB文档上放置一个新的PCB多边形对象。

PlaceSchPort

此脚本使用PlacePort过程在原理图文档上放置一个新的原理图端口对象。

PublishToPDFScript

此脚本从当前项目的OutJob文档发布到PDF,并绕过发布到PDF设置对话框。

QuikCopy

此脚本演示了如何使用ToggleSelectionDeselectPasteCopy过程选择对象,然后复制和粘贴它们。

RunCommonDialog

此脚本演示了如何调用客户端模块的通用对话框并获取参数。

ShowNetlist

此脚本演示了使用WorkspaceManager的GenerateReport过程生成报告是多么容易。

SimpleExample

此脚本演示了AddIntegerParameterGetIntegerParameter函数的使用。

WSM 文件夹

工作区管理器脚本。

WSM 脚本

\DelphiScript 脚本\WSM\WSM_Scripts.PrjScr

脚本文件名

描述

AddDocToProject

此脚本演示如何在新的PCB项目中插入一个原理图表。首先需要在C:\文件夹中有一个sheet1.schdoc文件。

Netlister

此脚本演示如何为原理图项目生成特定的PackingList格式文件。

ProjectReporter

此脚本查找当前打开的项目,包括X2中的免费项目。免费项目是一组不与任何项目相关的文档。

UsingMessagePanel

此脚本演示如何在Altium Designer的消息面板中插入文本消息。这是一个有用的调试工具。

网表生成器

\DelphiScript 脚本\WSM\ProtelNetlister\ScripterProtelNetlist.PrjScr

脚本文件名

描述

ScripterProtelNetlist

此脚本展示了如何使用 WorkSpace Manager 接口来生成 Protel 类型的网表。网表文件将在当前项目的 Generated 文件夹中生成,该项目位于 项目 面板上。
要运行此脚本,您需要打开 ScripterProtelNetlist.PRJSCR 项目,然后从 文件 菜单中选择 运行脚本 命令,并从 选择要运行的项目 对话框中选择 ScripterProtelNetlist.pas 文件。
然后脚本将为当前项目生成网表,因此请确保在运行脚本之前项目已被聚焦。

FPGA 文件夹

交换 ID 更新器

\Delphiscript 脚本\FPGA\SwapIdsUpdater\FPGASwapIds_Project1.PrjScr

脚本文件名 描述
UpdateConstraintUnit 此脚本允许您更改PCB文档上FPGA组件引脚的交换组ID,无需调用FPGA引脚交换管理器。
CheckNameValueUnit 名称检查和处理脚本。

JScript 示例

在脚本集合中(下载),JScript 示例可以在 Scripts\JScript Scripts\ 文件夹中找到。JScript 脚本有一个 *.js 扩展名。

脚本文件名

描述

AddDocToProject

此脚本演示如何在PCB项目中插入一个图纸。首先需要在C:\文件夹中有一个sheet1.schdoc文件。

BuiltInFunctions

此脚本演示如何使用内置的日期和数学对象,并使用ShowMessage函数显示结果。

CopyBoardOutlineForm

此脚本将电路板轮廓作为轨迹和弧线复制到指定层上。

GetScriptEngineInfo

检索Microsoft脚本引擎的版本号。

HelloWorld

一个简单的Hello World - 介绍JScript语言。

ParentChild_Iterators

此脚本使用迭代器查找图纸符号,然后在每个图纸符号内部,使用图纸符号的迭代器查找图纸条目。

ServerProcessReport

此脚本演示如何为Altium Designer中所有已安装服务器的进程生成报告。

SineWave

此脚本演示如何在脚本表单中绘制正弦波。

ViaCreation

此脚本演示如何在PCB上创建一个新的通孔对象。

VBScript 示例

在脚本集合中(下载),VBScript 示例可以在 Scripts\VBScript Scripts\ 文件夹中找到。VBScript 脚本有一个 *.vbs 扩展名。

脚本文件名

描述

AddDocToProject

此脚本演示如何在新的PCB项目中插入一个原理图表。首先需要在C:\文件夹中有一个sheet1.schdoc文件。

CopyBoardOutline

此脚本将板轮廓作为轨迹和弧线复制到指定层上。层和宽度值需由用户在继续之前指定。使用PCB对象模型。

GetScriptEngineInfo

检索Microsoft脚本引擎版本号。

HelloWorld

一个简单的hello world - 对VBScript语言的介绍。

ParentChild_Iterators

此脚本使用迭代器查找表符号,然后在每个表符号中,使用表符号的迭代器查找表条目。使用原理图对象模型。

ServerProcessReport

此脚本演示如何为Altium Designer中所有已安装服务器的进程生成报告。

SineWave

此脚本演示如何在脚本表单上生成和绘制正弦波。使用组件和脚本表单。

ViaCreation

此脚本演示如何在PCB文档上创建一个新的通孔对象。使用PCB对象模型。

如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
功能可用性

您可使用的功能取决于您所选择的 Altium 解决方案 —— Altium DevelopAltium Agile(Agile Teams 或 Agile Enterprise 版本),或仍在有效订阅期内的 Altium Designer。

如果您在软件中未找到文中提及的功能,请联系 Altium 销售团队了解更多信息。

旧版文档

Altium Designer 文档不再提供版本区分。如果您需要访问 Altium Designer 旧版本的文档,请前往其他安装程序页面的旧版文档部分。

Content