添加cadfs_to_cdsl代码,优化cad生成
This commit is contained in:
@@ -5,6 +5,7 @@ from pathlib import Path
|
||||
from cadfs_to_cdsl.compare import compare_steps
|
||||
from cadfs_to_cdsl.featurescript_parser import parse_featurescript
|
||||
from cadfs_to_cdsl.lowering import lower_model
|
||||
from cadfs_to_cdsl.rebuild import rebuild_candidate
|
||||
|
||||
|
||||
class IntegrationTests(unittest.TestCase):
|
||||
@@ -13,13 +14,31 @@ class IntegrationTests(unittest.TestCase):
|
||||
feature = root / "featurescript_rp/0000/00000173.txt"; gold = root / "step_abc/0000/00000173.step"
|
||||
if not feature.exists() or not gold.exists(): self.skipTest("CADFS sample is not installed")
|
||||
cdsl = lower_model(parse_featurescript(feature.read_text(), "00000173"), {}).cdsl
|
||||
from engine.cdsl_engine.runtime import rebuild_cdsl
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
rebuilt = Path(tmp) / "rebuild.step"; rebuild_cdsl(cdsl, rebuilt, strict=True)
|
||||
rebuilt = Path(tmp) / "rebuild.step"
|
||||
result = rebuild_candidate(cdsl, rebuilt)
|
||||
self.assertEqual(result["status"], "rebuilt")
|
||||
comparison = compare_steps(gold, rebuilt)
|
||||
self.assertFalse(comparison["strict"]["passed"])
|
||||
self.assertTrue(comparison["rp"]["passed"])
|
||||
self.assertEqual(comparison["decision"], "approximate_pass")
|
||||
|
||||
def test_counterbore_abbreviation_00002243(self):
|
||||
root = Path(__file__).parents[2] / "data/cadfs-sample/CADFS_test"
|
||||
feature = root / "featurescript_rp/0000/00002243.txt"
|
||||
if not feature.exists(): self.skipTest("CADFS sample is not installed")
|
||||
result = lower_model(parse_featurescript(feature.read_text(), "00002243"), {})
|
||||
first = next(item for item in result.cdsl["features"] if item["id"] == "f_F1")
|
||||
self.assertEqual(first["atomic_id"], "extrude_add_two_sided")
|
||||
self.assertEqual(first["params"]["distance_mm"], 125.0)
|
||||
self.assertEqual(first["params"]["reverse_distance_mm"], 125.0)
|
||||
gap = next(item for item in result.diagnostics if item.get("feature_id") == "F3")
|
||||
self.assertEqual(gap["code"], "unsupported_engine_capability")
|
||||
self.assertEqual(gap["capability"], "extrude_cut_two_sided")
|
||||
hole = next(item for item in result.cdsl["features"] if item["atomic_id"] == "hole_wizard")
|
||||
self.assertEqual(hole["params"]["hole_type"], "c_bore")
|
||||
self.assertEqual(hole["params"]["counterbore"]["diameter_mm"], 17.25)
|
||||
self.assertEqual(hole["params"]["counterbore"]["depth_mm"], 10.0)
|
||||
|
||||
|
||||
if __name__ == "__main__": unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user