Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

from director import applogic 

from director import objectmodel as om 

from director import visualization as vis 

 

 

 

class RobotLinkSelector(object): 

 

    def __init__(self): 

        self.selectedLink = None 

        self.setupMenuAction() 

 

    def setupMenuAction(self): 

        self.action = applogic.addMenuAction('Tools', 'Robot Link Selector') 

        self.action.setCheckable(True) 

        self.action.checked = False 

 

    def enabled(self): 

        return self.action.checked == True 

 

    def setEnabled(self, enabled): 

        if (enabled and not self.action.checked) or (not enabled and self.action.checked): 

            self.action.trigger() 

 

    def onLeftDoubleClick(self, displayPoint, view, event): 

        return self.selectLink(displayPoint, view) 

 

    def selectLink(self, displayPoint, view): 

 

        if not self.enabled(): 

            return False 

 

        robotModel, _ = vis.findPickedObject(displayPoint, view) 

 

        try: 

            robotModel.model.getLinkNameForMesh 

        except AttributeError: 

            return False 

 

        model = robotModel.model 

 

        pickedPoint, _, polyData = vis.pickProp(displayPoint, view) 

 

        linkName = model.getLinkNameForMesh(polyData) 

        if not linkName: 

            return False 

 

        fadeValue = 1.0 if linkName == self.selectedLink else 0.05 

 

        for name in model.getLinkNames(): 

            linkColor = model.getLinkColor(name) 

            linkColor.setAlphaF(fadeValue) 

            model.setLinkColor(name, linkColor) 

 

        if linkName == self.selectedLink: 

            self.selectedLink = None 

            vis.hideCaptionWidget() 

            om.removeFromObjectModel(om.findObjectByName('selected link frame')) 

 

        else: 

            self.selectedLink = linkName 

            linkColor = model.getLinkColor(self.selectedLink) 

            linkColor.setAlphaF(1.0) 

            model.setLinkColor(self.selectedLink, linkColor) 

            vis.showCaptionWidget(robotModel.getLinkFrame(self.selectedLink).GetPosition(), self.selectedLink, view=view) 

            vis.updateFrame(robotModel.getLinkFrame(self.selectedLink), 'selected link frame', scale=0.2, parent=robotModel) 

 

        return True