优化skill,添加特征树、编辑窗口
This commit is contained in:
@@ -26,6 +26,9 @@ SURFACEIR = load_module(
|
||||
DESIGNIR = load_module(
|
||||
"designir_pipeline_surface_test", ROOT / "scripts" / "designir_pipeline.py"
|
||||
)
|
||||
FEATURE_TREE = load_module(
|
||||
"feature_tree_surface_test", ROOT / "scripts" / "feature_tree.py"
|
||||
)
|
||||
|
||||
|
||||
class SurfaceIRPipelineTests(unittest.TestCase):
|
||||
@@ -128,6 +131,59 @@ class SurfaceIRPipelineTests(unittest.TestCase):
|
||||
DESIGNIR._symmetric_difference_volume(expected, actual), 1e-8
|
||||
)
|
||||
|
||||
def test_feature_tree_for_uploaded_step_is_inferred_summary(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
directory = Path(temporary)
|
||||
teacher = directory / "teacher.step"
|
||||
DESIGNIR.export_step(DESIGNIR.Box(10, 20, 30), teacher)
|
||||
payload = SURFACEIR.extract_surfaceir(teacher)
|
||||
tree = FEATURE_TREE.generate_feature_tree(
|
||||
payload,
|
||||
designir_path="box.designir.json",
|
||||
step_path="box.reconstructed.step",
|
||||
parameters_path="parameters.json",
|
||||
backend="surfaceir_occt",
|
||||
compiled=True,
|
||||
validated=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
"inferred_from_step",
|
||||
tree["source"]["history_kind"],
|
||||
)
|
||||
self.assertEqual("solidworks_feature_manager", tree["tree_kind"])
|
||||
self.assertFalse(
|
||||
tree["source"]["claims_original_solidworks_history"]
|
||||
)
|
||||
imported = next(
|
||||
node
|
||||
for node in tree["feature_manager"]["nodes"]
|
||||
if node["solidworks_type"] == "ImportedFeature"
|
||||
)
|
||||
self.assertEqual("导入1", imported["display_name"])
|
||||
self.assertEqual(
|
||||
"ImportedFeature",
|
||||
imported["definition"]["feature_type"],
|
||||
)
|
||||
self.assertFalse(imported["definition"]["native_history_recovered"])
|
||||
self.assertNotIn("manufacturing", imported)
|
||||
self.assertEqual(1, imported["result"]["solid_count"])
|
||||
self.assertEqual(
|
||||
"gzip+base64+json",
|
||||
imported["operation_spec"]["payload_encoding"],
|
||||
)
|
||||
self.assertEqual(
|
||||
"fallback_imported_feature",
|
||||
tree["validation"]["feature_recognition"]["status"],
|
||||
)
|
||||
replay_designir = FEATURE_TREE.designir_from_feature_tree(tree)
|
||||
self.assertEqual(payload["surface_layer"], replay_designir["surface_layer"])
|
||||
replayed = directory / "replayed_from_tree.step"
|
||||
result = FEATURE_TREE.compile_feature_tree(tree, replayed)
|
||||
self.assertTrue(replayed.is_file())
|
||||
self.assertEqual("surfaceir_imported_feature", result["replay_kind"])
|
||||
serialized = json.dumps(tree)
|
||||
self.assertNotIn('"surface_layer": {"vertices"', serialized)
|
||||
|
||||
def test_empty_step_document_is_represented_honestly(self) -> None:
|
||||
payload = {
|
||||
"schema_version": "3.0",
|
||||
|
||||
Reference in New Issue
Block a user