diff --git a/src/Mod/CAM/CAMTests/TestPathToolShapeClasses.py b/src/Mod/CAM/CAMTests/TestPathToolShapeClasses.py index aa34fd4f66..98f73f4b89 100644 --- a/src/Mod/CAM/CAMTests/TestPathToolShapeClasses.py +++ b/src/Mod/CAM/CAMTests/TestPathToolShapeClasses.py @@ -151,13 +151,11 @@ class TestPathToolShapeClasses(PathTestWithAssets): def test_base_resolve_name(self): """Test resolving shape aliases to canonical names.""" self.assertEqual(ToolBitShape.resolve_name("ballend").asset_id, "ballend") - self.assertEqual(ToolBitShape.resolve_name("Ballend").asset_id, "ballend") - self.assertEqual(ToolBitShape.resolve_name("v-bit").asset_id, "vbit") - self.assertEqual(ToolBitShape.resolve_name("VBit").asset_id, "vbit") - self.assertEqual(ToolBitShape.resolve_name("torus").asset_id, "bullnose") - self.assertEqual(ToolBitShape.resolve_name("bullnose").asset_id, "bullnose") - self.assertEqual(ToolBitShape.resolve_name("slitting-saw").asset_id, "slittingsaw") - self.assertEqual(ToolBitShape.resolve_name("SlittingSaw").asset_id, "slittingsaw") + self.assertEqual(ToolBitShape.resolve_name("v-bit").asset_id, "v-bit") + self.assertEqual(ToolBitShape.resolve_name("vbit").asset_id, "vbit") + self.assertEqual(ToolBitShape.resolve_name("torus").asset_id, "torus") + self.assertEqual(ToolBitShape.resolve_name("torus.fcstd").asset_id, "torus") + self.assertEqual(ToolBitShape.resolve_name("SlittingSaw").asset_id, "SlittingSaw") # Test unknown name - should return the input name self.assertEqual(ToolBitShape.resolve_name("nonexistent").asset_id, "nonexistent") self.assertEqual(ToolBitShape.resolve_name("UnknownShape").asset_id, "UnknownShape") diff --git a/src/Mod/CAM/Path/Tool/shape/models/base.py b/src/Mod/CAM/Path/Tool/shape/models/base.py index 77984dc9bf..f182c38fd6 100644 --- a/src/Mod/CAM/Path/Tool/shape/models/base.py +++ b/src/Mod/CAM/Path/Tool/shape/models/base.py @@ -523,7 +523,7 @@ class ToolBitShape(Asset): @classmethod def resolve_name(cls, identifier: str) -> AssetUri: """ - Resolves an identifier (alias, name, filename, or URI) to a Uri object. + Resolves an identifier (name, filename, or URI) to a Uri object. """ # 1. If the input is a url string, return the AssetUri for it. if AssetUri.is_uri(identifier): @@ -535,13 +535,7 @@ class ToolBitShape(Asset): if pathlib.Path(identifier).suffix.lower() == ".fcstd": asset_name = os.path.splitext(os.path.basename(identifier))[0] - # 3. Use get_subclass_by_name to try to resolve alias to a class. - # if one is found, use the class.name. - shape_class = cls.get_subclass_by_name(asset_name.lower()) - if shape_class: - asset_name = shape_class.name.lower() - - # 4. Construct the Uri using AssetUri.build() and return it + # 3. Construct the Uri using AssetUri.build() and return it return AssetUri.build( asset_type="toolbitshape", asset_id=asset_name, diff --git a/src/Mod/CAM/Path/Tool/toolbit/serializers/fctb.py b/src/Mod/CAM/Path/Tool/toolbit/serializers/fctb.py index 67d28eff74..90cf28aa0c 100644 --- a/src/Mod/CAM/Path/Tool/toolbit/serializers/fctb.py +++ b/src/Mod/CAM/Path/Tool/toolbit/serializers/fctb.py @@ -28,6 +28,13 @@ from ...shape import ToolBitShape from ..models.base import ToolBit +if False: + Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) + Path.Log.trackModule(Path.Log.thisModule()) +else: + Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) + + class FCTBSerializer(AssetSerializer): for_class = ToolBit mime_type = "application/x-freecad-toolbit" @@ -70,6 +77,7 @@ class FCTBSerializer(AssetSerializer): if dependencies is None: # Shallow load: dependencies are not resolved. # Delegate to from_dict with shallow=True. + Path.Log.debug(f"FCTBSerializer.deserialize: shallow. id = {id!r}, attrs = {attrs!r}") return ToolBit.from_dict(attrs, shallow=True) # Full load: dependencies are resolved. @@ -93,6 +101,9 @@ class FCTBSerializer(AssetSerializer): ) # Find the correct ToolBit subclass for the shape + Path.Log.debug( + f"FCTBSerializer.deserialize: shape = {shape!r}, id = {id!r}, params = {shape.get_parameters()}" + ) return ToolBit.from_shape(shape, attrs, id) @classmethod