pyjallib 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,321 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ from pymxs import runtime as rt
5
+ from PySide2 import QtWidgets, QtCore, QtGui
6
+ import gc # Import garbage collector
7
+
8
+ from pyjallib.max.header import Header
9
+
10
+ jal = Header()
11
+
12
+ class HelperTypeSelDialog(QtWidgets.QDialog):
13
+ def __init__(self, parent=QtWidgets.QWidget.find(rt.windows.getMAXHWND())):
14
+ super(HelperTypeSelDialog, self).__init__(parent)
15
+
16
+ self.selectedHelperType = ""
17
+ self.changeHelperType = False
18
+
19
+ self.setWindowTitle("Helper Type")
20
+ self.setMinimumWidth(100)
21
+
22
+ self.layout = QtWidgets.QVBoxLayout(self)
23
+
24
+ self.helper_type_combo = QtWidgets.QComboBox(self)
25
+ typeNamePart = jal.name.get_name_part("Type")
26
+ typeNameDescriptions = typeNamePart.get_descriptions()
27
+ self.helper_type_combo.addItems(typeNameDescriptions)
28
+ self.layout.addWidget(self.helper_type_combo)
29
+
30
+ self.ok_button = QtWidgets.QPushButton("OK", self)
31
+ self.ok_button.clicked.connect(self.accept)
32
+ self.layout.addWidget(self.ok_button)
33
+
34
+ self.ok_button.clicked.connect(self.ok_pressed)
35
+
36
+ def ok_pressed(self):
37
+ selHelperDescription = self.helper_type_combo.currentText()
38
+ typeNamePart = jal.name.get_name_part("Type")
39
+ self.selectedHelperType = typeNamePart.get_value_by_description(selHelperDescription)
40
+ self.changeHelperType = True
41
+ self.accept()
42
+
43
+ class ModifyHelperShapeDialog(QtWidgets.QDialog):
44
+ def __init__(self, parent=QtWidgets.QWidget.find(rt.windows.getMAXHWND())):
45
+ super(ModifyHelperShapeDialog, self).__init__(parent)
46
+ self.helperArray = []
47
+
48
+ self.setWindowTitle("Modify Helper Shape")
49
+
50
+ self.layout = QtWidgets.QVBoxLayout(self)
51
+
52
+ # Size and Add layout
53
+ sizeLayout = QtWidgets.QHBoxLayout()
54
+ addLayout = QtWidgets.QHBoxLayout()
55
+
56
+ sizeLabel = QtWidgets.QLabel("Size:")
57
+ self.size_spinbox = QtWidgets.QDoubleSpinBox()
58
+ self.size_spinbox.setValue(1.0) # Default value
59
+ self.size_spinbox.setSingleStep(0.1)
60
+ sizeLayout.addWidget(sizeLabel)
61
+ sizeLayout.addWidget(self.size_spinbox)
62
+
63
+ addLabel = QtWidgets.QLabel("Add:")
64
+ self.add_spinbox = QtWidgets.QDoubleSpinBox()
65
+ self.add_spinbox.setValue(0.0) # Default value
66
+ self.add_spinbox.setSingleStep(0.1)
67
+ addLayout.addWidget(addLabel)
68
+ addLayout.addWidget(self.add_spinbox)
69
+
70
+ # Radio button layout
71
+ shapeGroup = QtWidgets.QGroupBox("Shape:")
72
+ radioLayout = QtWidgets.QGridLayout()
73
+ self.radio_box = QtWidgets.QRadioButton("Box")
74
+ self.radio_cross = QtWidgets.QRadioButton("Cross")
75
+ self.radio_axis = QtWidgets.QRadioButton("Axis")
76
+ self.radio_center = QtWidgets.QRadioButton("Center")
77
+ self.radio_box.setChecked(True) # Default selection
78
+ radioLayout.addWidget(self.radio_box, 0, 0)
79
+ radioLayout.addWidget(self.radio_cross, 0, 1)
80
+ radioLayout.addWidget(self.radio_axis, 1, 0)
81
+ radioLayout.addWidget(self.radio_center, 1, 1)
82
+ shapeGroup.setLayout(radioLayout)
83
+
84
+ # OK and Cancel buttons (optional but recommended)
85
+ buttonLayout = QtWidgets.QHBoxLayout()
86
+ self.ok_button = QtWidgets.QPushButton("OK")
87
+ self.cancel_button = QtWidgets.QPushButton("Cancel")
88
+ buttonLayout.addWidget(self.ok_button)
89
+ buttonLayout.addWidget(self.cancel_button)
90
+
91
+ self.layout.addLayout(sizeLayout)
92
+ self.layout.addLayout(addLayout)
93
+ self.layout.addWidget(shapeGroup) # Add the group box to the layout instead of the raw radioLayout
94
+ self.layout.addLayout(buttonLayout)
95
+
96
+ self.size_spinbox.valueChanged.connect(self.change_helper_size)
97
+ self.add_spinbox.valueChanged.connect(self.add_helper_size)
98
+ self.add_spinbox.editingFinished.connect(self.reset_add_spinbox)
99
+
100
+ self.radio_box.toggled.connect(self.change_helper_shape)
101
+ self.radio_cross.toggled.connect(self.change_helper_shape)
102
+ self.radio_axis.toggled.connect(self.change_helper_shape)
103
+ self.radio_center.toggled.connect(self.change_helper_shape)
104
+
105
+ self.ok_button.clicked.connect(self.accept)
106
+ self.cancel_button.clicked.connect(self.reject)
107
+
108
+ def change_helper_size(self):
109
+ if len(self.helperArray) == 0:
110
+ return
111
+ for obj in self.helperArray:
112
+ jal.helper.set_size(obj, self.size_spinbox.value())
113
+
114
+ def add_helper_size(self):
115
+ if len(self.helperArray) == 0:
116
+ return
117
+ for obj in self.helperArray:
118
+ jal.helper.add_size(obj, self.add_spinbox.value())
119
+
120
+ def reset_add_spinbox(self):
121
+ self.add_spinbox.setValue(0.0) # Reset the add spinbox to 0 after editing is finished
122
+
123
+ def change_helper_shape(self):
124
+ if len(self.helperArray) == 0:
125
+ return
126
+ for obj in self.helperArray:
127
+ if self.radio_box.isChecked():
128
+ jal.helper.set_shape_to_box(obj)
129
+ elif self.radio_cross.isChecked():
130
+ jal.helper.set_shape_to_cross(obj)
131
+ elif self.radio_axis.isChecked():
132
+ jal.helper.set_shape_to_axis(obj)
133
+ elif self.radio_center.isChecked():
134
+ jal.helper.set_shape_to_center(obj)
135
+
136
+ def jal_create_parentHelper():
137
+ jal.helper.create_parent_helper()
138
+
139
+ def jal_create_helper():
140
+ dialog = HelperTypeSelDialog()
141
+ result = dialog.exec_()
142
+ changeHelperType = dialog.changeHelperType
143
+ if changeHelperType:
144
+ helperType = dialog.selectedHelperType
145
+ genHelpers = jal.helper.create_helper()
146
+ for item in genHelpers:
147
+ item.name = jal.name.replace_name_part("Type", item.name, helperType)
148
+
149
+ dialog.deleteLater()
150
+ dialog = None # Clear the reference to the dialog object
151
+ gc.collect() # Force garbage collection to free up memory
152
+
153
+ def jal_create_average_helper():
154
+ sel_array = rt.getCurrentSelection()
155
+
156
+ if len(sel_array) > 0:
157
+ temp_transform = rt.matrix3(1)
158
+ temp_transform.rotation = jal.anim.create_average_rot_transform(sel_array).rotation
159
+ temp_transform.position = jal.anim.create_average_pos_transform(sel_array).position
160
+
161
+ dum_name = jal.helper.gen_helper_name_from_obj(sel_array[0])
162
+ dum_shape = jal.helper.gen_helper_shape_from_obj(sel_array[0])
163
+ average_dum = jal.helper.create_point(
164
+ dum_name[0],
165
+ size=dum_shape[0],
166
+ boxToggle=dum_shape[2],
167
+ crossToggle=dum_shape[1]
168
+ )
169
+ average_dum.transform = temp_transform
170
+
171
+ def jal_create_pos_average_helper():
172
+ sel_array = rt.getCurrentSelection()
173
+
174
+ if len(sel_array) > 0:
175
+ temp_transform = rt.matrix3(1)
176
+ temp_transform.position = jal.anim.create_average_pos_transform(sel_array).position
177
+
178
+ dum_name = jal.helper.gen_helper_name_from_obj(sel_array[0])
179
+ dum_shape = jal.helper.gen_helper_shape_from_obj(sel_array[0])
180
+ average_dum = jal.helper.create_point(
181
+ dum_name[0],
182
+ size=dum_shape[0],
183
+ boxToggle=dum_shape[2],
184
+ crossToggle=dum_shape[1]
185
+ )
186
+ average_dum.transform = temp_transform
187
+ average_dum.name = jal.name.replace_name_part("Type", average_dum.name, "Pos")
188
+
189
+ def jal_create_rot_average_helper():
190
+ sel_array = rt.getCurrentSelection()
191
+
192
+ if len(sel_array) > 0:
193
+ temp_transform = rt.matrix3(1)
194
+ temp_transform.rotation = jal.anim.create_average_rot_transform(sel_array).rotation
195
+
196
+ dum_name = jal.helper.gen_helper_name_from_obj(sel_array[0])
197
+ dum_shape = jal.helper.gen_helper_shape_from_obj(sel_array[0])
198
+ average_dum = jal.helper.create_point(
199
+ dum_name[0],
200
+ size=dum_shape[0],
201
+ boxToggle=dum_shape[2],
202
+ crossToggle=dum_shape[1]
203
+ )
204
+ average_dum.transform = temp_transform
205
+ average_dum.name = jal.name.replace_name_part("Type", average_dum.name, "Rot")
206
+
207
+ def jal_create_expHelper():
208
+ jal.helper.create_exp_tm()
209
+
210
+ def jal_create_two_helper():
211
+ dialog = HelperTypeSelDialog()
212
+ result = dialog.exec_()
213
+ helperType = dialog.selectedHelperType
214
+ genHelpers = jal.helper.create_helper(make_two=True)
215
+ for item in genHelpers:
216
+ item.name = jal.name.replace_name_part("Type", item.name, helperType)
217
+
218
+ dialog.deleteLater()
219
+ dialog = None # Clear the reference to the dialog object
220
+ gc.collect() # Force garbage collection to free up memory
221
+
222
+ def jal_modify_helperShape():
223
+ # Get current selection
224
+ selArray = rt.getCurrentSelection()
225
+ if not selArray or len(selArray) == 0:
226
+ rt.messageBox("Please select at least one helper object.")
227
+ return
228
+ helperArray = [item for item in selArray if rt.superClassOf(item) == rt.Helper]
229
+ if len(helperArray) == 0:
230
+ return
231
+
232
+ # Assuming the first selected object is the one to modify
233
+ helperObj = helperArray[0]
234
+
235
+ modDialog = ModifyHelperShapeDialog()
236
+
237
+ # Set initial values from the selected helper (if possible)
238
+ modDialog.size_spinbox.setValue(helperObj.size)
239
+
240
+ modDialog.helperArray = helperArray
241
+
242
+ result = modDialog.exec_()
243
+
244
+ modDialog.deleteLater()
245
+ modDialog = None
246
+ gc.collect()
247
+
248
+ # Register macroscripts
249
+ macroScript_Category = "jalTools"
250
+
251
+ rt.jal_create_parentHelper = jal_create_parentHelper
252
+ rt.macros.new(
253
+ macroScript_Category,
254
+ "jal_create_parentHelper",
255
+ "Create Parent Helper",
256
+ "Create Parent Helper",
257
+ "jal_create_parentHelper()"
258
+ )
259
+
260
+ rt.jal_create_helper = jal_create_helper
261
+ rt.macros.new(
262
+ macroScript_Category,
263
+ "jal_create_helper",
264
+ "Create Helper",
265
+ "Create Helper",
266
+ "jal_create_helper()"
267
+ )
268
+
269
+ rt.jal_create_average_helper = jal_create_average_helper
270
+ rt.macros.new(
271
+ macroScript_Category,
272
+ "jal_create_average_helper",
273
+ "Create Average Helper",
274
+ "Create Average Helper",
275
+ "jal_create_average_helper()"
276
+ )
277
+
278
+ rt.jal_create_pos_average_helper = jal_create_pos_average_helper
279
+ rt.macros.new(
280
+ macroScript_Category,
281
+ "jal_create_pos_average_helper",
282
+ "Create Pos avrg. Helper",
283
+ "Create Pos avrg. Helper",
284
+ "jal_create_pos_average_helper()"
285
+ )
286
+
287
+ rt.jal_create_rot_average_helper = jal_create_rot_average_helper
288
+ rt.macros.new(
289
+ macroScript_Category,
290
+ "jal_create_rot_average_helper",
291
+ "Create Rot avrg. Helper",
292
+ "Create Rot avrg. Helper",
293
+ "jal_create_rot_average_helper()"
294
+ )
295
+
296
+ rt.jal_create_expHelper = jal_create_expHelper
297
+ rt.macros.new(
298
+ macroScript_Category,
299
+ "jal_create_expHelper",
300
+ "Create Exp Helper",
301
+ "Create Exp Helper",
302
+ "jal_create_expHelper()"
303
+ )
304
+
305
+ rt.jal_create_two_helper = jal_create_two_helper
306
+ rt.macros.new(
307
+ macroScript_Category,
308
+ "jal_create_two_helper",
309
+ "Create Two Helper",
310
+ "Create Two Helper",
311
+ "jal_create_two_helper()"
312
+ )
313
+
314
+ rt.jal_modify_helperShape = jal_modify_helperShape
315
+ rt.macros.new(
316
+ macroScript_Category,
317
+ "jal_modify_helperShape",
318
+ "Modify Helper shape",
319
+ "Modify Helper shape",
320
+ "jal_modify_helperShape()"
321
+ )
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ from pymxs import runtime as rt
5
+
6
+ def jal_link_to_last():
7
+ jal.link.link_to_last_sel()
8
+
9
+ def jal_link_to_first():
10
+ jal.link.link_to_first_sel()
11
+
12
+ def jal_unlink():
13
+ jal.link.unlink_selection()
14
+
15
+ def jal_unlink_children():
16
+ jal.link.unlink_children()
17
+
18
+ # Register macroscripts
19
+ macroScript_Category = "jalTools"
20
+
21
+ rt.jal_link_to_last = jal_link_to_last
22
+ rt.macros.new(
23
+ macroScript_Category,
24
+ "jal_link_to_last",
25
+ "Link to last",
26
+ "Link to last",
27
+ "jal_link_to_last()"
28
+ )
29
+
30
+ rt.jal_link_to_first = jal_link_to_first
31
+ rt.macros.new(
32
+ macroScript_Category,
33
+ "jal_link_to_first",
34
+ "Link to first",
35
+ "Link to first",
36
+ "jal_link_to_first()"
37
+ )
38
+
39
+ rt.jal_unlink = jal_unlink
40
+ rt.macros.new(
41
+ macroScript_Category,
42
+ "jal_unLink",
43
+ "Unlink",
44
+ "Unlink",
45
+ "jal_unlink()"
46
+ )
47
+
48
+ rt.jal_unlink_children = jal_unlink_children
49
+ rt.macros.new(
50
+ macroScript_Category,
51
+ "jal_unLink_children",
52
+ "Unlink children",
53
+ "Unlink children",
54
+ "jal_unlink_children()"
55
+ )
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ from pymxs import runtime as rt
5
+
6
+ def jal_selFilter_all():
7
+ jal.sel.set_selectionSet_to_all()
8
+ if rt.selection.count > 0:
9
+ rt.getCurrentSelection()
10
+
11
+ def jal_selFilter_bone():
12
+ jal.sel.set_selectionSet_to_bone()
13
+ if rt.selection.count > 0:
14
+ jal.sel.filter_bone()
15
+
16
+ def jal_selFilter_bip():
17
+ jal.sel.set_selectionSet_to_bone()
18
+ if rt.selection.count > 0:
19
+ jal.sel.filter_bip()
20
+
21
+ def jal_selFilter_point():
22
+ jal.sel.set_selectionSet_to_point()
23
+ if rt.selection.count > 0:
24
+ jal.sel.filter_helper()
25
+
26
+ def jal_selFilter_expTm():
27
+ jal.sel.set_selectionSet_to_helper()
28
+ if rt.selection.count > 0:
29
+ jal.sel.filter_expTm()
30
+
31
+ def jal_selFilter_spline():
32
+ jal.sel.set_selectionSet_to_spline()
33
+ if rt.selection.count > 0:
34
+ jal.sel.filter_spline()
35
+
36
+ # Register macroscripts
37
+ macroScript_Category = "jalTools"
38
+
39
+ rt.jal_selFilter_all = jal_selFilter_all
40
+ rt.macros.new(
41
+ macroScript_Category,
42
+ "jal_selFilter_all",
43
+ "Selection filter All",
44
+ "Selection filter All",
45
+ "jal_selFilter_all()"
46
+ )
47
+
48
+ rt.jal_selFilter_bone = jal_selFilter_bone
49
+ rt.macros.new(
50
+ macroScript_Category,
51
+ "jal_selFilter_bone",
52
+ "Selection filter Bone",
53
+ "Selection filter Bone",
54
+ "jal_selFilter_bone()"
55
+ )
56
+
57
+ rt.jal_selFilter_bip = jal_selFilter_bip
58
+ rt.macros.new(
59
+ macroScript_Category,
60
+ "jal_selFilter_bip",
61
+ "Selection filter Bip",
62
+ "Selection filter Bip",
63
+ "jal_selFilter_bip()"
64
+ )
65
+
66
+ rt.jal_selFilter_point = jal_selFilter_point
67
+ rt.macros.new(
68
+ macroScript_Category,
69
+ "jal_selFilter_point",
70
+ "Selection filter Point",
71
+ "Selection filter Point",
72
+ "jal_selFilter_point()"
73
+ )
74
+
75
+ rt.jal_selFilter_expTm = jal_selFilter_expTm
76
+ rt.macros.new(
77
+ macroScript_Category,
78
+ "jal_selFilter_expTm",
79
+ "Selection filter ExpTm",
80
+ "Selection filter ExpTm",
81
+ "jal_selFilter_expTm()"
82
+ )
83
+
84
+ rt.jal_selFilter_spline = jal_selFilter_spline
85
+ rt.macros.new(
86
+ macroScript_Category,
87
+ "jal_selFilter_spline",
88
+ "Selection filter Spline",
89
+ "Selection filter Spline",
90
+ "jal_selFilter_spline()"
91
+ )