Appearance
使用 Scheme 和 Scheme 扩展
NOTE
原文来源:Sentaurus Structure Editor User Guide, Version W-2024.09, Synopsys, Inc. PDF 源页码:第 9 章,对应 PDF 第 311–324 页
Scheme 数据类型
Scheme 是 SDE 使用的脚本语言,基础数据类型包括:
| 类型 | 说明 |
|---|---|
| 数值 | 整数或浮点数 |
| 字符串 | 用双引号包裹 |
| 列表 | (item1 item2 ...) |
| 布尔 | #t 真,#f 假 |
| 实体 | 几何对象引用 |
基本 Scheme 编程
定义简单变量
scheme
(define width 10.0)
(define material "Silicon")打印输出
scheme
(display "Hello, SDE")
(newline)字符串操作
scheme
(string-append "prefix" "suffix") ; 拼接字符串
(string-length str) ; 获取长度列表操作
scheme
(car list) ; 获取第一个元素
(cdr list) ; 获取剩余部分
(cons elt list) ; 向表头添加元素
(length list) ; 获取列表长度算术表达式
scheme
(+ a b) ; 加法
(- a b) ; 减法
(* a b) ; 乘法
(/ a b) ; 除法
(expt x n) ; 幂布尔运算
scheme
(and condition1 condition2) ; 逻辑与
(or condition1 condition2) ; 逻辑或
(not condition) ; 逻辑非条件判断
scheme
(if condition
(then-expression)
(else-expression))循环
scheme
; 简单 do 循环
(do ((i 0 (+ i 1)))
((= i n) done-expression)
body-expression)循环遍历列表
scheme
(for-each proc list)对列表中每个元素应用过程 proc。
定义过程(函数)
scheme
(define (func-name arg1 arg2)
body-expression)打印文本到标准输出
scheme
(display "Current value: ")
(display width)
(newline)系统调用
scheme
(system "shell-command")执行 shell 命令,返回退出码。
给 Sentaurus Workbench 发错误信号
scheme
(swb-error "Something went wrong")在 SWB 流程中标记该步骤失败。
几何查询函数
实体 ID 和属性
每个几何实体有唯一 ID,可以查询属性:
scheme
( entity? obj ) ; 是否是实体
( get-type entity ) ; 获取实体类型拓扑实体类型
body:三维实体face:面edge:边vertex:顶点region:材料区域contact:接触
选择几何对象
- GUI 交互式选择:
(get-selected-entity) - 按名称查找区域:
(find-region region-name)
查找区域名称和材料属性
scheme
(get-region-name region)
(get-region-material region)自动区域命名
创建结构时自动根据材料命名区域:
scheme
(auto-region-naming #t) ; 开启自动命名支持的材料列表
scheme
(list-materials) ; 打印所有已定义材料查找相交面
查找两个实体相交得到的面:
scheme
(find-intersection-faces entity1 entity2)查找顶点位置
scheme
(get-vertex-position vertex)
; 返回 (x y z) 列表顶点–顶点距离
scheme
(vertex-vertex-distance v1 v2)调试拓扑实体
scheme
(debug-entity entity)打印实体调试信息。
查找边、面、体的元素
scheme
(body-faces body) ; 获取体的所有面
(face-edges face) ; 获取面的所有边
(face-vertices face) ; 获取面的所有顶点
(region-bodies region) ; 获取区域中的所有体包围盒查询
scheme
(get-bounding-box entity)
; 返回 (xmin ymin zmin xmax ymax zmax)Scheme 函数查询实体
所有查询结果返回 Scheme 列表,可以直接循环处理:
scheme
(for-each
(lambda (face)
; 处理每个 face
)
(body-faces mybody))本章小结
- SDE 使用 Scheme 脚本语言自动化建模
- 基础语法和 Lisp/Scheme 一致
- 提供大量几何查询函数,可以编写复杂参数化建模脚本
- 自动命名和查询减少重复劳动
TIP
复杂参数化器件,推荐用 Scheme 脚本建模,方便修改参数重新生成,可重复性好。