Sorcar
Sorcar copied to clipboard
[BUG] Select Random throws error
Describe the bug When adding Select Random, Blender throws an error and the node doesn't work.
To Reproduce
- Add geometry, for example "Create Icosphere"
- Add "Select Random"
- See error
Desktop (please complete the following information):
- OS: Win10 x64 20H2 b.19042.1052
- Blender Version: 2.93.0
- Sorcar Version: 3.2.1
Output
Python: Traceback (most recent call last):
File "C:\Users\fabia\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\sorcar\operators\ScExecuteNode.py", line 19, in execute
curr_tree.execute_node()
File "C:\Users\fabia\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\sorcar\tree\ScNodeTree.py", line 77, in execute_node
if (not n.execute()):
File "C:\Users\fabia\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\sorcar\nodes\_base\node_base.py", line 56, in execute
self.functionality()
File "C:\Users\fabia\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\sorcar\nodes\selection\ScSelectRandom.py", line 31, in functionality
bpy.ops.mesh.select_random(
File "E:\Blender 2.93\2.93\scripts\modules\bpy\ops.py", line 132, in __call__
ret = _op_call(self.idname_py(), None, kw)
TypeError: Converting py args to operator properties: : keyword "percent" unrecognized
location: <unknown location>:-1
Same error, OS and Sorcar Version. Using Blender V2.93.1
Hello, problem occurs due to blender API evolution
API https://docs.blender.org/api/current/bpy.ops.mesh.html
bpy.ops.mesh.select_random(ratio=0.5, seed=0, action='SELECT')
Randomly select vertices
Parameters
ratio (float in [0, 1], (optional)) – Ratio, Portion of items to select randomly
seed (int in [0, inf], (optional)) – Random Seed, Seed for the random number generator
action (enum in ['SELECT', 'DESELECT'], (optional)) –
Action, Selection action to execute
SELECT Select, Select all elements.
DESELECT Deselect, Deselect all elements.
Code evolution C:\Users[user]\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\Sorcar-master\nodes\selection\ScSelectRandom.py
import bpy
from bpy.props import EnumProperty, IntProperty, FloatProperty
from bpy.types import Node
from .._base.node_base import ScNode
from .._base.node_selection import ScSelectionNode
class ScSelectRandom(Node, ScSelectionNode):
bl_idname = "ScSelectRandom"
bl_label = "Select Random"
#in_percent: FloatProperty(default=50.0, min=0.0, max=100.0, update=ScNode.update_value)
in_ratio: FloatProperty(default=0.5, min=0.0, max=1.0, update=ScNode.update_value)
in_seed: IntProperty(default=0, min=0, update=ScNode.update_value)
in_action: EnumProperty(items=[("SELECT", "Select", ""), ("DESELECT", "Deselect", "")], default="SELECT", update=ScNode.update_value)
def init(self, context):
super().init(context)
#self.inputs.new("ScNodeSocketNumber", "Percent").init("in_percent", True)
self.inputs.new("ScNodeSocketNumber", "Ratio").init("in_ratio", True)
self.inputs.new("ScNodeSocketNumber", "Seed").init("in_seed", True)
self.inputs.new("ScNodeSocketString", "Action").init("in_action", True)
def error_condition(self):
return(
super().error_condition()
#or (self.inputs["Percent"].default_value < 0 or self.inputs["Percent"].default_value > 100)
or (self.inputs["Ratio"].default_value < 0 or self.inputs["Ratio"].default_value > 1)
or self.inputs["Seed"].default_value < 0
or (not self.inputs["Action"].default_value in ["SELECT", "DESELECT"])
)
def functionality(self):
bpy.ops.mesh.select_random(
#percent = self.inputs["Percent"].default_value,
ratio = self.inputs["Ratio"].default_value,
seed = int(self.inputs["Seed"].default_value),
action = self.inputs["Action"].default_value
)
Getting this error in blender 3.1.2 and sorcar 3.2.1 OS: Windows