Когда отключаю фильтр, объект появляется без материала во вьюпорте, но рендере всё ок. Восстановить материал можно только кликнув два раза на чекбокс Geometry.
Вот пример кода который создаёт фильтр скрывающий объекты типа Plane, и плоскость серого цвета с красным материалом. Затем включает и выключает фильтр.
В 2012 максе всё ок, плоскость остаётся красная, а в 2018 и 19 - серая.
fn setDisplayFilterByName name state =
(
for i = 1 to getNumberDisplayFilters() do
(
if (getDisplayFilterName i) == name then
setDisplayFilter i state
)
)
fn displayFilterCallback n =
return isKindOf n Plane;
registerDisplayFilterCallback displayFilterCallback "Plane"
-------------------------------
delete geometry
plane wirecolor:gray material:(standard diffusecolor:red)
setDisplayFilterByName "Plane" true
max views redraw
setDisplayFilterByName "Plane" false
Для восстановления материала использую такой костыль, но он кажется иногда вызывает падение макса.
fn updateMaterialDisplay =
(
for i = 1 to 2 do
(
hidebycategory.geometry = not hidebycategory.geometry
hidebycategory.shapes = not hidebycategory.shapes
hidebycategory.particles = not hidebycategory.particles
)
)
(
local REFMSG_NODE_DISPLAY_PROP_CHANGED = 0x00000241
for i in objects where not i.ishiddenInVpt do
notifyDependents i partID:#display msg:REFMSG_NODE_DISPLAY_PROP_CHANGED
)
Кому интересно, этот код можно выполнять в коллбэке #customDisplayFilterChanged, и он будет восстанавливать материал при каждом переключении фильтров.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Владислав Бодюл
Скрин
Когда отключаю фильтр, объект появляется без материала во вьюпорте, но рендере всё ок. Восстановить материал можно только кликнув два раза на чекбокс Geometry.
Вот пример кода который создаёт фильтр скрывающий объекты типа Plane, и плоскость серого цвета с красным материалом. Затем включает и выключает фильтр.
В 2012 максе всё ок, плоскость остаётся красная, а в 2018 и 19 - серая.
fn setDisplayFilterByName name state = ( for i = 1 to getNumberDisplayFilters() do ( if (getDisplayFilterName i) == name then setDisplayFilter i state ) ) fn displayFilterCallback n = return isKindOf n Plane; registerDisplayFilterCallback displayFilterCallback "Plane" ------------------------------- delete geometry plane wirecolor:gray material:(standard diffusecolor:red) setDisplayFilterByName "Plane" true max views redraw setDisplayFilterByName "Plane" falseДля восстановления материала использую такой костыль, но он кажется иногда вызывает падение макса.fn updateMaterialDisplay = ( for i = 1 to 2 do ( hidebycategory.geometry = not hidebycategory.geometry hidebycategory.shapes = not hidebycategory.shapes hidebycategory.particles = not hidebycategory.particles ) )Есть ли другой способ вернуть материал?Владислав Бодюл
( local REFMSG_NODE_DISPLAY_PROP_CHANGED = 0x00000241 for i in objects where not i.ishiddenInVpt do notifyDependents i partID:#display msg:REFMSG_NODE_DISPLAY_PROP_CHANGED )Кому интересно, этот код можно выполнять в коллбэке #customDisplayFilterChanged, и он будет восстанавливать материал при каждом переключении фильтров.