AI总结
E3 编辑器实战:用 AI 对话搞定一套嵌套双螺旋楼梯
全程零代码手写,AI 对话式建模,14 个参数联动,5 种构件一气呵成。
项目背景
在 E3 Editor 的 Chatbot 面板中,我用自然语言向 AI 描述需求,AI 自动生成 C# 脚本调用 Tulo.Geometry 几何库,实时在 3D 视口中渲染结果。下面记录从零到一的完整过程。
初始需求:
- 内径 0.5m / 外径 3.5m
- 层高 4.5m,共 4 层
- 栏杆高度 1.1m
- 螺旋旋转楼梯
第一步:螺旋母线
对话:“帮我绘制出基础的螺旋形母线”
AI 用参数方程生成了三条螺旋 Polyline:
x = r × cos(θ)
y = r × sin(θ)
z = h × θ / (2π × 圈数)
- 蓝色 = 内圈 (r=0.5m)
- 绿色 = 中心 (r=2.0m)
- 红色 = 外圈 (r=3.5m)
4 层 × 4.5m = 18m 总高,360 点/圈,共 1441 个采样点。
关键一步: AI 将脚本保存为参数化模板(save_script),后续每次运行都会覆盖更新,确保所有构件始终用同一套参数生成。
第二步:内外钢梁
对话:“生成楼梯内外线上的两道钢梁,梁宽 0.2m,梁高 0.5m”
沿内外螺旋曲线,为每两个相邻采样点之间的线段生成一个 Box3 片段:
每段 = Box3.Create(Plane(中点, 径向, 向上),
Interval(-0.1, 0.1), // 宽 0.2m
Interval(0, 0.5), // 高 0.5m
Interval(-半段长, 半段长))
内圈 1440 段 + 外圈 1440 段 = 2880 个 Box3。径向定位确保梁的宽度方向始终指向圆心。
第三步:扇形踏步
对话:“生成踏步,每个踏步高度 0.15m,扇形,板厚 0.03m”
每层 30 块踏步(4.5m ÷ 0.15m),共 120 块,每块 12° 扇形:
- 用
Polyline绘制扇形轮廓(外弧 → 内边 → 内弧 → 闭合) Solid.CreateExtrude(轮廓, 空, Vector3(0,0,0.03))挤出 3cm 板厚- 首块 z=0,逐级递增 0.15m
后续加上了 treadOffset = 0.25m,踏步整体上移避开梁底。
第四步:栏杆 + 竖杆
对话:“把内外径螺旋线向上复制位移 1.1m,然后用它们生成一个半径为 0.02 的圆管”
栏杆扶手: 将螺旋线 Z 坐标 +1.1m,每 4 个采样点取一段,在垂直于切线方向的平面内生成 12 边正多边形截面,Solid.CreateExtrude 挤出成圆管。
竖向连接杆: 每个踏步位一根,从梁顶 (z+0.5m) 垂直到栏杆底 (z+1.1m),8 边截面,R=0.01m。
第五步:沿 XZ 面镜像 → 双螺旋
对话:“把整个楼梯模型沿 XZ 面关联镜像一下”
Y 坐标取反,A 螺旋 (Y>0, 右旋) + B 螺旋 (Y<0, 左旋),形成双螺旋结构。
所有构件(曲线、钢梁、踏步、栏杆、竖杆)均自动镜像。
第六步:嵌套双螺旋
对话:“镜像后的这套楼梯,内径 = 原楼梯的外径,外径 = 内径 + 3m”
A 螺旋: 内 0.5m ~ 外 3.5m
B 螺旋: 内 3.5m ~ 外 6.5m ← 套在 A 外面
两条楼梯在不同半径范围独立运行,A 在内、B 在外,形成嵌套结构。
第七步:上色
对话:“楼梯踏步要橙红色,梁和栏杆都要金属黑”
用 E3.Core.PreviewObject(几何体, Color) 包裹每个构件:
- 踏步 →
Color.OrangeRed - 钢梁 / 栏杆 / 竖杆 →
Color.FromArgb(40, 40, 42)(深灰金属黑)
第八步:首尾渐变对接(核心技术难点)
对话:“改变首层和顶层的局部曲线形态,让内部的旋转楼梯发生局部形变”
问题
A 和 B 两条螺旋在不同半径运行,如何让它们首尾连接,形成循环动线?
方案演变
第一次尝试: 局部余弦 Blend,仅首尾 0.5m 渐变 → 失败,范围太小看不出效果。
第二次尝试: 全高线性渐变 → AI 理解错了用户意图。
最终方案: 三阶段分段渐变——
A 内径:
首层 (z=0~4.5m): 3.5 → 0.5 (从 B 尺寸缩回)
中段 (z=4.5~13.5m): 0.5 (保持正常)
顶层 (z=13.5~18m): 0.5 → 3.5 (扩回 B 尺寸)
A 外径:
首层: 6.5 → 3.5
中段: 3.5
顶层: 3.5 → 6.5
B 螺旋全程固定 (内 3.5m, 外 6.5m)。
效果
- 底层 (z=0): A 和 B 完全重叠在 r=3.5~6.5m → 自然对接
- 顶层 (z=18m): A 和 B 再次完全重叠 → 循环连通
- 中间楼层 A 正常独立运行
最终参数面板(14 个参数)
| 分类 | 参数 | 默认值 |
|---|---|---|
| 楼层 | 层高 | 4.5m |
| 层数 | 4 | |
| 每层旋转圈数 | 1 | |
| A 螺旋 | A 内半径 | 0.5m |
| A 外半径 | 3.5m | |
| B 螺旋 | B 内半径 | 3.5m |
| B 外半径 | 6.5m | |
| 钢梁 | 梁宽 | 0.2m |
| 梁高 | 0.5m | |
| 踏步 | 踏步高度 | 0.15m |
| 踏步板厚 | 0.03m | |
| 踏步 Z 偏移 | 0.25m | |
| 栏杆 | 栏杆高度 | 1.1m |
| 精度 | 曲线精度 | 360 点/圈 |
全部参数联动,修改任意值后运行,所有构件同步更新。
构件统计
| 构件 | 数量 | 颜色 |
|---|---|---|
| 螺旋曲线 | 4 条 | 默认 |
| 钢梁 (Box3) | 5760 段 | 金属黑 |
| 踏步 (Solid) | 240 块 | 橙红 |
| 栏杆 (Solid 圆管) | 1440 段 | 金属黑 |
| 竖杆 (Solid) | 480 根 | 金属黑 |
小结
整个建模过程完全通过自然语言对话完成,AI 负责:
- 理解几何需求,调用 Tulo.Geometry API(Polyline、Box3、Solid.CreateExtrude、PreviewObject)
- 参数化脚本管理(save_script / run_script),确保所有构件联动
- 在多次迭代中调整方案(从局部 Blend 到全高渐变,再到三阶段分段渐变)
- 最终产出 14 参数全联动的参数化模型
核心体验:说人话 → 看结果 → 微调 → 继续,像跟一位资深几何算法工程师结对编程。

