بنقرة واحدة
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.