跳到内容
当前位置:首页>下载方法>下载的 STL 改不动?这个开源工具,让模型不用重画也能改孔

下载的 STL 改不动?这个开源工具,让模型不用重画也能改孔

  • 2026-11-07 10:01:33
下载的 STL 改不动?这个开源工具,让模型不用重画也能改孔

下载的 STL 改不动?这个开源工具,让模型不用重画也能改孔

下载一个支架模型,只想把中间的孔开大一点。

外形合适,厚度合适,四周安装孔也合适。偏偏到手的是 STL,没有原始工程文件。导入 CAD 一看,圆孔被切成一圈小面,点来点去,选中的总是其中一小片。

为了改这一个孔,重新描轮廓、画草图,再把整个零件做一遍,实在有些不划算。

Mesh Mix-S2C 做的,就是把这类网格重新整理成 CAD 能接着处理的几何。 平面归成平面,圆柱孔重建成圆柱面,最后输出 STEP。接下来再到 FreeCAD 里改孔、补安装位,或者做一次布尔运算。

我用一块尺寸已知的安装板跑了一遍。STL 有 2132 个三角片,重建后得到 11 个 CAD 面。再把中心孔从 8 mm 改成 12 mm,导出后重新读取,仍然是一个有效实体。

先看改孔过程:

安装板外形没有缩放,四个小孔也没动。变化只发生在中心孔周围。

先把这块板说明白

这次专门做了一块规则测试件,先保留已知尺寸,再只把 STL 交给转换器。这样,转换完以后可以回过头核对孔径、板厚和实体,而不只是看它有没有生成文件。

部位
尺寸
修改要求
外形
60×40 mm
保持不变
厚度
6 mm
保持不变
中心孔
直径 8 mm,贯穿
扩大到 12 mm
四个安装孔
直径 3.2 mm
保持不变
安装孔中心
X 为 ±22 mm,Y 为 ±12 mm
保持不变
模型位置
板中心在 X=0、Y=0,底面 Z=0
方便定位切削圆柱

结果分两次检查。第一次检查 Mesh Mix-S2C 重建出来的 STEP;第二次检查扩大中心孔并重新导出的文件。

检查项
重建后的安装板
改孔后重新导入
长、宽、厚
60×40×6 mm
60×40×6 mm
中心孔直径
8.000 mm
12.000 mm
安装小孔直径
约 3.200 mm
约 3.200 mm
CAD 面数
11
11
实体数量
1
1
几何有效性
通过
通过

我还核对了一下被切掉的体积。扩大中心孔,相当于挖掉一圈高 6 mm、内半径 4 mm、外半径 6 mm 的材料,理论体积是约 376.991 mm³。前后文件的体积差也是这个数。

这比“看着孔好像大了”更可靠。外形没缩放,孔确实扩大了,模型也没有悄悄多出一个壳。

STL 为什么总是不好改

CAD 里的一个圆柱面,可以用轴线、半径和高度来描述。软件知道它是圆柱,测孔径、找轴线、做切除,都有几何依据。

STL 只记录三角片的顶点和法向。一个圆孔导出后,变成很多小平面围成的近似轮廓。“这是直径 8 mm 的孔”这层信息,文件里已经没有了。

所以,把每个三角片原样装进 STEP,文件当然也叫 STEP,但 CAD 里仍然是一大堆碎面。选面和编辑照样费劲。

Mesh Mix-S2C 会先找出相邻区域,再尝试用平面、圆柱、圆锥、圆环等曲面去拟合。识别不了的部分,再交给自由曲面处理。新实体生成后,还要重新和输入网格比较,检查有没有明显凹进去、鼓出来或丢掉一块。

这块板的结果很好理解:上下两个大面,四个侧面,加上五个孔壁,正好是 6 个平面和 5 个圆柱面。

恢复的是可继续处理的几何,不是原作者的建模历史。 原来草图上标了哪些尺寸、先拉伸还是先打孔、用了哪些约束,STEP 不会替你找回来。后面在 FreeCAD 里新建的圆柱和切除,才是我们自己加上去的修改过程。

软件从哪里下,第一次怎么装

只想处理模型,不用先搭 Python 环境。先下载 Mesh Mix-S2C 的桌面版,再准备一个能打开 STEP 的 CAD 软件即可。

软件
用来做什么
这次使用方式
Mesh Mix-S2C
读取网格、检查、重建、导出 STEP
2.0 系列,桌面界面与源码引擎都跑了一遍
FreeCAD
打开 STEP、建立切削圆柱、布尔切除、再次导出
1.1.4,Part 工作台
Python
批量转换、读取日志、重复检查
源码路线才需要;这次测试环境为 3.13

1. 在 GitHub 的 Assets 里找安装包

先打开 Mesh Mix-S2C 官方发行页。完整网址是:

https://github.com/STL2CURVES-MMM/Mesh-Mix-S2C/releases/tag/v2.0.1

这里用的是 2.0.1 版。页面往下找 Assets(下载文件),如果这一栏收起来了,点它左侧的小三角展开。下载公开安装包不需要先注册 GitHub 账号。

你的电脑
要找的文件
下载后怎么处理
Windows 10/11,64 位
MeshMix-S2C-2.0.1-Windows-x64-Setup.exe
双击运行安装向导
M 系列芯片的 Mac
MeshMix-S2C-2.0.1-macOS-arm64.zip
解压,把应用移到 Applications(应用程序)
Linux,x86_64
MeshMix-S2C-2.0.1-Linux-x86_64.AppImage
给文件执行权限后运行
想核对下载文件
SHA256SUMS.txt
用来比对文件校验值,不是程序

Source code (zip) 和 Source code (tar.gz) 是源码。 只想打开软件处理模型,就先下载上面与你系统对应的应用包,不要下完源码又到处找安装按钮。Intel 芯片的 Mac 也不能直接使用这份 arm64 应用。

Windows 可以直接点 下载 2.0.1 的 Windows 安装包。它的完整地址是:

https://github.com/STL2CURVES-MMM/Mesh-Mix-S2C/releases/download/v2.0.1/MeshMix-S2C-2.0.1-Windows-x64-Setup.exe

2. Windows 安装向导这样看

运行刚下载的 .exe。如果出现语言选择,选 English(英语)。接着按页面顺序走:

  1. License Agreement(许可协议)
    :阅读许可;同意后选择 I accept the agreement(接受协议),再点 Next(下一步)。不同意就退出安装。
  2. Select Destination Location(安装位置)
    :出现这一页时保留默认目录,再点 Next。已有旧版时,这一页可能被略过。
  3. Select Additional Tasks(附加选项)
    :需要桌面快捷方式,就勾 Create a desktop icon(创建桌面图标)。不勾也能从开始菜单启动。
  4. Ready to Install(准备安装)
    :核对程序名和位置,点 Install(安装)。
  5. Completing…(安装完成)
    :想立即启动,保留 Launch Mesh Mix-S2C(运行软件),点 Finish(完成)。

这份桌面包已经带好转换引擎。走到这里,不用另外装 Python,也不用把模型上传到云端。

安装后,在开始菜单搜索 Mesh Mix-S2C。第一次打开,应该看到左边的文件区、中间的三维预览、右边的设置区。若安全软件拦截或来源不明,先核对官方下载地址和 SHA256SUMS.txt,不要关闭防护。下载失败时回到同一发行页重试,不必换成不明网盘里的同名安装包。

3. FreeCAD 也从官方取

打开 FreeCAD 官方下载页:

https://www.freecad.org/downloads.php

这次使用 FreeCAD 1.1.4。Windows 下载选项里,installer.exe 是安装版;.7z 是免安装压缩包。选免安装版,就先完整解压,再进入里面的 bin 文件夹,双击 freecad.exe,不要在压缩包窗口中直接运行。系统解压工具不支持时,用 7-Zip 解压。

第一次打开是英文,也可以切中文:进入 Edit → Preferences(编辑 → 首选项),左边选 General(常规),找到 Language(语言),选择简体中文,点 Apply(应用)、OK(确定);界面没有立即切换时,重新启动 FreeCAD。

已有 Fusion、SolidWorks 或 Onshape,也能接后半段。下面用 FreeCAD,是为了把转换和修改都放在开源软件里完成。

4. 先整理一个练习文件夹

在你自己的工作目录里新建一个文件夹,比如 stl-test,把原始 STL 放进去。原文件留着,后面转换的 STEP、修改后的 STEP 和 FreeCAD 工程分别取名,别全用同一个文件名覆盖。

本例依次会得到 plate-input.stl、plate-rebuilt.step、plate-hole12.step 和 hole-edit.FCStd。没有这块练习板,也可以先用自己的带孔支架;先量清楚它的实际尺寸,不要照搬后面的孔中心坐标。

第一步:放入 STL,先检查尺寸

打开 Mesh Mix-S2C,先认一下三个区域。左边的 QUEUE(文件队列) 放输入文件;中间显示模型和统计值;右边的 PRESET(转换预设)、SPEED ↔ QUALITY(速度与质量)、EXPORT TO(导出位置) 决定怎么转换、文件存到哪里。

添加 STL 有两条路,任选一条:

  1. 从资源管理器把 .stl 拖到左上角 Drop files or folders here(把文件或文件夹拖到这里) 的虚线框里。
  2. 或者点左上菜单 File → Add Files…(文件 → 添加文件),选中 STL,再点文件选择窗口里的 Open(打开)。快捷键是 Ctrl+O。

左边出现文件名后,先等它读取。Inspecting(正在检查) 还没完成时不要急着转换;变成 Ready(已就绪),再单击队列里的文件名,中间应该出现模型。已经在队列中时,再导入一遍并不能让它“读得更完整”,反而容易把自己绕晕。

这里先别急着按 Convert,看看预览底部的小块:TRIANGLES(三角片数量) 应当是 2132,SIZE(外形尺寸) 应当是 60.0×40.0×6.0 mm。

看不到模型时,先确认左边的文件名被选中了,再点预览右上方的 Reset view(重置视角) 按钮。滚轮可以缩放;按住左键拖动是旋转;按住中键或右键拖动是平移。把模型拖出画面了,重置视角比反复缩放容易找回来。

STL 本身没有标准化的单位字段。一个按毫米导出的模型,被当成英寸读取,尺寸就会差一大截。模型看起来还是一块板,后面的孔径却全错了。

手上有图纸,就对照图纸。没有图纸,至少核对一个已知尺寸,比如螺丝孔直径或两孔间距。

单位在右侧设置栏里。把鼠标放到这条设置栏上向下滚动,在 EXPORT TO 区域里找到 Units(单位),下拉框选 Millimeters(毫米)。不要只滚中间的模型区,那里滚轮管的是模型缩放,不会把设置栏往下翻。

这里只是把 STL 数字按什么单位解释。模型本身按毫米设计,就选毫米;尺寸不对先查导出单位,不要为了“看起来正常”随意缩放整件。

网格检查也要看。开口、自相交、翻转的三角片、混在内部的碎面,都可能影响实体重建。修补后再看一次孔和凹槽,确认需要保留的结构还在。通孔是有完整孔壁的结构,不该因为名称里也有一个“孔”字,就当成网格破洞去填。

几个彼此独立的零件放在一起,转换后可能得到多个实体。那并不一定错;但这次的安装板本来是一整块,所以目标就是一个实体。

第二步:选 CAD,别先把质量拉满

把右侧设置栏滚回顶部,能看到 Auto、CAD、Smooth、Precise 四张选项。它们可以直接点选,选中的那一张有边框和勾号,不是只把鼠标停上去。

预设
适合的模型
先关注什么
Auto
第一次尝试、不确定类型的模型
看它最终用了哪种方法
CAD
支架、壳体、轮毂、带孔安装板
平面与圆柱面能否合并出来
Smooth
雕塑、有机造型、部分扫描网格
曲面能否贴合原形状
Precise
需要更紧拟合、愿意多花时间的模型
文件大小、耗时和实际误差

这块板有明确平面和孔,直接点 CAD,确认勾号移到 CAD 那一栏。桌面版我也用默认 Auto 跑过一次,它最终选用的同样是 CAD,结果也是 11 个面。

接着看下方的 SPEED ↔ QUALITY。往 Faster(更快) 那边拖,通常会减少耗时;往 Better(更好) 那边拖,会花更多时间贴合几何。本例选 CAD 后把质量放到约 90%;如果保留 Auto 预设,先保留它自动给的质量值也可以。

第一次还把下面几项核对好:

英文界面
中文含义
本例怎么选
Units / Millimeters
输入单位 / 毫米
选 Millimeters
Subfolder next to the original
在原文件旁创建子文件夹
选中,名称保留 STEP Files
Replace existing files
覆盖已有同名文件
先不勾,保留旧结果
Advanced
高级选项
第一次不必展开改动
Mesh repair / Automatic
网格修复 / 自动
保留自动,不随意加强修复

小零件通常没必要为了省几秒牺牲孔壁质量,但也没必要一上来把所有扫描纹理都拟合进 STEP。

有些人以为“面数越少越好”。也得看少掉的是什么。把本来平整的大面合成一个面,很有用;把一个浅槽、倒角或者卡扣抹平,后面就可能装不上。

第三步:转换以后,切换 Mesh 和 STEP 看差别

设置好后,点右下角的 Convert 1 file(转换1个文件);文件数不同,按钮上的数量会跟着变化。过程中会出现检查、识别曲面、写入 STEP 等阶段,等左边文件变成 Done(完成) 再看结果。

完成后,先单击左边这条文件。预览右上角有 Mesh / STEP 两个切换项:Mesh 是输入网格,STEP 是转换结果。点 STEP,再点旁边像调色板的按钮,让每个 CAD 面显示不同颜色;再点一次可以回到统一颜色。只改变配色,不会修改模型尺寸。

在 STEP 视图中按住左键拖动,绕着孔看一圈。孔壁应当连续,背面也应当完整。结果旋转过头,就点旁边的重置视角按钮。

在这块板上,大平面变成完整的一块颜色,孔壁也不再是一圈零碎平面。底部结果显示 Faces 11、Solids 1,顶部出现 File checked。

这次命令行冷启动,从启动进程到退出约 30.4 秒;软件记录的转换阶段约 7.4 秒。桌面版那次记录约 11 秒。加载 Python 和几何库的时间也算在等待里,别把界面上某一段用时当成所有电脑的总耗时。

我主要看这几项:

  • 孔有没有保留。
     旋转模型,看孔壁和底部,别只看俯视图。
  • 曲面有没有被拆碎。
     规则平面和孔壁应当容易选取;大量小面仍在,就还没解决编辑难题。
  • 实体数量对不对。
     该是一块板,就不应多出几个游离小体。
  • 检查是否通过。
     有警告就展开看,单纯生成 STEP 文件还不够。

几个容易看混的英文提示,可以按下面处理:

看到的提示
现在是什么状态
下一步
Inspecting
正在读取、检查输入
等待,不重复添加同一文件
Ready
文件已就绪,还没有转换
核对预设,点 Convert
Done
转换完成
看 STEP,再检查是否导出
File checked
当前输出已通过软件检查
继续核对尺寸和细节,准备导出
Not exported yet
结果还没有保存到目标目录
点 Export,并在弹窗里再次确认
Failed
这一轮失败
选中文件看错误信息,不把残留文件当成功结果
Name taken
目标目录已经有这个名字
换新名字,或确认是否真的需要覆盖

第四步:把 STEP 真正导出到文件夹

模型已经出现在窗口里,先看右上角有没有 Not exported yet(尚未导出)。有这行字,就说明还没把结果写到自己的文件夹。

  1. 点预览区右下角的 Export…(导出),或者右侧的 Export 1 STEP file…(导出1个STEP文件)。
  2. 弹出 Export 对话框后,先看上面的 File(文件名)。在输入框填 plate-rebuilt 即可,右边已经显示 .step,不用再手动补一遍扩展名。
  3. 在 Save to(保存位置) 中选 Subfolder next to the original(原文件旁的子文件夹)。下面的文件夹名填 STEP Files。
  4. 若想另选位置,改选 A folder I choose(我指定的文件夹),再点 Choose…(选择),进入目标文件夹并确认;出现 No folder chosen yet(尚未选择文件夹) 时,还没选好。
  5. 第一次不勾 Replace files that already exist(覆盖已有文件)。核对文件名和下方目标路径,最后点对话框右下角的 Export。这才是实际保存。

例如原 STL 放在 stl-test 里,选了上面的子文件夹方案,输出就位于 stl-test/STEP Files/plate-rebuilt.step。去资源管理器确认这个文件存在,再进入下一步。

同名冲突时,Replace(替换) 会覆盖旧文件;Save as New Name(用新名字保存) 会保留旧文件并另存。练习阶段用新名字更方便比较。原始 STL 一直留着,后面的修改从新 STEP 开始。

第五步:在 FreeCAD 中把孔扩大

在 FreeCAD 中点 File → Open(文件 → 打开),或按 Ctrl+O,选择刚导出的 plate-rebuilt.step。出现 STEP 导入选项时,第一次保留默认选项并确认。

看顶部工具栏中间的工作台下拉框,选 Part(零件)。别选成名字很接近的 Part Design(零件设计),下面这条路线用的是 Part 的基本体和布尔运算。

左边模型树里应该多出导入对象,单击它确认模型在场景里。看不到左边的树,可从 View → Panels(视图 → 面板) 恢复模型树或 Combo View(组合视图)。展开对象用旁边的小三角,显示与隐藏用空格,两件事别混在一起。

找不到模型时,先执行 View → Standard views → Axonometric(视图 → 标准视图 → 轴测),再用 View → Standard views → Fit all(适合全部) 把它放回画面。先看一下整块板,再核对长、宽、厚和中心孔。

这次只扩大中心孔,用一个圆柱做布尔切除就够了,不需要把整个零件重新描出来。

1. 建立切削圆柱

点菜单 Part → Create primitives…(零件 → 创建基本体),会打开 Geometric Primitives(几何基本体) 任务面板。类型下拉框选 Cylinder(圆柱),按下表填写;如果先创建了圆柱,也可以在左边模型树选中它,在下方 Data(数据) 页修改同一组参数。

参数
数值
为什么这样设
Radius
6 mm
目标孔径 12 mm,半径就是 6 mm
Height
8 mm
板厚 6 mm,上下各多穿出 1 mm
Position X
0 mm
本例中心孔位于板中心
Position Y
0 mm
与孔中心对齐
Position Z
-1 mm
从板底面以下开始切
Axis
Z 方向
和原来的孔轴线一致

圆柱做得比板厚长一点,是为了让切削体完整穿过板。只让两个端面恰好贴齐,反而容易给后续布尔运算留下不必要的重合面问题。

位置通常折叠在 Placement → Position(放置 → 位置) 下面,点小三角展开,分别找到 x、y、z。注意 z=-1 mm 带负号。若已经选中了圆柱,却只看到颜色、线条之类的属性,切换到 Data,不要停在 View(显示) 页。

任务面板里点 Create(创建) 后,圆柱就已经生成,面板可能还留着;再点 Close(关闭) 结束创建。不要为了退出面板反复点 Create,否则会多出好几个圆柱。

想看清圆柱和孔怎么重叠,选中圆柱,在属性的 View(显示) 页找到 Transparency(透明度),设为约 55。0 是完全不透明,数值越大越透明。这里改透明度只为方便观察,实际切除仍由完整的圆柱体完成。

检查它是否套住原来的 8 mm 孔。这一眼很有必要:如果模型原点在角上,或者下载文件的孔根本不在坐标原点,直接照填 X=0、Y=0,就会挖错位置。

换自己的零件时,先测孔中心。倾斜孔还需要调整圆柱轴线,不能只改半径。

2. 按顺序选择,再做差集

先在三维空白处单击,清掉旧选择。然后到左边模型树,按以下顺序操作:

  1. 单击原来的安装板对象。
  2. 按住 Ctrl,单击刚创建的 Cylinder。
  3. 确认树中只有这两个对象被选中,松开 Ctrl。
  4. 点 Part → Boolean → Cut(零件 → 布尔运算 → 差集/切除)。

前一个对象是保留下来的主体,后一个是用来切掉材料的工具。顺序反了,得到的会是“圆柱减安装板”,外观自然不对。

切除成功后,模型树会出现 Cut。展开 Cut,通常能看到作为输入的板和圆柱被收在下面。软件会隐藏输入对象;如果仍看到它们,选中对应输入对象按空格,切换隐藏,只保留 Cut 可见。

中心孔应当明显扩大,四个小孔和外边缘不变。若结果只剩一段圆柱,通常是前后选择顺序反了,按 Ctrl+Z 撤销,再按“板在先、圆柱在后”重做。

这次我保留了这个切除关系。模型树里还能找到原 STEP、切削圆柱和 Cut。演示里继续调整圆柱半径,Cut 会重新计算,孔径也跟着更新;以后想把孔改成 10 mm,只需把圆柱半径改成 5 mm。

这是我们新增的参数化修改。原 STL 的草图和特征树并没有回来。

3. 保存工程,再导出零件

先点 File → Save As…(文件 → 另存为),取名 hole-edit.FCStd,留住刚才的圆柱与 Cut 关系。

接着在左边模型树只选最外层的 Cut,点 File → Export…(文件 → 导出),或按 Ctrl+E。在文件类型里选 STEP,文件名填 plate-hole12.step。如果随后出现 STEP 导出设置窗口,先保留默认设置并确认。

要给切片软件,再做一次 File → Export,文件类型选 STL Mesh(STL网格),另存为 plate-hole12.stl。.FCStd 用来保留修改关系,STEP 用来继续做 CAD 编辑,STL 用来切片,三者别混用。

别同时选中原件、圆柱和最终件一起导出,否则导出的内容可能混进多余实体。

最后关闭修改结果,重新打开刚导出的 STEP,检查中心孔、板厚、实体数量。安装板这次通过了 FreeCAD 的有效性检查,中心孔圆柱面的半径为 6 mm,外形仍为 60×40×6 mm。

从顶部看孔的大小,从底部确认孔确实贯通,再回到轴测看板厚。想以后再改孔,打开的是 hole-edit.FCStd,展开 Cut,选中里面的圆柱,在 Data 里改 Radius;只打开导出的 STEP,不会看到这条圆柱切除关系。

打印之前再进切片软件看一遍层预览。CAD 中的 12 mm,是模型的标称尺寸;实际孔能不能穿过手上的轴,还要看打印材料、收缩和机器的尺寸补偿。需要紧配合时,先打一小块孔径试片更省事。

想用程序重复做,核心只有这几步

FreeCAD 的 Python 控制台也能完成同样的修改。点 View → Panels → Python console(视图 → 面板 → Python控制台),底部出现带 >>> 的输入区。先打开转换后的 STEP,在模型树中选中这个实体,再运行下面的代码。

需要保存成可以反复执行的程序,就用 Macro → Macros…(宏 → 宏),点 Create(创建),取名 EnlargeHole,把代码放进打开的编辑器中保存;返回宏列表选中它,再点 Execute(执行)。FreeCAD 自带运行环境,这段代码在 FreeCAD 内执行,不是在 Windows 的普通 Python 终端中执行。

import FreeCAD as App import FreeCADGui as Gui import Part  doc = App.ActiveDocument base = Gui.Selection.getSelection()[0]  tool = doc.addObject("Part::Cylinder", "HoleTool") tool.Radius = 6 tool.Height = 8 tool.Placement.Base = App.Vector(0, 0, -1)  cut = doc.addObject("Part::Cut", "Hole12") cut.Base = base cut.Tool = tool doc.recompute()  base.Visibility = False tool.Visibility = False Gui.activeDocument().activeView().fitAll() print(cut.Shape.isValid(), len(cut.Shape.Solids)) 

最后一行应当得到 True 1:有效几何,一个实体。

这里真正控制结果的是半径、高度、位置和轴线。程序不会替你判断“这个孔是不是要改的孔”。这组坐标只对应前面的测试板;换文件,先量位置,再改参数。

把这段操作保存成宏,就适合重复处理同一类安装板。想保留以后可调的孔径,用上面的 Part::Cylinder + Part::Cut 关系;只想快速得到一个结果,也可以直接用 base.Shape.cut(...) 做形状差集。

批量转换,命令行更合适

一次要处理几个 STL,不必反复开窗口。Mesh Mix-S2C 的转换引擎就在公开源码的 engine 目录里。

获取源码时,打开前面的项目主页,点绿色 Code,再选 Download ZIP(下载源码压缩包)。把 ZIP 完整解压,进入同时能看到 requirements.txt 和 engine 文件夹 的那一级目录。不要停在 ZIP 外层,也不要钻进 engine 子目录里再运行下面的命令。

Windows 下可以在这个目录的资源管理器地址栏输入 powershell 并回车,在当前文件夹打开命令窗口。先用 python --version 确认 Python 能运行,再建立虚拟环境、安装依赖。桌面发行版已经带好运行环境;只用桌面程序的读者,到前面的 STEP/STL 导出就已经完成,不必再走这段。

python -m venv .venv .\.venv\Scripts\python.exe -m pip install -r requirements.txt 

上游构建文档使用 Python 3.14;这次独立环境使用 Python 3.13,按仓库锁定依赖安装后跑通。自己搭环境时,先按所下载版本的 README 配置,别把几个版本的依赖混在一起。

下面始终直接调用 .venv\Scripts\python.exe,不必先运行激活脚本,也不用为了激活环境去修改 PowerShell 执行策略。依赖安装没有成功时,先读报错、修好环境,再启动转换。

把模型放到当前目录,再运行:

.\.venv\Scripts\python.exe engine\mmm_engine.py convert plate-input.stl -o plate-rebuilt.step --preset cad --json 

--preset cad 指定机械曲面路线,--json 输出逐行日志。批处理程序可以读取最后的 result 事件,检查 valid、solids、faces 和 checked,再决定是否进入下一步。

这次日志里的关键结果是:

{   "preset": "cad",   "valid": true,   "solids": 1,   "faces": 11,   "checked": true,   "check_ok": true } 

valid 表示几何有效,checked 表示做过检查,check_ok 才说明这一轮检查通过。不要只检查输出文件是否存在,也不要只看到 checked: true 就自动放行。

做成批处理时,原文件、输出 STEP 和日志分开保存。某个文件失败,保留日志和失败文件,跳过它继续处理后面的模型,别让一次错误把整批结果覆盖掉。

哪些模型值得试,哪些别硬转

带孔板、直角支架、规则壳体、机械安装件,是比较容易看出价值的一类:模型原本就由平面和圆柱组成,修改需求也明确。

带圆角和弯臂的支架,会比这块板难处理一些。除了面数,还要看相邻曲面是否接得好,圆角是否保住,薄壁有没有变厚或变薄。项目仓库里有几组更复杂模型的对比结果,可以对照自己的零件类型看。

雕塑、人物、布纹或者带细密镂空的模型,即使能输出 STEP,也可能仍然是很多自由曲面。它们的难点与“合并一个圆柱孔壁”不同,不一定适合继续用机械 CAD 编辑。

还有几种情况,我会先停下来:

模型本来就很粗。 一个低边数圆孔,已经丢失了连续圆弧的信息。拟合出来的圆柱有利于编辑,却不能证明拟合半径就是设计者当初填的数。要装配,仍要对照真实尺寸。

转换后出现 Flat faces。 软件有时会保留原网格的平面碎片,优先得到有效结果。文件可能可用,但这不等于获得了干净的 CAD 曲面。若仍然难选面,试另一种预设;还不行,就局部重画。

修复改变了薄壁或槽。 薄卡扣、浅槽、紧挨着的双层壁,修复时尤其要看剖面。外轮廓看着差不多,里面的装配结构却可能变了。

本来就有原始工程文件。 能下载原始 CAD,就直接改源文件。源文件上的尺寸约束、装配关系和特征顺序,比从网格反推方便得多。

这类工具最适合接住的是:没有源文件,模型主体还合适,只需要改几个具体地方。先试一遍重建,看看孔、平面和实体是否足够干净,再决定接着改,还是重画那一小部分。

开源资料与软件下载

1. Mesh Mix-S2C:完整项目

这里有软件使用说明、转换引擎、桌面界面代码和测试脚本。只想使用软件,先看 README 的 Using it(使用方法);想研究算法,看 engine/mmm/ 和 engine/mms2c/;想看 Windows/Linux 界面实现,看 desktop/;tests/ 放的是测试与模型生成工具。

项目网址:https://github.com/STL2CURVES-MMM/Mesh-Mix-S2C

打开完整项目与使用说明

2. Mesh Mix-S2C:直接可运行的桌面版

这里提供 Windows 安装程序、Apple Silicon Mac 压缩包、Linux AppImage 和校验文件。普通读者从这个页面取应用,不需要先下载源码、安装依赖或编译。进入具体版本后,展开 Assets,按前面的文件名表选择。

发行页网址:https://github.com/STL2CURVES-MMM/Mesh-Mix-S2C/releases

打开桌面软件下载页

本次使用的固定版本:https://github.com/STL2CURVES-MMM/Mesh-Mix-S2C/releases/tag/v2.0.1

打开2.0.1版文件列表

3. stl2curves:几何识别的上游项目

这里主要看从网格识别孔、圆角、螺纹等几何的程序和测试。它已经与 Mesh Mix-S2C 的相关流程合并;跟着这篇教程操作,不需要再把它当作第二款桌面软件安装一遍。

上游网址:https://github.com/Duvdivan/stl2curves

查看几何识别代码与说明

4. FreeCAD:接着修改模型

用来读取 STEP、建立切削圆柱、执行 Cut、保存 .FCStd 工程,并导出修改后的 STEP 或 STL。官网下载页按操作系统提供安装包;Windows 的安装版与免安装版不要混淆。

下载网址:https://www.freecad.org/downloads.php

打开FreeCAD官方下载页

1.1.4版官方文件列表:https://github.com/FreeCAD/FreeCAD/releases/tag/1.1.4

打开FreeCAD 1.1.4安装包列表

5. 基本体创建:圆柱从哪里来

这份官方文档解释 Part → Create primitives…,包括类型选择、参数填写、Create 与 Close 的区别,以及创建后如何继续改属性。找不到 Cylinder 的读者,从这里对照自己的界面。

文档网址:https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/Part_Primitives.md

阅读基本体创建说明

6. Part Cut:差集的选择顺序

这份文档解释 Base(保留的主体)和 Tool(切削工具),对应前面“先选板、后选圆柱”的顺序。切完只剩圆柱、结果不对或者按钮不可用时,先检查这一项。

文档网址:https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/Part_Cut.md

阅读布尔差集操作说明

7. 文件导出:保留工程还是交给切片

这份官方文档解释 File → Export 的对象选择和格式选择。保存 .FCStd 是保留工程;导出 STEP/STL 是产生交换或打印文件。工程保存了,不代表已经导出了给切片软件的 STL。

文档网址:https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/Std_Export.md

阅读文件导出说明

Mesh Mix-S2C 整体采用 AGPL-3.0。组件来源和许可可以在项目内的 NOTICE.md 与 THIRD_PARTY_NOTICES.md 查到。

下一次碰到“就差一个孔”的模型,先看有没有源文件;没有,再试这条路线。能省掉的,就是为了这一处修改,把整块板重新画一遍。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-11-07 10:06:39 HTTP/1.1 GET : http://yeyulingfeng.com/a/499262.html
  2. 运行时间 : 0.100943s [ 吞吐率:9.91req/s ] 内存消耗:4,577.56kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3a0cdb630e85c9c6b6b30c5cf941a557
  1. /www/wwwroot/yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /www/wwwroot/yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /www/wwwroot/yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /www/wwwroot/yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /www/wwwroot/yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /www/wwwroot/yeyulingfeng.com/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /www/wwwroot/yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /www/wwwroot/yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /www/wwwroot/yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /www/wwwroot/yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /www/wwwroot/yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /www/wwwroot/yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /www/wwwroot/yeyulingfeng.com/app/provider.php ( 0.19 KB )
  23. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /www/wwwroot/yeyulingfeng.com/app/common.php ( 0.03 KB )
  27. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /www/wwwroot/yeyulingfeng.com/config/app.php ( 0.95 KB )
  30. /www/wwwroot/yeyulingfeng.com/config/cache.php ( 0.78 KB )
  31. /www/wwwroot/yeyulingfeng.com/config/console.php ( 0.23 KB )
  32. /www/wwwroot/yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  33. /www/wwwroot/yeyulingfeng.com/config/database.php ( 2.50 KB )
  34. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /www/wwwroot/yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  36. /www/wwwroot/yeyulingfeng.com/config/lang.php ( 0.91 KB )
  37. /www/wwwroot/yeyulingfeng.com/config/log.php ( 1.35 KB )
  38. /www/wwwroot/yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  39. /www/wwwroot/yeyulingfeng.com/config/route.php ( 1.89 KB )
  40. /www/wwwroot/yeyulingfeng.com/config/session.php ( 0.57 KB )
  41. /www/wwwroot/yeyulingfeng.com/config/trace.php ( 0.34 KB )
  42. /www/wwwroot/yeyulingfeng.com/config/view.php ( 0.82 KB )
  43. /www/wwwroot/yeyulingfeng.com/app/event.php ( 0.25 KB )
  44. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /www/wwwroot/yeyulingfeng.com/app/service.php ( 0.13 KB )
  46. /www/wwwroot/yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  47. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /www/wwwroot/yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  53. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /www/wwwroot/yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /www/wwwroot/yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /www/wwwroot/yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /www/wwwroot/yeyulingfeng.com/app/Request.php ( 0.09 KB )
  84. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /www/wwwroot/yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  86. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /www/wwwroot/yeyulingfeng.com/route/app.php ( 1.72 KB )
  100. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /www/wwwroot/yeyulingfeng.com/app/controller/Index.php ( 5.22 KB )
  104. /www/wwwroot/yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  105. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /www/wwwroot/yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /www/wwwroot/yeyulingfeng.com/runtime/temp/44b959ca79ad33496f044db2c231b11d.php ( 8.29 KB )
  140. /www/wwwroot/yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000636s ] mysql:host=172.18.0.4;port=3306;dbname=no_yeyulingfeng;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000780s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000447s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000407s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000739s ]
  6. SELECT * FROM `set` [ RunTime:0.000357s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000802s ]
  8. SELECT * FROM `article` WHERE `id` = 499262 LIMIT 1 [ RunTime:0.000621s ]
  9. UPDATE `article` SET `lasttime` = 1794017199 WHERE `id` = 499262 [ RunTime:0.002077s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000390s ]
  11. SELECT * FROM `article` WHERE `id` < 499262 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000557s ]
  12. SELECT * FROM `article` WHERE `id` > 499262 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000459s ]
  13. SELECT * FROM `article` WHERE `id` < 499262 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000838s ]
  14. SELECT * FROM `article` WHERE `id` < 499262 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000834s ]
  15. SELECT * FROM `article` WHERE `id` < 499262 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000975s ]
0.116813s