Открыть боковую панель
nikitronn
sverchok
Коммиты
98345a67
Не подтверждена
Коммит
98345a67
создал
Июл 25, 2022
по автору
Sergey
Зафиксировано автором
GitHub
Июл 25, 2022
Просмотр файлов
Merge pull request #4588 from nortikin/list_item_vectorization
List Item node vectorization
владельцы
24100906
99a68507
Изменения
1
Скрыть пробелы
Построчно
Рядом
nodes/list_struct/item.py
Просмотр файла @
98345a67
...
...
@@ -59,32 +59,27 @@ class SvListItemNode(bpy.types.Node, SverchCustomTreeNode):
self
.
index
=
old_node
.
item
def
sv_update
(
self
):
'''
adapt socket type to input type
'''
if
'Data'
in
self
.
inputs
and
self
.
inputs
[
'Data'
].
link
s
:
"""
adapt socket type to input type
"""
if
self
.
inputs
[
'Data'
].
is_
link
ed
:
inputsocketname
=
'Data'
outputsocketname
=
[
'Item'
,
'Other'
]
changable_sockets
(
self
,
inputsocketname
,
outputsocketname
)
def
process
(
self
):
'''main node function called every update'''
if
self
.
inputs
[
'Data'
].
is_linked
:
out_item
,
out_other
=
self
.
outputs
data
=
self
.
inputs
[
'Data'
].
sv_get
(
deepcopy
=
False
)
indexes
=
self
.
inputs
[
'Index'
].
sv_get
(
default
=
[[
self
.
index
]],
deepcopy
=
False
)
if
out_item
.
is_linked
:
if
self
.
level
-
1
:
out
=
self
.
get_
(
data
,
self
.
level
-
1
,
indexes
,
self
.
get_items
)
else
:
out
=
self
.
get_items
(
data
,
indexes
[
0
])
out_item
.
sv_set
(
out
)
if
out_other
.
is_linked
:
if
self
.
level
-
1
:
out
=
self
.
get_
(
data
,
self
.
level
-
1
,
indexes
,
self
.
get_other
)
else
:
out
=
self
.
get_other
(
data
,
indexes
[
0
])
out_other
.
sv_set
(
out
)
data
=
self
.
inputs
[
'Data'
].
sv_get
(
default
=
[],
deepcopy
=
False
)
indexes
=
self
.
inputs
[
'Index'
].
sv_get
(
deepcopy
=
False
)
if
self
.
level
-
1
:
out
=
self
.
get_
(
data
,
self
.
level
-
1
,
indexes
,
self
.
get_items
)
else
:
out
=
self
.
get_items
(
data
,
indexes
[
0
])
self
.
outputs
[
0
].
sv_set
(
out
)
if
self
.
level
-
1
:
out
=
self
.
get_
(
data
,
self
.
level
-
1
,
indexes
,
self
.
get_other
)
else
:
out
=
self
.
get_other
(
data
,
indexes
[
0
])
self
.
outputs
[
1
].
sv_set
(
out
)
def
get_items
(
self
,
data
,
indexes
):
'''extract the indexes from the list'''
...
...
@@ -126,10 +121,13 @@ class SvListItemNode(bpy.types.Node, SverchCustomTreeNode):
return
None
def
get_
(
self
,
data
,
level
,
indexes
,
func
):
# get is build-in method of Node class
'''
iterative function to get down to the requested level
'''
"""
iterative function to get down to the requested level
"""
if
level
==
1
:
obj_num
=
max
(
len
(
data
),
len
(
indexes
))
index_iter
=
repeat_last
(
indexes
)
return
[
self
.
get_
(
obj
,
level
-
1
,
next
(
index_iter
),
func
)
for
obj
in
data
]
data_iter
=
repeat_last
(
data
)
return
[
self
.
get_
(
next
(
data_iter
),
level
-
1
,
next
(
index_iter
),
func
)
for
_
in
range
(
obj_num
)]
elif
level
:
return
[
self
.
get_
(
obj
,
level
-
1
,
indexes
,
func
)
for
obj
in
data
]
else
:
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать