函数与模块#
用途与概念#
function 把计算或素材组合封装为可复用逻辑;组件 .lay 文件用 export 暴露变量和函数,入口文件用 import 选择名称并可重命名。
最小完整示例#
此文件包含画布及必要定义,可直接运行 laymesh validate 或 laymesh render,不依赖前文未声明的变量。
# Minimal complete example: grouppage=canvas(size=(100mm,75mm),background="#ffffff")g=group()a=g.add(rect(size=(35mm,20mm),fill="#e6f2f3"))g.add(text("Reused"),target=a.center,anchor=center)page.add(g,offset=(8mm,8mm))page.add(g,offset=(55mm,38mm),rotation=15deg)# Minimal complete example: grouppage=canvas(size=(100mm,75mm),background="#ffffff")g=group()a=g.add(rect(size=(35mm,20mm),fill="#e6f2f3"))g.add(text("Reused"),target=a.center,anchor=center)page.add(g,offset=(8mm,8mm))page.add(g,offset=(55mm,38mm),rotation=15deg)预览
背景
依赖文件
examples/manual/group.lay
参数与默认行为#
裸几何长度使用画布单位,裸字号和描边宽度使用 pt。显式调用参数优先于继承和主题默认值;下面的接口参考逐项列出允许类型、可选值与默认来源。
组合用法#
函数可接受尺寸、标题或端帽变量并返回素材或组。预定义变量在模块中同样可用,用户或模块自己的同名变量优先;模块中的资源路径相对于模块文件。
first = page.add(card("A"), target=page.top_left, offset=(8 mm, 29 mm))page.add(card("B"), target=first.top_right, offset=(13 mm, 0 mm))# Gallery: containers / module-importimport { card } from "./card-component.lay"page = canvas(name="Imported component", size=(120 mm, 80 mm), background="#f7f9fc")font = "DejaVu Sans"heading = text(content="Imported component", font_family=font, font_size=14 pt, color="#203864")page.add(heading, target=page.top_left, offset=(7 mm, 5 mm))# BEGIN DEMOfirst = page.add(card("A"), target=page.top_left, offset=(8 mm, 29 mm))page.add(card("B"), target=first.top_right, offset=(13 mm, 0 mm))# END DEMO## @lang zh-CN## 创建圆角卡片,并将标题放在中央。## @param {string} label - 标题文字;支持行内公式。## @returns {group} 可重复放置的卡片,宽 42mm、高 31mm。## @example## item = card("结果")## @lang en## Create a rounded card with a centered caption.## @param {string} label - Caption text; supports inline mathematics.## @returns {group} Reusable card material, 42mm wide and 31mm high.## @example## item = card("Result")export function card(label) { item = group() plate = item.add(rect(size=(42 mm, 31 mm), border_radius=3 mm, fill="#d8f0ec", border_color="#087f8c", border_width=0.5 mm), target=item.top_left) item.add(text(content=label, font_family="DejaVu Sans", font_size=11 pt, color="#203864"), anchor=center, target=plate.center) return item}预览
背景
依赖文件
examples/gallery/containers/card-component.layexamples/gallery/containers/module-import.lay
常见错误与限制#
导入名只读,循环导入与缺失导出报错。模块不创建或直接绘制入口 canvas;主文件应先建立 canvas 再使用导入组件。
逐项功能说明#
详细行为与补充示例#
参数#
| 参数 | 用途 | 默认或要求 |
|---|---|---|
import |
导入本地组件 | 路径相对导入文件 |
function |
定义可复用函数 | 组件模块不创建入口画布 |
常见用法#
模块路径只允许本地相对 .lay 文件。模块用 export 导出常量、素材、组或函数;可继续导入其他模块,导入名只读。入口画布须在使用导入值前建立,组件模块不能创建或直接绘制入口画布。缺失导出、循环导入均报错。完整例子见scripted.lay与card.lay。
限制与相关主题#
使用库作者文档注释为可复用组件提供函数、参数和导出变量说明。
workflow#
本流程的完整源码与可执行验证文件列在功能覆盖清单。组合使用时请遵循本页的输入条件与限制。

