Original dogbone dressup has been deprecated for more than 4 years.

Dogbone II is stable.
Removing the deprecated code and tests
This commit is contained in:
sliptonic
2026-02-27 13:34:36 -06:00
committed by Chris Hennes
parent 8653d94287
commit df3809e66b
4 changed files with 0 additions and 1667 deletions
@@ -1,293 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * Copyright (c) 2017 sliptonic <shopinthewoods@gmail.com> *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * This program is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU Library General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with this program; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************
import FreeCAD
import Path
import Path.Dressup.Gui.Dogbone as PathDressupDogbone
import Path.Main.Job as PathJob
import Path.Op.Profile as PathProfile
from CAMTests.PathTestUtils import PathTestBase
class TestProfile:
def __init__(self, side, direction, path):
self.Side = side
self.Direction = direction
self.Path = Path.Path(path)
self.ToolController = None # default tool 5mm
self.Name = "Profile"
class TestFeature:
def __init__(self):
self.Path = Path.Path()
def addProperty(self, typ, name, category, tip):
setattr(self, name, None)
def setEditorMode(self, prop, mode):
pass
class TestDressupDogbone(PathTestBase):
"""Unit tests for the Dogbone dressup."""
def formatBone(self, bone):
return "%d: (%.2f, %.2f)" % (bone[0], bone[1][0], bone[1][1])
def test00(self):
"""Verify bones are inserted for simple moves."""
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 Y100
G1 X12
G1 Y10
G1 X10
G1 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 4)
self.assertEqual("1: (10.00, 100.00)", self.formatBone(db.bones[0]))
self.assertEqual("2: (12.00, 100.00)", self.formatBone(db.bones[1]))
self.assertEqual("3: (12.00, 10.00)", self.formatBone(db.bones[2]))
self.assertEqual("4: (10.00, 10.00)", self.formatBone(db.bones[3]))
def test01(self):
"""Verify bones are inserted if hole ends with rapid move out."""
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 Y100
G1 X12
G1 Y10
G1 X10
G0 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 4)
self.assertEqual("1: (10.00, 100.00)", self.formatBone(db.bones[0]))
self.assertEqual("2: (12.00, 100.00)", self.formatBone(db.bones[1]))
self.assertEqual("3: (12.00, 10.00)", self.formatBone(db.bones[2]))
self.assertEqual("4: (10.00, 10.00)", self.formatBone(db.bones[3]))
def test02(self):
"""Verify bones are correctly generated for a Profile."""
doc = FreeCAD.newDocument("TestDressupDogbone")
# This is a real world test to make sure none of the tool chain broke
box0 = doc.addObject("Part::Box", "Box")
box0.Width = 100
box0.Length = 100
box0.Height = 10
box1 = doc.addObject("Part::Box", "Box")
box1.Width = 50
box1.Length = 50
box1.Height = 20
box1.Placement = FreeCAD.Placement(
FreeCAD.Vector(25, 25, -5), FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), 0)
)
doc.recompute()
cut = doc.addObject("Part::Cut", "Cut")
cut.Base = box0
cut.Tool = box1
doc.recompute()
for i in range(11):
face = "Face%d" % (i + 1)
f = cut.Shape.getElement(face)
if f.Surface.Axis == FreeCAD.Vector(0, 0, 1) and f.Orientation == "Forward":
break
PathJob.Create("Job", [cut], None)
profile = PathProfile.Create("Profile")
profile.Base = (cut, face)
profile.StepDown = 5
# set start and final depth in order to eliminate effects of stock (and its default values)
profile.setExpression("StartDepth", None)
profile.StartDepth = 10
profile.setExpression("FinalDepth", None)
profile.FinalDepth = 0
profile.processHoles = True
profile.processPerimeter = True
doc.recompute()
dogbone = PathDressupDogbone.Create(profile)
doc.recompute()
dog = dogbone.Proxy
locs = sorted([bone[1] for bone in dog.bones], key=lambda xy: xy[0] * 1000 + xy[1])
def formatBoneLoc(pt):
return "(%.2f, %.2f)" % (pt[0], pt[1])
# Make sure we get 8 bones, 2 in each corner (different heights)
# with start point changes it passes back over the same spot multiple times, so just make sure they are in the right locations
# self.assertEqual(len(locs), 8)
self.assertEqual("(27.50, 27.50)", formatBoneLoc(locs[0]))
self.assertEqual("(27.50, 27.50)", formatBoneLoc(locs[1]))
self.assertEqual("(27.50, 72.50)", formatBoneLoc(locs[2]))
self.assertEqual("(27.50, 72.50)", formatBoneLoc(locs[3]))
self.assertEqual("(72.50, 27.50)", formatBoneLoc(locs[4]))
self.assertEqual("(72.50, 27.50)", formatBoneLoc(locs[5]))
self.assertEqual("(72.50, 72.50)", formatBoneLoc(locs[6]))
self.assertEqual("(72.50, 72.50)", formatBoneLoc(locs[7]))
FreeCAD.closeDocument("TestDressupDogbone")
def test03(self):
"""Verify no bone is inserted for straight move interrupted by plunge."""
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 X0 ( start)
G1 Y0
G1 X15
G1 Y10
G1 X10 ( straight line move to start)
G0 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 0)
def test04(self):
"""Verify can handle comments between moves"""
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 X20
G1 Y0
G1 X10
G1 Y10
G1 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 4)
self.assertEqual("1: (20.00, 10.00)", self.formatBone(db.bones[0]))
self.assertEqual("2: (20.00, 0.00)", self.formatBone(db.bones[1]))
self.assertEqual("3: (10.00, 0.00)", self.formatBone(db.bones[2]))
self.assertEqual("4: (10.00, 10.00)", self.formatBone(db.bones[3]))
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 X20
G1 Y0
G1 X10
(some comment or other should not change the output)
G1 Y10
G1 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 4)
self.assertEqual("1: (20.00, 10.00)", self.formatBone(db.bones[0]))
self.assertEqual("2: (20.00, 0.00)", self.formatBone(db.bones[1]))
self.assertEqual("3: (10.00, 0.00)", self.formatBone(db.bones[2]))
self.assertEqual("4: (10.00, 10.00)", self.formatBone(db.bones[3]))
def test05(self):
"""Verify can handle noops between moves"""
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 X20
G1 Y0
G1 X10
G1 Y10
G1 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 4)
self.assertEqual("1: (20.00, 10.00)", self.formatBone(db.bones[0]))
self.assertEqual("2: (20.00, 0.00)", self.formatBone(db.bones[1]))
self.assertEqual("3: (10.00, 0.00)", self.formatBone(db.bones[2]))
self.assertEqual("4: (10.00, 10.00)", self.formatBone(db.bones[3]))
base = TestProfile(
"Inside",
"CW",
"""
G0 X10 Y10 Z10
G1 Z0
G1 X20
G1 Y0
G1 X10
G1 X10
G1 Y10
G1 Z10
""",
)
obj = TestFeature()
db = PathDressupDogbone.ObjectDressup(obj, base)
db.setup(obj, True)
db.execute(obj, False)
self.assertEqual(len(db.bones), 4)
self.assertEqual("1: (20.00, 10.00)", self.formatBone(db.bones[0]))
self.assertEqual("2: (20.00, 0.00)", self.formatBone(db.bones[1]))
self.assertEqual("3: (10.00, 0.00)", self.formatBone(db.bones[2]))
self.assertEqual("4: (10.00, 10.00)", self.formatBone(db.bones[3]))
-2
View File
@@ -73,7 +73,6 @@ SET(PathPythonDressupGui_SRCS
Path/Dressup/Gui/__init__.py
Path/Dressup/Gui/Array.py
Path/Dressup/Gui/AxisMap.py
Path/Dressup/Gui/Dogbone.py
Path/Dressup/Gui/DogboneII.py
Path/Dressup/Gui/Dragknife.py
Path/Dressup/Gui/LeadInOut.py
@@ -531,7 +530,6 @@ SET(Tests_SRCS
CAMTests/TestPathCore.py
CAMTests/TestPathDepthParams.py
CAMTests/TestPathDressupArray.py
CAMTests/TestPathDressupDogbone.py
CAMTests/TestPathDressupDogboneII.py
CAMTests/TestPathDressupHoldingTags.py
CAMTests/TestPathDrillGenerator.py
File diff suppressed because it is too large Load Diff
-1
View File
@@ -37,7 +37,6 @@ from CAMTests.TestPathAdaptive import TestPathAdaptive
from CAMTests.TestPathCommandAnnotations import TestPathCommandAnnotations
from CAMTests.TestPathCore import TestPathCore
from CAMTests.TestPathDepthParams import depthTestCases
from CAMTests.TestPathDressupDogbone import TestDressupDogbone
from CAMTests.TestPathDressupDogboneII import TestDressupDogboneII
from CAMTests.TestPathDressupHoldingTags import TestHoldingTags
from CAMTests.TestPathDrillable import TestPathDrillable