ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

text-to-cad 多段 loft 报 “Failed to create valid loft“ 怎么定位?前缀截断与相邻配对二分法

text-to-cad 多段 loft 报 “Failed to create valid loft“ 怎么定位?前缀截断与相邻配对二分法 text-to-cad 多段 loft 报 Failed to create valid loft 怎么定位前缀截断与相邻配对二分法【免费下载链接】text-to-cadA library of agent skills for CAD, CAE and CAM项目地址: https://gitcode.com/GitHub_Trending/tex/text-to-cad用 text-to-cad 的 CAD skillbuild123d Python 源码 scripts/gen生成多截面 loft 模型时python scripts/gen可能抛出Failed to create valid loft/Recovery failed。这条报错既不指认是哪个 station截面出了问题也不给出原因——而多截面 loft 的失败点往往离真正出错的截面很远。项目的故障排查文档 repair-loop.md 对这类错误给了一个固定顺序的定位流程先排除两个静默成因再做前缀截断和相邻配对两项检查。本文按这条路径展开适用于已有一个定义gen_step()的 build123d 生成器、且能运行 skill 目录下scripts/gen的环境。前置怎么跑、报错长什么样从 CAD skill 目录启动目标路径相对命令的当前工作目录cwd解析所以要在拥有生成物的工作区里执行python scripts/gen path/to/part.step.py示例中的python是解释器占位符用你项目当前激活的 Python 解释器skill 的依赖清单 requirements.txt 固定了cadgen0.4.10与playwrightREADME 的徽章标注 Python 3.11。失败时scripts/gen会打印异常和你自己生成器里的代码帧格式如下文档示例[scripts/gen] FAILED: ValueError: bad radius [scripts/gen] models/step/parts/widget.step.py:9 in gen_step [scripts/gen] return _profile(radius) [scripts/gen] re-run with --verbose for the full traceback完整 traceback 用--verbose查看。定位过程要反复重跑生成每次冷启动都要付一遍 OCP/build123d 的 import 成本可以按 step-generation.md 的说明设置CADGEN_WARM1走常驻进程 daemon参数、cwd 解析和输出与冷跑一致可选优化不是必须CADGEN_WARM1 python scripts/gen path/to/part.step.py先排除两个静默成因repair-loop 文档建议在做下面两项检查之前先排除两个不会报错、但会让 loft 在远处失败的成因1. 某个截面实际断开disconnected section。一个 station 切到两个互不相连的区域例如截面同时切过两台分离的机舱或穿过一个开槽会产生一个不抛任何异常、面积数值看似合理的Face唯一的判据是Face.is_valid为 False。此时 loft 往往在几十个 station 之外才失败报错点离真正断点很远。文档给出的修复方式把 loft 结束在最后一个连通的 station或在截面里把缺口补起来、事后再切回去。检查截面时要小心一个陷阱Face.is_valid是属性不是方法。调用f.is_valid()会抛TypeError: bool object is not callable容易被误读成对象损坏for i, f in enumerate(faces): # faces 换成你源码里的截面列表 print(i, f.is_valid) # 属性访问不要加括号2. 组件不存在处丢采样点。某个 station 上某段几何不存在采样时把点直接丢掉导致各 station 采样点数不一致。文档的修法是保留采样位、用一个占位值carry a value而不是丢弃该样本。检查一前缀截断夹出第一个坏截面在排除上述静默成因后按文档顺序做第一项检查用递增的前缀逐步 loft 截面列表夹住bracket失败发生的位置# 在 gen_step() 或临时探测代码中逐步扩大截面前缀 loft(faces[:5]) # 成功后再试 faces[:10]、faces[:20]、……每个前缀跑一次python scripts/gen path/to/part.step.py找到前一个前缀成功、下一个前缀失败的边界坏截面就落在这个区间里。文档特别强调盯着报告的 volume而不只是异常。一个成功了但体积荒谬的 loft 其实已经失败了——多截面 loft 的失败未必总以异常形式出现。检查二相邻配对区分局部与全局第二项检查是对每一对相邻截面单独 loftfor i in range(len(faces) - 1): pair loft(faces[i], faces[i 1]) print(i, pair.volume)按 repair-loop.md 的判定所有相邻对都成功、只有全量 loft 失败→ 各截面单独看都没问题问题是全局性的文档说几乎总是各截面点数不一致sections disagree on POINT COUNT。修复保证每个截面有固定采样点数。某一具体相邻对失败→ 问题局部化在这一对 station 之间。文档在 build123d-modeling.md 的常见失败模式里给出了典型根因截面 wire 自相交。make_face会接受一条自相交的周期样条报告一个有效、正面积的 face所以每个 station 单独看都正常loft 则恰好失败在最差的那对相邻截面上——这正是相邻配对二分的用武之地。文档给出的常见原因是跨越一条折线的两个采样点沿折角的切线方向偏移放置而不是落在曲线上导致轮廓折返。另一种报错BRep_API: command not done如果你拿到的不是Failed to create valid loft而是BRep_API: command not done且每个截面单独有效、截面间边数一致文档给的分支是改用 ruled loftloft(..., ruledTrue)原文说明截面排布密集时ruled 结果在视觉上与 smooth loft 等价。这是一条针对另一种报错字符串的路径不要用它替代上面的前缀/配对定位。修复后的验证修复遵循 repair-loop 的循环做最小改动的源码修正 → 重跑之前失败的命令 → 重跑受影响的验证检查。具体地重跑python scripts/gen path/to/part.step.py确认生成成功且.step文件存在且非空。按 inspection-and-validation.md 跑基线检查与几何健全性检查python scripts/inspect refs path/to/model.step --facts --planes --positioning python scripts/inspect validate path/to/model.stepvalidate按 occurrence 报告invalidTopology、openShell、nonPositiveVolume、noSolid、selfIntersecting中的问题项任一 occurrence 失败则以非零退出——这是文档给出的明确通过/失败判据。注意refs --facts的ok字段只表示 ref 解析成功不是几何结论不能代替validate。体积判定上文档还提醒is_valid为 True 不等于体积为正反转向量的 shell 可以通过BRepCheck_Analyzer。需要在源码里守门时文档给出的写法是def is_valid_shape(shape): return (shape is not None and BRepCheck_Analyzer(shape.wrapped).IsValid() and shape.volume 0.0)如果修复可能波及无关几何按 repair-loop.md 用 diff 对比修复前后的 STEPpython scripts/inspect diff path/to/before.step path/to/after.step --planes按 SKILL.md 的强制策略创建或明显更新主 STEP 后要对它跑scripts/snapshot并查看结果确定性检查通过不是跳过 snapshot 的理由跳过条件以references/snapshot-review.md为准。无法在当前环境修复时的报告文档要求如果某项检查在当前环境里修不好不要继续硬修按以下结构报告——什么失败了、试过什么、哪个 artifact 仍可用、哪些验证声明无法成立、下一个源码级修正应该是什么。最后划一条边界如果现象不是抛异常而是scripts/gen对大型 lofted 表面做布尔运算后迟迟不返回那属于 repair-loop.md 里Boolean against a large lofted surface never returns一节处理的另一类故障不在本文的Failed to create valid loft定位路径之内。【免费下载链接】text-to-cadA library of agent skills for CAD, CAE and CAM项目地址: https://gitcode.com/GitHub_Trending/tex/text-to-cad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表