first commit
This commit is contained in:
@@ -0,0 +1,599 @@
|
||||
{
|
||||
"Schema": "mechanical_rule_template_package_v1",
|
||||
"PackageId": "tight_fit_sleeve_requires_disassembly_access",
|
||||
"Source": {
|
||||
"ImagePath": "built_in_sample",
|
||||
"TextPath": null,
|
||||
"ExtractionMode": "agent_authored_until_llm_adapter_is_connected",
|
||||
"Notes": [
|
||||
"The teaching figure has four examples: a is a problem pattern; b/c/d are pass-evidence patterns.",
|
||||
"Hatch lines and printed scale are annotations and must not become contour evidence."
|
||||
]
|
||||
},
|
||||
"ExtractionContract": {
|
||||
"LlmResponsibility": "Extract rule semantics and image-side 2D structure templates from teaching image/text; do not judge product models.",
|
||||
"ProgramResponsibility": "Extract model B-rep evidence, generate model-side 2D section structures, match templates, and make final rule decisions.",
|
||||
"RequiredLlmOutputs": [
|
||||
"rule object and trigger condition",
|
||||
"problem type and problem evidence",
|
||||
"pass evidence types",
|
||||
"image 2D structure templates",
|
||||
"visual anchors such as m/h/t",
|
||||
"ignored visual annotations such as hatches and scale"
|
||||
],
|
||||
"RequiredProgramEvidence": [
|
||||
"components and inferred categories",
|
||||
"faces, cylinders, planes, axes, and contact-like relations",
|
||||
"scene candidates",
|
||||
"section 2D structure instances",
|
||||
"real dimensions and contact validation evidence"
|
||||
]
|
||||
},
|
||||
"BrepFactCapabilities": [
|
||||
{
|
||||
"Fact": "sleeve_component",
|
||||
"SourceLayer": "3d_brep+component",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SceneRecognizer.RecognizeSleeveInHole",
|
||||
"RequiredPrimitive": "component category/name plus cylindrical section/contact evidence",
|
||||
"MissingWhenAbsent": "No sleeve-like component candidate was recognized.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "sleeve_like_component",
|
||||
"SourceLayer": "3d_brep+component",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SceneRecognizer.RecognizeSleeveInHole",
|
||||
"RequiredPrimitive": "component category/name plus cylindrical section/contact evidence",
|
||||
"MissingWhenAbsent": "No sleeve-like component candidate was recognized.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "host_hole_component",
|
||||
"SourceLayer": "3d_brep+component",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SceneRecognizer.RecognizeSleeveInHole",
|
||||
"RequiredPrimitive": "host/housing component and coaxial/contact evidence",
|
||||
"MissingWhenAbsent": "No host or hole component candidate was recognized.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "coaxial_cylinder_pair",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SectionStructureSynthesizer/SketchGraph.Relations",
|
||||
"RequiredPrimitive": "coaxial sleeve/host section geometry",
|
||||
"MissingWhenAbsent": "No coaxial sleeve-host pair was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "axial_overlap",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SectionStructureSynthesizer/SketchGraph.Relations",
|
||||
"RequiredPrimitive": "overlapping axial ranges in section",
|
||||
"MissingWhenAbsent": "No axial overlap between sleeve and host was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "close_fit_contact",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SketchGraph.Relations contact",
|
||||
"RequiredPrimitive": "contact or near-contact section edges",
|
||||
"MissingWhenAbsent": "No close-fit contact relation was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "close_fit_contact_or_small_clearance",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "SketchGraph.Relations contact/clearance",
|
||||
"RequiredPrimitive": "contact or small clearance section edges",
|
||||
"MissingWhenAbsent": "No close-fit contact or small clearance relation was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "outside_accessible_push_path",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "ReadSketchDimension exposed_push_face_candidate",
|
||||
"RequiredPrimitive": "exposed sleeve end edge and outside clearance",
|
||||
"MissingWhenAbsent": "No exposed sleeve push face was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "push_path_reaches_sleeve_push_area",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "ReadSketchDimension exposed_push_face_candidate",
|
||||
"RequiredPrimitive": "exposed sleeve end edge",
|
||||
"MissingWhenAbsent": "No push path reaches a sleeve push area.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "push_direction_has_removal_component",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "implemented",
|
||||
"Extractor": "ReadSketchDimension exposed_push_face_candidate",
|
||||
"RequiredPrimitive": "push face orientation against sleeve axis",
|
||||
"MissingWhenAbsent": "No push direction with removal-axis component was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "outside_connected_void_gap",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "GapFeatureSynthesizer.SectionFloodFill",
|
||||
"RequiredPrimitive": "outside-connected free-space cells between sleeve and host",
|
||||
"MissingWhenAbsent": "No outside-connected sleeve/host gap candidate was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "gap_path_reaches_sleeve_push_area",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "GapFeatureSynthesizer.SectionFloodFill",
|
||||
"RequiredPrimitive": "gap cluster adjacent to sleeve push area",
|
||||
"MissingWhenAbsent": "No detected gap cluster reached the sleeve push area.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "gap_width_sufficient",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "GapFeatureSynthesizer.SectionFloodFill",
|
||||
"RequiredPrimitive": "estimated minimum sleeve-host free-space width",
|
||||
"MissingWhenAbsent": "No detected gap satisfied the minimum tool-width threshold.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "tool_force_direction_valid",
|
||||
"SourceLayer": "2d_section_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "GapFeatureSynthesizer.SectionFloodFill",
|
||||
"RequiredPrimitive": "gap cluster with axial extent along removal direction",
|
||||
"MissingWhenAbsent": "No detected gap had a sufficient removal-direction extent.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "outside_connected_cylindrical_port",
|
||||
"SourceLayer": "3d_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "PortFeatureSynthesizer.CylinderFaces",
|
||||
"RequiredPrimitive": "small host/end-cap cylindrical face treated as port candidate",
|
||||
"MissingWhenAbsent": "No small host/end-cap cylindrical port candidate was detected.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "port_axis_intersects_sleeve_push_area",
|
||||
"SourceLayer": "3d_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "PortFeatureSynthesizer.CylinderFaces",
|
||||
"RequiredPrimitive": "port axis close enough to sleeve push area",
|
||||
"MissingWhenAbsent": "No port axis was found to reach the sleeve push area.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "port_diameter_sufficient",
|
||||
"SourceLayer": "3d_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "PortFeatureSynthesizer.CylinderFaces",
|
||||
"RequiredPrimitive": "cylindrical port radius/diameter",
|
||||
"MissingWhenAbsent": "No detected port diameter satisfied the minimum threshold.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "port_push_direction_valid",
|
||||
"SourceLayer": "3d_brep",
|
||||
"ExtractorStatus": "partial",
|
||||
"Extractor": "PortFeatureSynthesizer.CylinderFaces",
|
||||
"RequiredPrimitive": "port axis with removal-axis force component",
|
||||
"MissingWhenAbsent": "No detected port axis had a sufficient removal-direction component.",
|
||||
"AuthoringAllowed": true
|
||||
},
|
||||
{
|
||||
"Fact": "thread_or_screw_feature",
|
||||
"SourceLayer": "feature_metadata_or_modeled_thread",
|
||||
"ExtractorStatus": "optional_only",
|
||||
"Extractor": "optional SolidWorks feature/thread metadata or modeled helical B-rep",
|
||||
"RequiredPrimitive": "thread feature metadata or real thread geometry",
|
||||
"MissingWhenAbsent": "Pure B-rep often does not contain reliable thread semantics; keep this optional.",
|
||||
"AuthoringAllowed": false
|
||||
}
|
||||
],
|
||||
"SemanticRules": [
|
||||
{
|
||||
"RuleId": "tight_fit_sleeve_requires_disassembly_access",
|
||||
"Title": "与孔配合紧密的套筒应考虑拆卸结构",
|
||||
"TriggerCondition": {
|
||||
"SceneType": "sleeve_in_hole",
|
||||
"TargetObject": "sleeve",
|
||||
"HostObject": "hole_or_housing",
|
||||
"Relation": "tight_fit_or_contact_like",
|
||||
"RequiredEvidence": [
|
||||
"sleeve_component",
|
||||
"host_hole_component",
|
||||
"coaxial_cylinder_pair",
|
||||
"axial_overlap",
|
||||
"close_fit_contact"
|
||||
]
|
||||
},
|
||||
"Problem": {
|
||||
"ProblemType": "missing_disassembly_access",
|
||||
"Message": "与孔配合紧密的套筒缺少可用拆卸结构,拆卸时可能难以放入工具或施力。",
|
||||
"SourceExample": "a"
|
||||
},
|
||||
"PassEvidenceTypes": [
|
||||
{
|
||||
"EvidenceType": "external_push_access",
|
||||
"SourceExample": "b",
|
||||
"Anchor": "m",
|
||||
"Required2DTemplateId": "b_external_push_access",
|
||||
"RequiredModelEvidence": [
|
||||
"outside_accessible_push_path",
|
||||
"push_path_reaches_sleeve_push_area",
|
||||
"push_direction_has_removal_component"
|
||||
],
|
||||
"OptionalModelEvidence": []
|
||||
},
|
||||
{
|
||||
"EvidenceType": "tool_insertion_gap",
|
||||
"SourceExample": "c",
|
||||
"Anchor": "h",
|
||||
"Required2DTemplateId": "c_tool_insertion_gap",
|
||||
"RequiredModelEvidence": [
|
||||
"outside_connected_void_gap",
|
||||
"gap_path_reaches_sleeve_push_area",
|
||||
"gap_width_sufficient",
|
||||
"tool_force_direction_valid"
|
||||
],
|
||||
"OptionalModelEvidence": []
|
||||
},
|
||||
{
|
||||
"EvidenceType": "ejector_screw_hole",
|
||||
"SourceExample": "d",
|
||||
"Anchor": "t",
|
||||
"Required2DTemplateId": "d_ejector_screw_hole",
|
||||
"RequiredModelEvidence": [
|
||||
"outside_connected_cylindrical_port",
|
||||
"port_axis_intersects_sleeve_push_area",
|
||||
"port_diameter_sufficient",
|
||||
"port_push_direction_valid"
|
||||
],
|
||||
"OptionalModelEvidence": [
|
||||
"thread_or_screw_feature"
|
||||
]
|
||||
}
|
||||
],
|
||||
"DecisionLogic": {
|
||||
"IfTriggerMissing": "not_applicable",
|
||||
"IfTriggerUnknown": "needs_review",
|
||||
"IfTriggeredAndAnyPassEvidence": "pass",
|
||||
"IfTriggeredAndNoPassEvidence": "problem"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ImageStructureTemplates": [
|
||||
{
|
||||
"TemplateId": "common_sleeve_in_hole_close_fit",
|
||||
"Role": "trigger",
|
||||
"SourceExample": "a_b_c_d_common",
|
||||
"Anchor": "",
|
||||
"Entities": [
|
||||
{
|
||||
"Id": "sleeve_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "sleeve"
|
||||
},
|
||||
{
|
||||
"Id": "host_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "housing_or_hole"
|
||||
},
|
||||
{
|
||||
"Id": "sleeve_axis",
|
||||
"Kind": "axis",
|
||||
"SemanticRole": "main_axis"
|
||||
},
|
||||
{
|
||||
"Id": "fit_contact",
|
||||
"Kind": "edge_pair",
|
||||
"SemanticRole": "coincident_or_close_fit_edges"
|
||||
}
|
||||
],
|
||||
"RequiredRelations": [
|
||||
{
|
||||
"Type": "coaxial",
|
||||
"A": "sleeve_material",
|
||||
"B": "host_material"
|
||||
},
|
||||
{
|
||||
"Type": "contact",
|
||||
"A": "sleeve_material",
|
||||
"B": "host_material"
|
||||
},
|
||||
{
|
||||
"Type": "axial_overlap",
|
||||
"A": "sleeve_material",
|
||||
"B": "host_material"
|
||||
}
|
||||
],
|
||||
"IgnoredVisualElements": [
|
||||
"hatch_lines",
|
||||
"line_thickness",
|
||||
"absolute_scale",
|
||||
"printed_dimension_size",
|
||||
"table_border",
|
||||
"text_border"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateId": "a_no_removal_access",
|
||||
"Role": "problem",
|
||||
"SourceExample": "a",
|
||||
"Anchor": "",
|
||||
"Entities": [
|
||||
{
|
||||
"Id": "sleeve_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "sleeve"
|
||||
},
|
||||
{
|
||||
"Id": "host_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "housing_or_hole"
|
||||
},
|
||||
{
|
||||
"Id": "fit_contact",
|
||||
"Kind": "edge_pair",
|
||||
"SemanticRole": "contact"
|
||||
},
|
||||
{
|
||||
"Id": "outside",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "outside_air"
|
||||
}
|
||||
],
|
||||
"RequiredRelations": [
|
||||
{
|
||||
"Type": "contact",
|
||||
"A": "sleeve_material",
|
||||
"B": "host_material"
|
||||
},
|
||||
{
|
||||
"Type": "blocks_axial_removal",
|
||||
"A": "host_material",
|
||||
"B": "sleeve_material"
|
||||
},
|
||||
{
|
||||
"Type": "missing",
|
||||
"A": "external_push_access",
|
||||
"B": "sleeve_material"
|
||||
},
|
||||
{
|
||||
"Type": "missing",
|
||||
"A": "tool_insertion_gap",
|
||||
"B": "sleeve_material"
|
||||
},
|
||||
{
|
||||
"Type": "missing",
|
||||
"A": "ejector_screw_hole",
|
||||
"B": "sleeve_material"
|
||||
}
|
||||
],
|
||||
"IgnoredVisualElements": [
|
||||
"hatch_lines",
|
||||
"line_thickness",
|
||||
"absolute_scale",
|
||||
"printed_dimension_size",
|
||||
"table_border",
|
||||
"text_border"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateId": "b_external_push_access",
|
||||
"Role": "pass",
|
||||
"SourceExample": "b",
|
||||
"Anchor": "m",
|
||||
"Entities": [
|
||||
{
|
||||
"Id": "outside",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "outside_air"
|
||||
},
|
||||
{
|
||||
"Id": "push_access_path",
|
||||
"Kind": "path",
|
||||
"SemanticRole": "outside_accessible_force_path"
|
||||
},
|
||||
{
|
||||
"Id": "sleeve_push_area",
|
||||
"Kind": "edge_or_region",
|
||||
"SemanticRole": "sleeve_force_receiving_area"
|
||||
},
|
||||
{
|
||||
"Id": "removal_axis",
|
||||
"Kind": "axis",
|
||||
"SemanticRole": "sleeve_removal_direction"
|
||||
}
|
||||
],
|
||||
"RequiredRelations": [
|
||||
{
|
||||
"Type": "connected_to_outside",
|
||||
"A": "push_access_path",
|
||||
"B": "outside"
|
||||
},
|
||||
{
|
||||
"Type": "reaches",
|
||||
"A": "push_access_path",
|
||||
"B": "sleeve_push_area"
|
||||
},
|
||||
{
|
||||
"Type": "direction_has_component",
|
||||
"A": "push_access_path",
|
||||
"B": "removal_axis"
|
||||
}
|
||||
],
|
||||
"IgnoredVisualElements": [
|
||||
"hatch_lines",
|
||||
"line_thickness",
|
||||
"absolute_scale",
|
||||
"printed_dimension_size",
|
||||
"table_border",
|
||||
"text_border"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateId": "c_tool_insertion_gap",
|
||||
"Role": "pass",
|
||||
"SourceExample": "c",
|
||||
"Anchor": "h",
|
||||
"Entities": [
|
||||
{
|
||||
"Id": "sleeve_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "sleeve"
|
||||
},
|
||||
{
|
||||
"Id": "host_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "housing_or_hole"
|
||||
},
|
||||
{
|
||||
"Id": "gap_region",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "void_gap"
|
||||
},
|
||||
{
|
||||
"Id": "outside",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "outside_air"
|
||||
},
|
||||
{
|
||||
"Id": "sleeve_push_area",
|
||||
"Kind": "edge_or_region",
|
||||
"SemanticRole": "sleeve_force_receiving_area"
|
||||
},
|
||||
{
|
||||
"Id": "removal_axis",
|
||||
"Kind": "axis",
|
||||
"SemanticRole": "sleeve_removal_direction"
|
||||
},
|
||||
{
|
||||
"Id": "h",
|
||||
"Kind": "dimension",
|
||||
"SemanticRole": "minimum_tool_insertion_clearance"
|
||||
}
|
||||
],
|
||||
"RequiredRelations": [
|
||||
{
|
||||
"Type": "connected_to_outside",
|
||||
"A": "gap_region",
|
||||
"B": "outside"
|
||||
},
|
||||
{
|
||||
"Type": "reaches",
|
||||
"A": "gap_region",
|
||||
"B": "sleeve_push_area"
|
||||
},
|
||||
{
|
||||
"Type": "direction_has_component",
|
||||
"A": "gap_region",
|
||||
"B": "removal_axis"
|
||||
},
|
||||
{
|
||||
"Type": "gap_width_sufficient",
|
||||
"A": "gap_region",
|
||||
"B": "h"
|
||||
}
|
||||
],
|
||||
"IgnoredVisualElements": [
|
||||
"hatch_lines",
|
||||
"line_thickness",
|
||||
"absolute_scale",
|
||||
"printed_dimension_size",
|
||||
"table_border",
|
||||
"text_border"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateId": "d_ejector_screw_hole",
|
||||
"Role": "pass",
|
||||
"SourceExample": "d",
|
||||
"Anchor": "t",
|
||||
"Entities": [
|
||||
{
|
||||
"Id": "sleeve_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "sleeve"
|
||||
},
|
||||
{
|
||||
"Id": "host_material",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "housing_or_hole"
|
||||
},
|
||||
{
|
||||
"Id": "port_region",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "cylindrical_ejector_port"
|
||||
},
|
||||
{
|
||||
"Id": "outside",
|
||||
"Kind": "region",
|
||||
"SemanticRole": "outside_air"
|
||||
},
|
||||
{
|
||||
"Id": "sleeve_push_area",
|
||||
"Kind": "edge_or_region",
|
||||
"SemanticRole": "sleeve_force_receiving_area"
|
||||
},
|
||||
{
|
||||
"Id": "port_axis",
|
||||
"Kind": "axis",
|
||||
"SemanticRole": "ejector_screw_axis"
|
||||
},
|
||||
{
|
||||
"Id": "removal_axis",
|
||||
"Kind": "axis",
|
||||
"SemanticRole": "sleeve_removal_direction"
|
||||
},
|
||||
{
|
||||
"Id": "t",
|
||||
"Kind": "dimension",
|
||||
"SemanticRole": "ejector_screw_hole_size"
|
||||
}
|
||||
],
|
||||
"RequiredRelations": [
|
||||
{
|
||||
"Type": "connected_to_outside",
|
||||
"A": "port_region",
|
||||
"B": "outside"
|
||||
},
|
||||
{
|
||||
"Type": "axis_intersects",
|
||||
"A": "port_axis",
|
||||
"B": "sleeve_push_area"
|
||||
},
|
||||
{
|
||||
"Type": "direction_has_component",
|
||||
"A": "port_axis",
|
||||
"B": "removal_axis"
|
||||
},
|
||||
{
|
||||
"Type": "port_diameter_sufficient",
|
||||
"A": "port_region",
|
||||
"B": "t"
|
||||
}
|
||||
],
|
||||
"IgnoredVisualElements": [
|
||||
"hatch_lines",
|
||||
"line_thickness",
|
||||
"absolute_scale",
|
||||
"printed_dimension_size",
|
||||
"table_border",
|
||||
"text_border"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user