共计 1599 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点
在电子设计过程中,原理图设计是至关重要的一环。然而,传统的 AD 原理图设计中,查看元器件参数往往需要逐个点击元件,手动查看属性。这种方式存在明显的效率瓶颈:

- 效率低下 :对于包含数百甚至上千个元件的复杂原理图,逐一查看参数耗时耗力
- 容易遗漏 :人工操作难免会出现遗漏,导致设计错误
- 对比困难 :难以直观比较同类元件的参数差异
AD 原生功能虽然提供了参数显示选项,但在批量处理方面存在明显不足:
- 仅能逐个元件显示 / 隐藏参数
- 无法按参数类型筛选显示
- 参数显示位置固定,容易造成重叠
- 缺乏批量操作的快捷键或菜单项
技术方案
基于上述痛点,我们提出基于 DelphiScript 的 AD 扩展脚本解决方案,主要包含以下技术要点:
- 脚本开发环境配置
- 使用 Altium Designer 自带的脚本编辑器
- 选择 DelphiScript 作为开发语言
-
了解 AD 对象模型和 API 接口
-
核心功能实现
- 原理图文档遍历
- 元件对象识别
- 参数提取与筛选
-
文本标注自动布局
-
用户界面优化
- 添加自定义菜单项
- 实现参数显示 / 隐藏切换
- 提供参数筛选选项
核心实现
以下是完整的脚本实现代码,包含了上述所有功能要点:
procedure ShowAllParameters;
var
CurrentSheet : ISch_Document;
Iterator : ISch_Iterator;
Component : ISch_Component;
Param : ISch_Parameter;
i : Integer;
begin
// 获取当前原理图
CurrentSheet := SchServer.GetCurrentSchDocument;
if CurrentSheet = nil then Exit;
// 创建元件迭代器
Iterator := CurrentSheet.SchIterator_Create;
Iterator.AddFilter_ObjectSet(MkSet(eSchComponent));
// 遍历所有元件
Component := Iterator.FirstSchObject;
while Component <> nil do
begin
// 遍历元件所有参数
for i := 0 to Component.GetState_DisplayModeParameterCount - 1 do
begin
Param := Component.GetState_DisplayModeParameter(i);
// 设置参数为可见
Param.IsHidden := False;
// 自动调整位置避免重叠
Param.Location := Point(Param.Location.X + 100, Param.Location.Y);
end;
Component := Iterator.NextSchObject;
end;
// 释放迭代器
CurrentSheet.SchIterator_Destroy(Iterator);
// 刷新视图
CurrentSheet.GraphicallyInvalidate;
end;
性能优化
对于大型原理图,我们需要考虑脚本的执行效率。以下是几个关键优化点:
- 内存管理
- 及时释放迭代器对象
-
避免在循环中创建不必要的临时对象
-
多线程处理
- 将任务分解为多个子任务
-
利用 AD 的后台处理机制
-
参数缓存
- 首次运行时建立参数索引
- 后续操作直接使用缓存数据
避坑指南
在实际使用过程中,可能会遇到以下问题:
- 脚本执行失败 :检查 AD 版本兼容性
- 参数显示混乱 :调整自动布局算法
- 性能问题 :优化遍历逻辑
扩展思考
本方案可以进一步扩展为更强大的工具:
- 与 BOM 生成流程集成
- 实现参数自动检查功能
- 开发可视化配置界面
结语
通过这个脚本方案,我们成功解决了 AD 原理图中批量显示元器件参数的难题。实践证明,这种方法可以显著提高设计效率,减少人为错误。读者可以根据实际需求,进一步定制和扩展脚本功能。
希望这篇文章能帮助到有类似需求的电子工程师。如果你有任何问题或改进建议,欢迎在评论区交流讨论。
正文完
发表至: 电子设计
近两天内
