Когда по нажатию кнопки в кастомном UI вы вызываете оператор и передаете в него нужные параметры, обратите внимание на то, что только указанные явно параметры будут переданы в оператор. Остальные параметры останутся со значениями по умолчанию.
Например, нам нужно вызвать оператор “transform_apply” – применение трансформаций к объекту, указав применить только масштаб.
Если мы вызовем оператор следующим образом:
1 2 3 4 5 6 7 8 9 |
class TESTPANEL_PT_panel(Panel): bl_idname = 'TESTPANEL_PT_panel' bl_label = 'Testpanel' bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_category = 'Testpanel' def draw(self, context): self.layout.operator('context.object.transform_apply', text='Apply Scale').scale = True |
К объекту все равно будут применены все трансформации (масштаб, вращение и положение).
Это происходит потому, что у оператора “transform_apply” по умолчанию все параметры применения установлены в “True”, и дополнительное указание “scale = True” ничего в вызове оператора не меняет. Он все равно вызывается как:
1 |
transform_apply(location=True, rotation=True, scale=True, properties=True) |
Для того, чтобы вызвать оператор только для применения масштаба, его нужно определить следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class TESTPANEL_PT_panel(Panel): bl_idname = 'TESTPANEL_PT_panel' bl_label = 'Testpanel' bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_category = 'Testpanel' def draw(self, context): operator = self.layout.operator('context.object.transform_apply', text='Apply Scale') operator.scale = True operator.location = False operator.rotation = False operator.properties = False |
В этом случае при вызове оператора будет применен только масштаб.