【AI聊2块钱】双螺旋循环楼梯


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° 扇形:

  1. 用 Polyline 绘制扇形轮廓(外弧 → 内边 → 内弧 → 闭合)
  2. Solid.CreateExtrude(轮廓, 空, Vector3(0,0,0.03)) 挤出 3cm 板厚
  3. 首块 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 负责:

  1. 理解几何需求,调用 Tulo.Geometry API(Polyline、Box3、Solid.CreateExtrude、PreviewObject)
  2. 参数化脚本管理(save_script / run_script),确保所有构件联动
  3. 在多次迭代中调整方案(从局部 Blend 到全高渐变,再到三阶段分段渐变)
  4. 最终产出 14 参数全联动的参数化模型

核心体验:说人话 → 看结果 → 微调 → 继续,像跟一位资深几何算法工程师结对编程。