跳转到内容

选项类型

Option 类提供工厂方法,用于定义带类型且可持久化的选项,它们会在工具和格式插件的对话框中生成 UI 控件。

通用参数

所有选项工厂方法都接受以下参数:

参数类型说明
labelstr显示标签(第一个位置参数)
default视类型而定默认值
tooltipstr提示文本
enabled_whencallable接收 self 并返回 bool 的回调——返回 False 时控件变灰
namestr仅限关键字。覆盖自动生成的选项键

Option.integer()

用于整数值的微调框。

count = Option.integer("Count", default=1, min=0, max=1000)
参数类型默认值说明
defaultint0默认值
minint0最小值
maxint999999最大值

Option.real()

用于浮点值的小数微调框。

scale = Option.real("Scale Factor", default=1.0, min=0.001, max=1e6, decimals=4)
参数类型默认值说明
defaultfloat0.0默认值
minfloat0.0最小值
maxfloat1e9最大值
decimalsint2显示的小数位数

Option.boolean()

用于真/假值的复选框。

flatten = Option.boolean("Flatten hierarchy", default=False)
参数类型默认值说明
defaultboolFalse默认值

Option.string()

单行文本框。

name = Option.string("Output name", default="output")
参数类型默认值说明
defaultstr""默认值

Option.choice()

下拉选择器。

mode = Option.choice("Mode", choices=["Fast", "Precise", "Custom"], default="Fast")
参数类型默认值说明
choiceslist[str]必填可选项
defaultstr第一个选项默认选择

Option.path()

带浏览按钮的文件路径选择器。

output = Option.path("Output file", file_filter="CSV Files (*.csv)")
参数类型默认值说明
defaultstr""默认路径
file_filterstr"*.*"文件类型过滤字符串

Option.color()

颜色选择按钮。

fill = Option.color("Fill color", default="#FF0000")
参数类型默认值说明
defaultstr"#000000"默认颜色(十六进制)

Option.cell_choice()

填充当前图纸所有单元名的下拉列表。

target = Option.cell_choice("Target cell")
参数类型默认值说明
defaultstr""默认单元名

Option.table()

带类型列的可编辑网格。另见面板拼版教程

entries = Option.table(
"My Table",
columns=[
TableColumn(key="name", label="Name", col_type="string"),
TableColumn(key="value", label="Value", col_type="real", decimals=3),
],
)
参数类型默认值说明
columnslist[TableColumn]必填列定义
defaultlist[dict][]默认行

取值是一个 list[dict],每个字典把列键映射到值。

TableColumn

属性类型说明
keystr该列的字典键
labelstr列标题
col_typestrstringintegerrealchoicecell_choice
defaultAny新行的默认值
choiceslist[str]choice 列的可选项
decimalsintreal 列的小数位数
min_valueint|float数值列的最小值
max_valueint|float数值列的最大值

条件可见性

使用 enabled_when 动态启用或禁用选项:

class MyTool(Tool):
mode = Option.choice("Mode", choices=["Simple", "Advanced"])
threshold = Option.real(
"Threshold",
default=0.5,
enabled_when=lambda self: self.mode == "Advanced",
)
iterations = Option.integer(
"Iterations",
default=10,
enabled_when=lambda self: self.mode == "Advanced",
)

mode 为 “Simple” 时,thresholditerations 字段会变灰。

选项键

每个选项都以字符串键持久化。当 Option 用作类属性时,LinkCAD 会把该键生成为 PyPlugin.<类>.<属性>。保留根 PyPlugin 把插件选项挡在应用程序自身的设置命名空间之外,类名段则把两个都叫 flatten 的插件选项区分开:

class AsciiWriter(FormatWriter):
flatten = Option.boolean("Flatten hierarchy", default=False)
# persisted as "PyPlugin.AsciiWriter.flatten"

属性名原样使用,因此键与读取它的 Python 属性拼写一致。每个选项也都可以用该键从命令行设置:

linkcad --PyPlugin.AsciiWriter.flatten=1 ...

传入仅限关键字的 name 参数即可自行指定键:

flatten = Option.boolean("Flatten hierarchy", default=False, name="MyFormatFlatten")

选项值会在调用 run()read()write() 之前加载到实例上,因此在这些方法内部 self.flatten 就是当前值。直接设置该属性同样有效——正因如此,插件无需打开对话框即可从脚本编辑器驱动。