Skip to content

界面交互指南 ​

自定义标题栏、Lua 脚本编辑器和 3D 模型预览

上图为 macOS 上的真实运行界面,模型由内置 scripts/0composite.lua 示例生成。

JellyCAD 提供了直观的图形界面,方便用户进行三维模型的可视化编辑和交互操作。本指南将介绍界面的各个区域及其常用操作方法。

界面布局 ​

JellyCAD 的主界面包含以下区域:

1. 自定义标题栏 ​

窗口顶部使用与应用深色主题一致的自定义标题栏,替代系统默认标题栏。标题显示当前文件名、工作目录和 JellyCAD 名称;文件有未保存的修改时,标题开头显示 *。

操作功能
拖动标题栏的文字或空白区域移动窗口
双击标题栏最大化/还原窗口
点击右上角 −最小化窗口
点击右上角方框按钮最大化/还原窗口
点击右上角 ×关闭窗口
拖动窗口边缘或四角调整非最大化窗口的大小

关闭窗口仍会检查未保存的修改,可选择保存、放弃修改或取消关闭。若脚本正在执行,应用会请求停止并在脚本结束后关闭窗口。

2. 侧边工具栏 ​

位于窗口左侧,从上到下提供文件管理器、脚本编辑器、版本控制、终端、形状信息和帮助面板入口。

3. 工作区 ​

位于窗口中部左侧,包含以下功能:

  • 脚本编辑器 - 编写和编辑 Lua 建模脚本
  • 文件管理器 - 选择工作目录,打开或管理脚本文件
  • 版本控制 - 查看 Git 工作区状态和文件改动
  • 终端窗口 - 显示脚本执行输出和错误信息
  • 形状信息 - 显示选中对象的详细信息(顶点、边、面等)
  • 帮助 - 查看使用说明和版本信息

4. 3D视图区 ​

位于窗口右侧,用于实时显示和操作三维模型:

  • 模型预览 - 显示脚本生成的三维模型
  • 坐标轴指示器 - 显示当前视图的方向(X/Y/Z轴)
  • 网格地面 - 提供空间参考
  • 交互控制 - 支持鼠标操作进行视图变换

5. 状态栏 ​

底部显示脚本执行状态;右侧 Auto preview 复选框控制打开或保存脚本后的自动预览。编辑器底部另有 Lua 诊断、编码和缩进状态。


脚本编辑器 ​

脚本编辑器是 JellyCAD 的核心工作区域,用于编写 Lua 建模脚本。

基本操作 ​

新建脚本 ​

  1. 点击左侧文件管理器按钮,选择工作目录
  2. 在文件列表空白处右键选择 New File,或双击空白处;文件列表获得焦点时也可按 Ctrl+N
  3. 输入文件名并确认,然后在编辑器中编写 Lua 代码

打开脚本 ​

  1. 在文件管理器中点击 Open Folder 选择工作目录
  2. 双击列表中的 .lua 文件,或右键选择 Open
  3. 文件会在脚本编辑器中打开,窗口标题同步显示文件名

保存脚本 ​

  1. 点击顶部工具栏的 Save 按钮
  2. 或使用快捷键 Ctrl+S
  3. 首次保存时会弹出文件保存对话框

运行脚本 ​

  1. 按 F5 键或点击运行按钮
  2. 脚本执行结果会显示在3D视图区
  3. 错误信息会显示在终端窗口

编辑功能 ​

编辑器内置 Lua 分析,无需额外安装语言服务器。顶部 Code 菜单和编辑区右键菜单提供以下命令(macOS 的 Ctrl 组合键对应 Command;以菜单显示为准):

功能操作
自动缩进Enter 按 Lua 代码块缩进;输入 end、else、elseif、until 或闭括号时自动回退缩进
缩进/取消缩进Tab/Shift+Tab,支持多行选择,使用 4 个空格
代码折叠点击行号右侧三角;Ctrl+Shift+[ 折叠/展开当前行,Ctrl+Shift+] 展开全部
括号/引号匹配自动补齐 ()、[]、{}、单引号和双引号;支持包裹选区、跳过已有闭符号、成对删除及匹配高亮
自动补全输入时弹出,或按 Ctrl+Space;方向键选择,Enter/Tab 确认,Esc 关闭
函数参数提示输入 (、, 时显示签名及当前参数序号,或按 Ctrl+Shift+Space
跳转定义光标放在变量/函数名上按 F12
查找引用Shift+F12,在 References 列表中点击结果跳转(包含定义位置)
语法检查编辑后自动检查,或按 Ctrl+Shift+M;底部 Lua 状态链接打开 Problems 列表
代码格式化Ctrl+Shift+F,统一代码块缩进,支持一次撤销
注释/取消注释Ctrl+/
查找文本Ctrl+F

补全包含 Lua 关键字、常用标准库、JellyCAD 构造函数、方法目录和当前作用域内的变量/函数。参数提示支持当前脚本定义的函数、常用标准函数和 JellyCAD API;标有 JellyCAD 的方法提示来自 API 目录,不表示已推断接收对象类型。

定义和引用分析限于当前脚本,区分局部变量、函数参数、循环变量及嵌套作用域,也支持直接命名的表方法;不解析跨文件 require、动态索引、表别名或运行时生成的成员。未找到静态定义时会在状态栏提示。

语法检查使用与运行脚本相同版本的 Lua 编译器,只编译、不执行代码;红色波浪线显示首个语法错误,黄色波浪线提示没有引用的局部变量(忽略参数和 _ 开头的名称)。悬停查看详情,或在 Problems 列表中点击定位。编辑后旧引用结果会清除,避免跳到过期位置。

格式化采用保守的缩进整理,保留表达式间距、字符串/长字符串及注释内容,保留文件原有 LF/CRLF 和末尾换行;存在语法错误时先提示修正。折叠只影响显示,不修改文件;编辑或跳转到隐藏内容时会展开代码。

示例代码 ​

lua
-- 创建一个简单的圆角立方体
b = box.new(10, 10, 10)
b:fillet(1, {})
b:color("blue")
b:show()

3D视图操作 ​

3D视图区提供了丰富的交互功能,让你可以从各个角度观察和操作模型。

视图控制 ​

旋转视图 ​

  • 鼠标右键拖拽 - 自由旋转视图
  • 旋转时可以从任意角度观察模型

平移视图 ​

  • 鼠标左键 - 平移视图

缩放视图 ​

  • 鼠标滚轮 - 放大或缩小视图

视图快捷操作 ​

右键点击3D视图区,弹出菜单提供以下功能:

  • Fit All - 自适应显示所有对象
  • View Front/Back - 切换到前视图/后视图
  • View Top/Bottom - 切换到俯视图/仰视图
  • View Left/Right - 切换到左视图/右视图
  • View Isometric - 切换到等轴测视图

选择模式 ​

3D视图支持多种选择模式,用于选中和操作模型的不同部分。

切换选择模式 ​

右键点击3D视图区,在弹出菜单中选择:

  • Select Shapes - 形状选择模式(默认)

    • 选中整个形状对象
    • 用于移动、复制、删除整个模型
  • Select Faces - 面选择模式

    • 选中形状的某个面
    • 可查看面的面积、法向量等信息
    • 用于面级别的操作和分析
  • Select Edges - 边缘选择模式

    • 选中形状的某条边
    • 可查看边的类型、长度、起止点等信息
    • 用于圆角、倒角等边缘操作(参见圆角和倒角操作)
  • Select Vertices - 顶点选择模式

    • 选中形状的某个顶点
    • 可查看顶点的精确坐标
    • 用于顶点级别的分析

选择操作 ​

  • 单击 - 选中单个对象
  • Ctrl + 单击 - 多选(添加到选择集)
  • 单击空白处 - 取消选择

形状信息查看 ​

当选中某个形状、面、边或顶点后,工作区会显示详细信息:

形状信息示例:

  • 类型(Solid、Face、Edge、Vertex)
  • 体积(对于实体)
  • 表面积
  • 包围盒尺寸
  • 质心位置

边缘信息示例:

lua
{
  type = 'line',           -- 边缘类型
  first = {0, 0, 0},       -- 起点坐标
  last = {10, 0, 0},       -- 终点坐标
  length = 10.0,           -- 边长
  tol = 1e-6               -- 容差
}

插入边缘信息到编辑器:

  1. 在边缘选择模式下选中边缘
  2. 点击工作区的 Insert edge info to editor 按钮
  3. 边缘信息会自动插入到编辑器光标位置
  4. 可直接用于圆角、倒角等操作

工作区面板 ​

工作区提供了多个功能面板,帮助你查看信息和调试脚本。

终端窗口 ​

终端窗口显示脚本执行的输出信息:

输出内容:

  • Lua 脚本的 print() 输出
  • 函数执行结果
  • 警告信息
  • 错误信息和堆栈跟踪

常见错误信息:

lua
-- 语法错误
[Error] unexpected symbol near '='

-- 运行时错误
[Error] attempt to call a nil value

形状信息面板 ​

显示当前选中对象的详细几何信息:

实体信息:

  • 体积(Volume)
  • 表面积(Surface Area)
  • 面数量(Number of Faces)
  • 边数量(Number of Edges)
  • 顶点数量(Number of Vertices)

位置姿态:

  • 质心坐标(Center of Mass)
  • 包围盒范围(Bounding Box)
  • 当前位置(Position)
  • 当前旋转(Rotation)

快捷键参考 ​

文件操作 ​

快捷键功能
Ctrl+N文件列表获得焦点时新建文件
Ctrl+S保存文件
F2文件列表获得焦点时重命名选中的文件

编辑操作 ​

快捷键功能
Ctrl+Z撤销
Ctrl+Y重做
Ctrl+C复制
Ctrl+V粘贴
Ctrl+X剪切
Ctrl+F查找

脚本执行 ​

按 F5 或点击 Run 显式运行脚本;勾选 Auto preview 时,打开或保存文档会自动执行预览。

使用技巧 ​

1. 快速原型开发 ​

  • 在编辑器中编写简短代码段
  • 根据3D视图调整参数
  • 迭代优化设计

2. 调试模型 ​

  • 使用 print() 输出中间结果
  • 使用 :show() 分步显示模型
  • 通过形状信息面板检查尺寸
  • 使用选择模式检查细节

3. 参数化建模 ​

lua
-- 使用变量控制尺寸
width = 10
height = 20
depth = 5
radius = 1

box.new(width, height, depth)
   :fillet(radius, {})
   :show()

4. 批量显示 ​

lua
-- 一次显示多个对象
box1 = box.new(5, 5, 5):color("red")
box2 = cylinder.new(2, 8):x(10):color("blue")
box3 = sphere.new(3):x(20):color("green")

show({box1, box2, box3})

5. 使用注释 ​

lua
-- 良好的注释习惯
-- 创建基座
base = cylinder.new(50, 35)

-- 创建孔洞
hole = cylinder.new(10, 40):z(-5)

-- 布尔运算
result = base:cut(hole)
result:show()

常见问题 ​

Q: 模型显示不完整或看不见? ​

A: 尝试以下方法:

  1. 右键点击3D视图,选择 Fit All
  2. 检查脚本是否调用了 :show() 方法
  3. 检查对象的位置是否超出视野范围
  4. 检查透明度设置是否过高

Q: 脚本执行报错如何处理? ​

A: 查看终端窗口的错误信息:

  1. 检查语法错误(如缺少括号、逗号等)
  2. 检查函数名和参数是否正确
  3. 检查变量是否已定义
  4. 参考 脚本函数文档

Q: 如何导出高质量的STL文件? ​

A: 使用 export_stl() 并设置合适的参数:

lua
export_stl("model.stl", {
    type = "binary",
    radian = 0.01  -- 越小越精细
})

Q: 选择的边缘信息不准确? ​

A: 调整容差参数:

lua
-- 增大 tol 值以提高匹配率
edge_info = {
    type = 'line',
    first = {0, 0, 0},
    last = {10, 0, 0},
    tol = 1e-2  -- 从默认的 1e-6 增大到 1e-2
}

相关参考 ​