共计 2155 个字符,预计需要花费 6 分钟才能阅读完成。
背景痛点
在电子设计团队协作中,原理图元件参数的管理常面临两难:

- 设计安全风险:外发生产文件时,核心器件参数(如高频电路匹配值、定制化元器件规格)若完全暴露,可能导致设计被逆向工程
- 协作效率低下:手动逐个隐藏参数的操作方式,在超过 200 个元件的设计中耗时超过 40 分钟(实测数据),且易遗漏关键元件
- 版本混乱:不同工程师对参数可见性处理不一致,导致设计评审时出现元件参数显示状态冲突
技术方案对比
1. 手动隐藏(传统方式)
- 操作路径:右键元件 → Properties → 勾选参数可见性选项
- 优势:无需编程基础,适合临时性小范围修改
- 缺陷:
- 处理 100 个元件平均耗时 25 分钟
- 无法保证参数隐藏的一致性
- 修改后无法快速恢复原始状态
2. 脚本批量处理(推荐方案)
- 核心工具:AD09 Scripting System(Delphi 语法)
- 典型效率:500 个元件的原理图处理仅需 3 - 5 秒
- 扩展能力:可集成元件类型过滤、参数白名单等高级功能
3. API 自动化(企业级方案)
- 适用场景:需与 PLM/PDM 系统深度集成时
- 开发成本:需要掌握 AD09 SDK 和 COM 接口编程
- 执行效率:比脚本方案快 20%,但部署复杂度高
核心实现:批量隐藏脚本
// AD09 参数隐藏脚本示例
procedure HideComponentParameters;
var
schDoc : ISch_Document;
comp : ISch_Component;
param : ISch_Parameter;
i, j : Integer;
begin
// 获取当前活动原理图文档
schDoc := SchServer.GetCurrentSchDocument;
if schDoc = nil then Exit;
// 遍历所有元件
for i := 0 to schDoc.GetSchComponentCount - 1 do
begin
comp := schDoc.GetSchComponent(i);
// 遍历元件所有参数
for j := 0 to comp.GetSchParameterCount - 1 do
begin
param := comp.GetSchParameter(j);
// 设置参数不可见(保留 ValueOnly 可见性可单独控制)param.IsHidden := True;
// 特殊处理:保持元件标号可见
if param.Name = 'Designator' then
param.IsHidden := False;
end;
// 提交元件修改
comp.GraphicallyInvalidate;
end;
// 刷新视图
SchServer.ProcessControl.PostProcess(nil, '');
end;
关键改进点:
- 使用
GraphicallyInvalidate而非全局刷新,减少界面闪烁 - 保留 Designator 可见确保生产文件可追溯
- 通过 SchServer 异步处理避免主线程阻塞
性能优化技巧
1. 大规模原理图处理
-
分级加载:对超过 2000 个元件的设计,建议分页处理:
// 分页处理示例(每页 500 元件)pageSize := 500; for page := 0 to (totalComps div pageSize) do begin ProcessComponents(page*pageSize, (page+1)*pageSize-1); Application.ProcessMessages; // 保持 UI 响应 end; -
缓存机制:将频繁访问的元件参数信息预加载到内存表
2. 选择性隐藏策略
-
按元件类型过滤:
if comp.LibReference = '高频电容' then param.IsHidden := True; -
参数白名单控制:
const VISIBLE_PARAMS : array[0..2] of String = ('封装', '电压', '误差'); if not (param.Name in VISIBLE_PARAMS) then param.IsHidden := True;
常见问题解决方案
1. 隐藏后 DRC 检查异常
- 现象:某些设计规则检查依赖参数可见性
- 方案:在脚本中临时恢复关键参数可见性:
// DRC 检查前执行 param.IsHidden := (param.Name <> '耐压值');
2. PDF 输出包含隐藏参数
- 根因:AD09 打印设置默认包含所有对象
- 修正:在脚本中同步修改打印选项:
SchDoc.Print_ShowHiddenPins := False; SchDoc.Print_ShowHiddenFields := False;
安全协作实践
- 版本控制集成:
- 在 Git pre-commit 钩子中自动执行参数隐藏
-
使用 gitattributes 区分设计源文件和生产文件
-
权限分级:
- 初级工程师:仅能查看带隐藏参数的版本
-
资深设计师:通过数字证书解锁参数显示权限
-
水印追踪:
// 在隐藏参数时添加追踪标记 comp.AddParameter('SECURITY_LEVEL', 'RESTRICTED').IsHidden := True;
进阶思考:CI/CD 集成
可扩展的自动化流程设计:
- 在 Jenkins 构建环节自动触发参数隐藏脚本
- 与物料管理系统联动,自动验证隐藏参数与 BOM 一致性
- 生成带加密哈希值的生产文件包,确保参数不可篡改
通过将参数保护措施融入现有工具链,既能保障设计安全,又不影响团队协作效率。建议根据实际安全需求,选择适合的自动化层级逐步实施。
正文完
