FreeCAD

Форк
0
/
ColorPerFaceTest.py 
86 строк · 2.7 Кб
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3

4
# test to check color per face when after restore
5

6
import FreeCAD as App
7
import Part
8
import os
9
import tempfile
10
import unittest
11
from pivy import coin
12

13
class ColorPerFaceTest(unittest.TestCase):
14
    def setUp(self):
15
        TempPath = tempfile.gettempdir()
16
        self.fileName = TempPath + os.sep + "ColorPerFaceTest.FCStd"
17
        self.doc = App.newDocument()
18

19
    def tearDown(self):
20
        App.closeDocument(self.doc.Name)
21

22
    def testBox(self):
23
        box = self.doc.addObject("Part::Box","Box")
24
        self.doc.recompute()
25

26
        box.ViewObject.DiffuseColor = [(1.,0.,0.,0.),
27
                                       (1.,0.,0.,0.),
28
                                       (1.,0.,0.,0.),
29
                                       (1.,0.,0.,0.),
30
                                       (1.,1.,0.,0.),
31
                                       (1.,1.,0.,0.)]
32

33
        box.Visibility = False
34
        self.doc.recompute()
35

36
        self.doc.saveAs(self.fileName)
37
        App.closeDocument(self.doc.Name)
38

39
        self.doc = App.openDocument(self.fileName)
40
        box = self.doc.Box
41
        box.Visibility = True
42
        self.assertEqual(len(box.ViewObject.DiffuseColor), 6)
43

44
        sa = coin.SoSearchAction()
45
        sa.setType(coin.SoMaterial.getClassTypeId())
46
        # We need an easier way to access nodes of a display mode
47
        sa.setInterest(coin.SoSearchAction.ALL)
48
        sa.apply(box.ViewObject.RootNode)
49
        paths = sa.getPaths()
50

51
        mat = paths.get(2).getTail()
52
        self.assertEqual(mat.diffuseColor.getNum(), 6)
53

54
    def testBoxAndLink(self):
55
        box = self.doc.addObject("Part::Box","Box")
56
        self.doc.recompute()
57

58
        box.ViewObject.DiffuseColor = [(1.,0.,0.,0.),
59
                                       (1.,0.,0.,0.),
60
                                       (1.,0.,0.,0.),
61
                                       (1.,0.,0.,0.),
62
                                       (1.,1.,0.,0.),
63
                                       (1.,1.,0.,0.)]
64

65
        link = self.doc.addObject('App::Link','Link')
66
        link.setLink(box)
67
        box.Visibility = False
68
        self.doc.recompute()
69

70
        self.doc.saveAs(self.fileName)
71
        App.closeDocument(self.doc.Name)
72

73
        self.doc = App.openDocument(self.fileName)
74
        box = self.doc.Box
75
        box.Visibility = True
76
        self.assertEqual(len(box.ViewObject.DiffuseColor), 6)
77

78
        sa = coin.SoSearchAction()
79
        sa.setType(coin.SoMaterial.getClassTypeId())
80
        # We need an easier way to access nodes of a display mode
81
        sa.setInterest(coin.SoSearchAction.ALL)
82
        sa.apply(box.ViewObject.RootNode)
83
        paths = sa.getPaths()
84

85
        mat = paths.get(2).getTail()
86
        self.assertEqual(mat.diffuseColor.getNum(), 6)
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.