Samples/Utilities/FBGetSelectedModels.py

Samples/Utilities/FBGetSelectedModels.py
1 # Copyright 2009 Autodesk, Inc. All rights reserved.
2 # Use of this software is subject to the terms of the Autodesk license agreement
3 # provided at the time of installation or download, or which otherwise accompanies
4 # this software in either electronic or hard copy form.
5 #
6 # This script demonstrate the usage of FBGetSelectedModels.
7 #
8 # Topic: FBGetSelectedModels
9 #
10 
11 from pyfbsdk import FBVector3d, FBModel, FBModelCube, FBModelList, FBGetSelectedModels, FBMessageBox
12 
13 
14 # Create some models for demostrate of selection.
15 def CreateModel(pName, pPos):
16  lModel = FBModelCube(pName)
17  lModel.Scaling = FBVector3d(20, 20, 20)
18  lModel.Translation = pPos
19  lModel.Show = True;
20  lModel.Visible = True
21  return lModel
22 
23 lModel1 = CreateModel("Cube 1", FBVector3d(-80, 10, 0))
24 lModel2 = CreateModel("Cube 2", FBVector3d(0, 10, 0))
25 lModel3 = CreateModel("Cube 3", FBVector3d(80, 10, 0))
26 
27 lModel3.Parent = lModel2;
28 
29 # Simulate the interactiv selection in non scene graph order
30 lModel2.Selected = True
31 lModel3.Selected = True
32 lModel1.Selected = True
33 
34 # Define the function to show the list to the user.
35 def DisplaySelectList(pModelList, pMsg):
36  if len( lModelList ) == 0:
37  FBMessageBox( "Message", pMsg + "Nothing selected", "OK", None, None )
38  else:
39  lMessage = pMsg + "%d selected models:" % len( lModelList )
40 
41  # Okay, the following line looks a bit complicated... but we just
42  # build a string with all the selected object's name. One per line.
43  lMessage += ''.join( map( lambda pModel: "\n " + pModel.Name, lModelList ))
44 
45  # And bring up the pop-up...
46  FBMessageBox( "Message", lMessage, "OK", None, None )
47  del( lMessage )
48 
49 lModelList = FBModelList()
50 
51 # Get list of selected models in scene graph order
52 FBGetSelectedModels( lModelList)
53 DisplaySelectList(lModelList, "Get list of selected models in scene graph order.\n" )
54 lModelList.Clear()
55 
56 # Get list of selected models under lModel2 in scene graph order
57 FBGetSelectedModels( lModelList, lModel2, True )
58 DisplaySelectList(lModelList, "Get list of selected models under lModel2 in scene graph order.\n")
59 lModelList.Clear()
60 
61 # Get list of selected models in select order
62 FBGetSelectedModels( lModelList, None, True, True )
63 DisplaySelectList(lModelList, "Get list of selected models in select order.\n")
64 lModelList.Clear()
65 
66 
67 # Cleanup.
68 del( lModelList, lModel1, lModel2, lModel3 )
69 del( FBVector3d, FBModel, FBModelCube, FBModelList, FBGetSelectedModels, FBMessageBox )