一键导入
dm-viewport-fallback-rule
Enforces the "No Silent Fallbacks" rule for workplanes when modeling.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Enforces the "No Silent Fallbacks" rule for workplanes when modeling.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Architecture reference for the unified edit-mode transform gizmo (translation arrows + rotation rings, transform spaces, x-ray rendering). Required reading before implementing any task in todo.md whose ID begins with GIZMO-.
Reference for the two-color (orange/blue) boolean system where IsSubtractive classifies inputs into groups and boolean operations combine them into a parent-child tree. Required reading before implementing any task in todo_bool.md.
Standardized pattern for creating interactive SDF primitive tools in the Direct Modeling workbench.
Template and rules for creating new SDF primitive field classes in core/sdf/sdf/. Required reading before implementing any new SdfField subclass.
Reference for converting SVG path data (M L H V C S Q T A Z) and shape elements (rect, circle, ellipse, line, polyline, polygon) into cubic Bezier segments with no rasterization. Required reading before implementing svg_importer.py.
Convention for registering primitive-specific GLSL inside the primitive's own .py file. Required reading before editing any to_glsl/to_glsl_2d method.
| name | DM Viewport Fallback Rule |
| description | Enforces the "No Silent Fallbacks" rule for workplanes when modeling. |
This project strictly enforces that tools behavior should never depend on hidden or implicitly cached state that the user cannot see.
When a user triggers a tool click, the tool casts a ray through the viewport. If the ray hits a face on existing geometry, it aligns the workplane to that face. If it hits an explicit visual DMWorkPlane, it snaps to it.
If the ray hits empty space, the fall-back behavior must be completely stateless:
When creating a new modeling tool (e.g. subclassing PrimitiveCreatorBase or NURBSPrimitiveCreator), you must:
_last_working_plane.ViewProjector.get_base_plane().get_mouse_plane_pt()'s fallback; do not attempt to cache it across tool invocations unless an explicit, user-facing persistent object (like a DMWorkPlane) dictates it.