Skip to content

Commit 69c6f11

Browse files
committed
save:
- move Projection code to "Create" script - reorganize Experimental class
1 parent af1f092 commit 69c6f11

3 files changed

Lines changed: 60 additions & 57 deletions

File tree

GETOOLS_SOURCE/_prototypes/Projection.py

Lines changed: 0 additions & 31 deletions
This file was deleted.

GETOOLS_SOURCE/modules/Experimental.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
# from functools import partial
2626

2727
from .. import Settings
28-
from ..utils import File
28+
# from ..utils import File
29+
from ..utils import Create
2930
from ..utils import Layers
3031
from ..utils import Selector
3132
# from ..utils import Blendshapes
@@ -49,11 +50,12 @@ def UICreate(self, layoutMain):
4950
# cmds.popupMenu()
5051
# cmds.menuItem(label = "Right-Click test")
5152
# cmds.menuItem(dividerLabel = "label", divider = True)
53+
# cmds.menuItem(label = "Right-Click test")
54+
55+
cmds.columnLayout(parent = layoutMain, adjustableColumn = True, width = Settings.windowWidthScroll)
5256

5357
### MENU
54-
cmds.columnLayout("layoutMenuBar", parent = layoutMain, adjustableColumn = True, width = Settings.windowWidthScroll)
5558
cmds.menuBarLayout()
56-
5759
cmds.menu(label = "Layers", tearOff = True)
5860
cmds.menuItem(label = "Layer Create", command = self.LayerCreate)
5961
cmds.menuItem(label = "Layer Create For Selected", command = self.LayerCreateForSelected)
@@ -62,41 +64,45 @@ def UICreate(self, layoutMain):
6264
cmds.menuItem(label = "Layer Move", command = self.LayerMove)
6365

6466
### BUTTONS
65-
countOffsets = 4
66-
cmds.gridLayout(parent = layoutMain, numberOfColumns = countOffsets, cellWidth = Settings.windowWidthMargin / countOffsets, cellHeight = Settings.lineHeight)
67+
cmds.columnLayout(parent = layoutMain, adjustableColumn = True, width = Settings.windowWidthScroll)
6768
# cmds.button(label = "**Nucleus", command = partial(Physics.CreateNucleus, "testNucleus", None))
68-
cmds.button(label = "Particle", command = PhysicsParticle.CreateOnSelected)
69-
cmds.button(label = "P Aim", command = PhysicsParticle.CreateAimOnSelected)
70-
cmds.button(label = "P Combo", command = PhysicsParticle.CreateComboOnSelected)
69+
cmds.button(label = "Particle Point", command = PhysicsParticle.CreateOnSelected)
70+
cmds.button(label = "Particle Aim", command = PhysicsParticle.CreateAimOnSelected)
71+
cmds.button(label = "Particle Combo", command = PhysicsParticle.CreateComboOnSelected)
7172
# cmds.button(label = "**P Chain", command = PhysicsParticle.CreateAimChainOnSelected)
7273
# cmds.button(label = "Hair", command = partial(PhysicsHair.CreateNHairOnSelected, None))
74+
cmds.separator()
75+
cmds.button(label = "Print General Options", command = self.PrintAllOptions)
76+
cmds.separator()
77+
cmds.button(label = "Create Locator Projected To Mesh", command = self.CreateLocatorProjectedToMesh)
7378

74-
countOffsets = 2
75-
cmds.gridLayout(parent = layoutMain, numberOfColumns = countOffsets, cellWidth = Settings.windowWidthMargin / countOffsets, cellHeight = Settings.lineHeight)
76-
def GetCheckboxEulerFilter(*args):
77-
self.optionsPlugin.PrintAllOptions()
78-
cmds.button(label = "Print General Options", command = GetCheckboxEulerFilter)
79-
80-
### TEST LEAYER METHODS
79+
### LAYERS
8180
def LayerCreate(*args):
8281
Layers.Create("testLayer")
83-
8482
def LayerCreateForSelected(*args):
8583
selected = Selector.MultipleObjects()
8684
if (selected == None):
8785
return
8886
Layers.CreateForSelected(selected)
89-
9087
def LayerDelete(*args):
9188
Layers.Delete("testLayer")
92-
9389
def LayerGetSelected(*args):
9490
Layers.GetSelected()
95-
9691
def LayerMove(*args):
9792
selected = Layers.GetSelected()
9893
if (selected == None or len(selected) < 2):
9994
cmds.warning("Need to select at least 2 layers")
10095
return
10196
Layers.MoveChildrenToParent(selected[:-1], selected[-1]) # FIXME main problem is layers have no selection order, they just listed from top to bottom
10297

98+
99+
### OTHER
100+
def PrintAllOptions(self, *args):
101+
self.optionsPlugin.PrintAllOptions()
102+
103+
def CreateLocatorProjectedToMesh(*args):
104+
105+
selected = cmds.ls(selection = True)
106+
107+
Create.CreateLocatorProjectedToMesh(mesh = selected[0], createInsideOutsideLogic = True)
108+

GETOOLS_SOURCE/utils/Create.py

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,16 @@
2727
from ..utils import Text
2828

2929

30-
nameGroup = "grpPolygon"
31-
namePolygon = "customPolygon"
32-
nameLocator = "locator_"
33-
nameCluster = "cluster_"
34-
35-
3630
def CreatePolygonWithLocators(countPoints=3, radius=10, rotation=0):
3731
if countPoints < 3:
3832
cmds.warning("Number of points must be 3 or more to create a polygon")
3933
return None
4034

35+
nameGroup = "grpPolygon"
36+
namePolygon = "customPolygon"
37+
nameLocator = "locator_"
38+
nameCluster = "cluster_"
39+
4140
### Create main group as a container for all new objects
4241
mainGroup = cmds.group(name = Text.SetUniqueFromText(nameGroup), empty = True)
4342
cmds.setAttr(mainGroup + ".tx", lock = True)
@@ -90,5 +89,34 @@ def CreatePolygonWithLocators(countPoints=3, radius=10, rotation=0):
9089
### Select polygon
9190
cmds.select(poly, replace = True)
9291

93-
return poly, locators, handles
92+
return mainGroup, poly, locators, handles
93+
94+
def CreateLocatorProjectedToMesh(mesh, createInsideOutsideLogic=False, *args):
95+
### Names
96+
nameLocatorOriginal = "locOriginal"
97+
nameLocatorProjected = "locProjected"
98+
99+
### Get shape of mesh
100+
meshShape = cmds.listRelatives(mesh, shapes = True, fullPath = False)[0]
101+
102+
### Create locators
103+
locatorOriginal = cmds.spaceLocator(name = nameLocatorOriginal)[0]
104+
locatorProjected = cmds.spaceLocator(name = nameLocatorProjected)[0]
105+
106+
### Create closestPointOnMesh node
107+
closestPointOnMeshNode = cmds.createNode("closestPointOnMesh")
108+
109+
### Connect locators to closestPointOnMesh node
110+
cmds.connectAttr(meshShape + ".worldMesh[0]", closestPointOnMeshNode + ".inMesh")
111+
cmds.connectAttr(meshShape + ".worldMatrix[0]", closestPointOnMeshNode + ".inputMatrix")
112+
cmds.connectAttr(locatorOriginal + ".translate", closestPointOnMeshNode + ".inPosition")
113+
cmds.connectAttr(closestPointOnMeshNode + ".position", locatorProjected + ".translate")
114+
115+
if createInsideOutsideLogic:
116+
### Create inside/outside logic
117+
# floatConstantNode = cmds.createNode("floatConstant")
118+
# floatMathNode = cmds.createNode("floatMath")
119+
# floatLogicNode = cmds.createNode("floatLogic")
120+
# colorConditionNode = cmds.createNode("colorCondition")
121+
print("TODO: Create Inside Outside Logic")
94122

0 commit comments

Comments
 (0)