def test01(self): '''Verify SetupSheet template attributes roundtrip.''' o1 = PathSetupSheet.Create() self.doc.recompute() o1.VertRapid = '10 mm/s' o1.HorizRapid = '22 mm/s' o1.SafeHeightOffset = '18 mm' o1.SafeHeightExpression = 'Hugo+Olga' o1.ClearanceHeightOffset = '23 mm' o1.ClearanceHeightExpression = 'Peter+Paul' o1.StartDepthExpression = 'Alpha' o1.FinalDepthExpression = 'Omega' o1.StepDownExpression = '1' o2 = PathSetupSheet.Create() self.doc.recompute() o2.Proxy.setFromTemplate(o1.Proxy.templateAttributes()) self.doc.recompute() self.assertRoughly(o1.VertRapid, o2.VertRapid) self.assertRoughly(o1.HorizRapid, o2.HorizRapid) self.assertRoughly(o1.SafeHeightOffset, o2.SafeHeightOffset) self.assertEqual(o1.SafeHeightExpression, o2.SafeHeightExpression) self.assertRoughly(o1.ClearanceHeightOffset, o2.ClearanceHeightOffset) self.assertEqual(o1.ClearanceHeightExpression, o2.ClearanceHeightExpression) self.assertEqual(o1.StartDepthExpression, o2.StartDepthExpression) self.assertEqual(o1.FinalDepthExpression, o2.FinalDepthExpression) self.assertEqual(o1.StepDownExpression, o2.StepDownExpression)
def test01(self): '''Verify SetupSheet template attributes roundtrip.''' o1 = PathSetupSheet.Create() self.doc.recompute() o1.VertRapid = '10 mm/s' o1.HorizRapid = '22 mm/s' o1.SafeHeightOffset = '18 mm' o1.SafeHeightExpression = 'Hugo+Olga' o1.ClearanceHeightOffset = '23 mm' o1.ClearanceHeightExpression = 'Peter+Paul' o1.StartDepthExpression = 'Alpha' o1.FinalDepthExpression = 'Omega' o1.StepDownExpression = '1' o2 = PathSetupSheet.Create() self.doc.recompute() o2.Proxy.setFromTemplate(o1.Proxy.templateAttributes()) self.doc.recompute() # Need to compare the UserString's due to rounding errors depending on the # user's unit settings - should have no impact on the validity self.assertEqual(o1.VertRapid.UserString, o2.VertRapid.UserString) self.assertEqual(o1.HorizRapid.UserString, o2.HorizRapid.UserString) self.assertEqual(o1.SafeHeightOffset.UserString, o2.SafeHeightOffset.UserString) self.assertEqual(o1.SafeHeightExpression, o2.SafeHeightExpression) self.assertEqual(o1.ClearanceHeightOffset.UserString, o2.ClearanceHeightOffset.UserString) self.assertEqual(o1.ClearanceHeightExpression, o2.ClearanceHeightExpression) self.assertEqual(o1.StartDepthExpression, o2.StartDepthExpression) self.assertEqual(o1.FinalDepthExpression, o2.FinalDepthExpression) self.assertEqual(o1.StepDownExpression, o2.StepDownExpression)
def test12(self): '''Verify template attributes encoding/decoding of dictionaries.''' ss = PathSetupSheet.Create().Proxy self.assertEqual( str(ss.encodeTemplateAttributes({'00': { '01': 'hugo' }})), refstring("{'00': {'01': u'hugo'}}")) self.assertEqual( str( ss.encodeTemplateAttributes( {'00': { '01': 'SetupSheet.y - SetupSheet.z' }})), refstring("{'00': {'01': u'${SetupSheet}.y - ${SetupSheet}.z'}}")) self.assertEqual( str(ss.decodeTemplateAttributes({'00': { '01': 'hugo' }})), refstring("{'00': {'01': u'hugo'}}")) self.assertEqual( str( ss.decodeTemplateAttributes( {'00': { '01': '${SetupSheet}.y - ${SetupSheet}.z' }})), refstring("{'00': {'01': u'SetupSheet.y - SetupSheet.z'}}"))
def setupSetupSheet(self, obj): if not hasattr(obj, 'SetupSheet'): obj.addProperty('App::PropertyLink', 'SetupSheet', 'Base', QtCore.QT_TRANSLATE_NOOP('PathJob', 'SetupSheet holding the settings for this job')) obj.SetupSheet = PathSetupSheet.Create() if obj.SetupSheet.ViewObject: PathIconViewProvider.ViewProvider(obj.SetupSheet.ViewObject, 'SetupSheet') self.setupSheet = obj.SetupSheet.Proxy
def test12(self): """Verify template attributes encoding/decoding of dictionaries.""" ss = PathSetupSheet.Create().Proxy self.assertEqual( str(ss.encodeTemplateAttributes({"00": { "01": "hugo" }})), refstring("{'00': {'01': u'hugo'}}"), ) self.assertEqual( str( ss.encodeTemplateAttributes( {"00": { "01": "SetupSheet.y - SetupSheet.z" }})), refstring("{'00': {'01': u'${SetupSheet}.y - ${SetupSheet}.z'}}"), ) self.assertEqual( str(ss.decodeTemplateAttributes({"00": { "01": "hugo" }})), refstring("{'00': {'01': u'hugo'}}"), ) self.assertEqual( str( ss.decodeTemplateAttributes( {"00": { "01": "${SetupSheet}.y - ${SetupSheet}.z" }})), refstring("{'00': {'01': u'SetupSheet.y - SetupSheet.z'}}"), )
def test10(self): '''Verify template attributes encoding/decoding of floats.''' ss = PathSetupSheet.Create().Proxy self.assertEqual(ss.expressionReference(), 'SetupSheet') self.assertEqual(str(ss.encodeTemplateAttributes({'00': 13.00})), "{'00': 13.0}") self.assertEqual(str(ss.decodeTemplateAttributes({'00': 13.00})), "{'00': 13.0}")
def test13(self): '''Verify template attributes encoding/decoding of lists.''' ss = PathSetupSheet.Create().Proxy attrs = {} attrs['00'] = 'x.SetupSheet' attrs['01'] = [{'10': 'SetupSheet', '11': 'SetupSheet.y'}, {'20': 'SetupSheet'}] attrs['02'] = [{'a': [{'b': 'SetupSheet'}, {'c': 'SetupSheet'}], 'b': [{'b': 'SetupSheet'}]}] encoded = ss.encodeTemplateAttributes(attrs) self.assertEqual(encoded['00'], 'x.${SetupSheet}') self.assertEqual(len(encoded['01']), 2) self.assertEqual(encoded['01'][0]['10'], '${SetupSheet}') self.assertEqual(encoded['01'][0]['11'], '${SetupSheet}.y') self.assertEqual(str(encoded['01'][1]), refstring("{'20': u'${SetupSheet}'}")) self.assertEqual(len(encoded['02']), 1) self.assertEqual(len(encoded['02'][0]['a']), 2) self.assertEqual(str(encoded['02'][0]['a'][0]), refstring("{'b': u'${SetupSheet}'}")) self.assertEqual(str(encoded['02'][0]['a'][1]), refstring("{'c': u'${SetupSheet}'}")) self.assertEqual(len(encoded['02'][0]['b']), 1) self.assertEqual(str(encoded['02'][0]['b'][0]), refstring("{'b': u'${SetupSheet}'}")) decoded = ss.decodeTemplateAttributes(encoded) self.assertEqual(len(decoded), len(attrs)) self.assertEqual(decoded['00'], attrs['00']) self.assertEqual(len(decoded['01']), len(attrs['01'])) self.assertEqual(decoded['01'][0]['10'], attrs['01'][0]['10']) self.assertEqual(decoded['01'][0]['11'], attrs['01'][0]['11']) self.assertEqual(decoded['01'][1]['20'], attrs['01'][1]['20']) self.assertEqual(len(decoded['02']), len(attrs['02'])) self.assertEqual(len(decoded['02'][0]['a']), len(attrs['02'][0]['a'])) self.assertEqual(decoded['02'][0]['a'][0]['b'], attrs['02'][0]['a'][0]['b']) self.assertEqual(decoded['02'][0]['a'][1]['c'], attrs['02'][0]['a'][1]['c']) self.assertEqual(len(decoded['02'][0]['b']), len(attrs['02'][0]['b'])) self.assertEqual(decoded['02'][0]['b'][0]['b'], attrs['02'][0]['b'][0]['b']) # just to be safe ... s2 = PathSetupSheet.Create().Proxy self.doc.recompute() s2.setFromTemplate(ss.templateAttributes()) self.assertEqual(s2.expressionReference(), 'SetupSheet001') dec = s2.decodeTemplateAttributes(encoded) # pick one self.assertEqual(dec['01'][0]['11'], 'SetupSheet001.y')
def test02(self): '''Verify default value detection logic.''' obj = PathSetupSheet.Create() ss = obj.Proxy self.assertTrue(ss.hasDefaultToolRapids()) self.assertTrue(ss.hasDefaultOperationHeights()) self.assertTrue(ss.hasDefaultOperationDepths()) obj.VertRapid = '1 mm/s' self.assertFalse(ss.hasDefaultToolRapids()) obj.VertRapid = '0 mm/s' self.assertTrue(ss.hasDefaultToolRapids()) obj.HorizRapid = '1 mm/s' self.assertFalse(ss.hasDefaultToolRapids()) obj.HorizRapid = '0 mm/s' self.assertTrue(ss.hasDefaultToolRapids()) obj.SafeHeightOffset = '0 mm' self.assertFalse(ss.hasDefaultOperationHeights()) obj.SafeHeightOffset = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultSafeHeightOffset) self.assertTrue(ss.hasDefaultOperationHeights()) obj.ClearanceHeightOffset = '0 mm' self.assertFalse(ss.hasDefaultOperationHeights()) obj.ClearanceHeightOffset = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultClearanceHeightOffset) self.assertTrue(ss.hasDefaultOperationHeights()) obj.SafeHeightExpression = '0 mm' self.assertFalse(ss.hasDefaultOperationHeights()) obj.SafeHeightExpression = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultSafeHeightExpression) self.assertTrue(ss.hasDefaultOperationHeights()) obj.ClearanceHeightExpression = '0 mm' self.assertFalse(ss.hasDefaultOperationHeights()) obj.ClearanceHeightExpression = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultClearanceHeightExpression) self.assertTrue(ss.hasDefaultOperationHeights()) obj.StartDepthExpression = '' self.assertFalse(ss.hasDefaultOperationDepths()) obj.StartDepthExpression = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultStartDepthExpression) self.assertTrue(ss.hasDefaultOperationDepths()) obj.FinalDepthExpression = '' self.assertFalse(ss.hasDefaultOperationDepths()) obj.FinalDepthExpression = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultFinalDepthExpression) self.assertTrue(ss.hasDefaultOperationDepths()) obj.StepDownExpression = '' self.assertFalse(ss.hasDefaultOperationDepths()) obj.StepDownExpression = ss.decodeAttributeString( PathSetupSheet.SetupSheet.DefaultStepDownExpression) self.assertTrue(ss.hasDefaultOperationDepths())
def test00(self): '''Verify SetupSheet templateAttributes''' ss = PathSetupSheet.Create().Proxy self.doc.recompute() attrs = ss.templateAttributes(True, True) self.assertEqualLocale(attrs[PathSetupSheet.Template.HorizRapid], '0.00 mm/s') self.assertEqualLocale(attrs[PathSetupSheet.Template.VertRapid], '0.00 mm/s') self.assertEqualLocale(attrs[PathSetupSheet.Template.SafeHeightOffset], '3.00 mm') self.assertEqual(attrs[PathSetupSheet.Template.SafeHeightExpression], 'OpStockZMax+SetupSheet.SafeHeightOffset') self.assertEqualLocale(attrs[PathSetupSheet.Template.ClearanceHeightOffset], '5.00 mm') self.assertEqual(attrs[PathSetupSheet.Template.ClearanceHeightExpression], 'OpStockZMax+SetupSheet.ClearanceHeightOffset')
def setupSetupSheet(self, obj): if not getattr(obj, "SetupSheet", None): obj.addProperty( "App::PropertyLink", "SetupSheet", "Base", QtCore.QT_TRANSLATE_NOOP( "PathJob", "SetupSheet holding the settings for this job"), ) obj.SetupSheet = PathSetupSheet.Create() if obj.SetupSheet.ViewObject: import PathScripts.PathIconViewProvider PathScripts.PathIconViewProvider.Attach( obj.SetupSheet.ViewObject, "SetupSheet") self.setupSheet = obj.SetupSheet.Proxy
def test11(self): """Verify template attributes encoding/decoding of strings.""" ss = PathSetupSheet.Create().Proxy self.assertEqual( str(ss.encodeTemplateAttributes({"00": "hugo"})), refstring("{'00': u'hugo'}"), ) self.assertEqual( str(ss.encodeTemplateAttributes({"00": "SetupSheet"})), refstring("{'00': u'${SetupSheet}'}"), ) self.assertEqual( str(ss.encodeTemplateAttributes({"00": "SetupSheet.y"})), refstring("{'00': u'${SetupSheet}.y'}"), ) self.assertEqual( str(ss.encodeTemplateAttributes({"00": "${hugo}"})), refstring("{'00': u'${hugo}'}"), ) self.assertEqual( str(ss.decodeTemplateAttributes({"00": "hugo"})), refstring("{'00': u'hugo'}"), ) self.assertEqual( str(ss.decodeTemplateAttributes({"00": "${SetupSheet}"})), refstring("{'00': u'SetupSheet'}"), ) self.assertEqual( str(ss.decodeTemplateAttributes({"00": "${SetupSheet}.y"})), refstring("{'00': u'SetupSheet.y'}"), ) self.assertEqual( str( ss.decodeTemplateAttributes( {"00": "${SetupSheet}.y - ${SetupSheet}.z"})), refstring("{'00': u'SetupSheet.y - SetupSheet.z'}"), )
def Create(name='SetupSheet'): '''Create(name = 'SetupSheet') ... creates a new setup sheet''' FreeCAD.ActiveDocument.openTransaction(translate("Path_Job", "Create Job")) ssheet = PathSetupSheet.Create(name) PathIconViewProvider.Attach(ssheet, name) return ssheet
def Create(name="SetupSheet"): """Create(name='SetupSheet') ... creates a new setup sheet""" FreeCAD.ActiveDocument.openTransaction("Create Job") ssheet = PathSetupSheet.Create(name) PathIconViewProvider.Attach(ssheet, name) return ssheet
def test13(self): """Verify template attributes encoding/decoding of lists.""" ss = PathSetupSheet.Create().Proxy attrs = {} attrs["00"] = "x.SetupSheet" attrs["01"] = [{ "10": "SetupSheet", "11": "SetupSheet.y" }, { "20": "SetupSheet" }] attrs["02"] = [{ "a": [{ "b": "SetupSheet" }, { "c": "SetupSheet" }], "b": [{ "b": "SetupSheet" }], }] encoded = ss.encodeTemplateAttributes(attrs) self.assertEqual(encoded["00"], "x.${SetupSheet}") self.assertEqual(len(encoded["01"]), 2) self.assertEqual(encoded["01"][0]["10"], "${SetupSheet}") self.assertEqual(encoded["01"][0]["11"], "${SetupSheet}.y") self.assertEqual(str(encoded["01"][1]), refstring("{'20': u'${SetupSheet}'}")) self.assertEqual(len(encoded["02"]), 1) self.assertEqual(len(encoded["02"][0]["a"]), 2) self.assertEqual(str(encoded["02"][0]["a"][0]), refstring("{'b': u'${SetupSheet}'}")) self.assertEqual(str(encoded["02"][0]["a"][1]), refstring("{'c': u'${SetupSheet}'}")) self.assertEqual(len(encoded["02"][0]["b"]), 1) self.assertEqual(str(encoded["02"][0]["b"][0]), refstring("{'b': u'${SetupSheet}'}")) decoded = ss.decodeTemplateAttributes(encoded) self.assertEqual(len(decoded), len(attrs)) self.assertEqual(decoded["00"], attrs["00"]) self.assertEqual(len(decoded["01"]), len(attrs["01"])) self.assertEqual(decoded["01"][0]["10"], attrs["01"][0]["10"]) self.assertEqual(decoded["01"][0]["11"], attrs["01"][0]["11"]) self.assertEqual(decoded["01"][1]["20"], attrs["01"][1]["20"]) self.assertEqual(len(decoded["02"]), len(attrs["02"])) self.assertEqual(len(decoded["02"][0]["a"]), len(attrs["02"][0]["a"])) self.assertEqual(decoded["02"][0]["a"][0]["b"], attrs["02"][0]["a"][0]["b"]) self.assertEqual(decoded["02"][0]["a"][1]["c"], attrs["02"][0]["a"][1]["c"]) self.assertEqual(len(decoded["02"][0]["b"]), len(attrs["02"][0]["b"])) self.assertEqual(decoded["02"][0]["b"][0]["b"], attrs["02"][0]["b"][0]["b"]) # just to be safe ... s2 = PathSetupSheet.Create().Proxy self.doc.recompute() s2.setFromTemplate(ss.templateAttributes()) self.assertEqual(s2.expressionReference(), "SetupSheet001") dec = s2.decodeTemplateAttributes(encoded) # pick one self.assertEqual(dec["01"][0]["11"], "SetupSheet001.y")