コード例 #1
0
ファイル: TestPathSetupSheet.py プロジェクト: ws-os/FreeCAD
    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)
コード例 #2
0
    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)
コード例 #3
0
    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'}}"))
コード例 #4
0
 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
コード例 #5
0
    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'}}"),
        )
コード例 #6
0
    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}")
コード例 #7
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')
コード例 #8
0
    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())
コード例 #9
0
    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')
コード例 #10
0
    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
コード例 #11
0
    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'}"),
        )
コード例 #12
0
ファイル: PathSetupSheetGui.py プロジェクト: ycho98/FreeCAD
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
コード例 #13
0
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
コード例 #14
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")