Hi!
There's an edit that my team wants to make to the layout node so we want to do a save-as and create our own node type. By default, the layout node has all these brush and other parameters:

Interestingly, as soon as I right click -> Digital Asset -> Save As and put it in my own directory, these options disappear:

All that is left are the parameters that appear when I right click -> Type Properties.
I don't know much about
viewer states [
www.sidefx.com] but it seems like maybe there's something having to do with that going on. When I right click and choose "Edit extra sections source code," I see the following options:

ViewerStateName.orig has nothing in it.
OnCreated has this in it:
import layout.assetlayoutinterface as ali
import layout.brush as brushes
ali.onCreateLayoutNode()
brushes.loadPlugins()
OnLoaded has this in it:
import layout.assetlayoutinterface as ali
import layout.brush as brushes
ali.loadPlugins()
brushes.loadPlugins()
# For legacy layout nodes since the ASSETS subnet is
# editable we need to explicitly try and fix them so they
# can take advantage of using the proper up axis metadata
# on the input stage.
assets = kwargs['node'].node("./ASSETS")
configure_layer = kwargs['node'].node("./configurelayer1")
if assets.input(1) is None:
start = assets.node("./START_ASSETS")
if start is not None:
# Because ASSETS is editable the update that wires the
# configure layer LOP into the second input does not
# apply to old nodes. In that case just copy it into
# the editable subnet and wire it up directly.
new_config_layer = configure_layer.copyTo(assets)
start.setInput(0, new_config_layer)
These are present both in the original node and the new node, so I'm not sure why it would be behaving differently.
Anyone have any tips so that I can get all the normal settings in our own version of the layout tool?
Thanks!
Anson
As a side note, I get a bunch of errors like this in my console:
File "/opt/hfs19.5/houdini/python3.9libs/layout/brushpanel.py", line 860, in onBrushSelected
node = self._bim.selectBrush(brush_info)
File "/opt/hfs19.5/houdini/python3.9libs/layout/brushitemmodel.py", line 209, in selectBrush
node, new = ALI.instance().selectBrush(brush_info["node_type"], brush_info["name"])
File "/opt/hfs19.5/houdini/python3.9libs/layout/assetlayoutinterface.py", line 287, in selectBrush
self.emitCustomEvent(ALI.eventType.BrushSelected, None)
File "/opt/hfs19.5/houdini/python3.9libs/layout/assetlayoutinterface.py", line 302, in emitCustomEvent
self._triggerEventCallbacks(kwargs)
File "/opt/hfs19.5/houdini/python3.9libs/layout/assetlayoutinterface.py", line 337, in _triggerEventCallbacks
cb(kwargs)
File "/opt/hfs19.5/houdini/viewer_states/sidefx_lop_layout.py", line 1006, in onALIEvent
self._handleBrushSelected()
File "/opt/hfs19.5/houdini/viewer_states/sidefx_lop_layout.py", line 1025, in _handleBrushSelected
self._supports_resize = self.brush_iface.supportsResize()
File "/opt/hfs19.5/houdini/layoutplugins/brush_interfaces/sidefx_brush_interface.py", line 150, in supportsResize
self._updateBrushIfNeeded()
File "/opt/hfs19.5/houdini/layoutplugins/brush_interfaces/sidefx_brush_interface.py", line 318, in _updateBrushIfNeeded
if self._brush_asset != brush:
File "/opt/hfs19.5/houdini/python3.9libs/hou.py", line 14141, in __ne__
return _hou.Node___ne__(self, node)
hou.ObjectWasDeleted: Attempt to access an object that no longer exists in Houdini.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/hfs19.5/houdini/python3.9libs/layout/brushpanel.py", line 871, in onBrushSelected
raise Exception(model.Utils.error("Error selecting brush {}\n{}".format(brush_info["name"],traceback.format_exc()))) from e
Exception: Brush panel - Error selecting brush layoutbrushplace1
Traceback (most recent call last):
File "/opt/hfs19.5/houdini/python3.9libs/layout/brushpanel.py", line 860, in onBrushSelected
node = self._bim.selectBrush(brush_info)
File "/opt/hfs19.5/houdini/python3.9libs/layout/brushitemmodel.py", line 209, in selectBrush
node, new = ALI.instance().selectBrush(brush_info["node_type"], brush_info["name"])
File "/opt/hfs19.5/houdini/python3.9libs/layout/assetlayoutinterface.py", line 287, in selectBrush
self.emitCustomEvent(ALI.eventType.BrushSelected, None)
File "/opt/hfs19.5/houdini/python3.9libs/layout/assetlayoutinterface.py", line 302, in emitCustomEvent
self._triggerEventCallbacks(kwargs)
File "/opt/hfs19.5/houdini/python3.9libs/layout/assetlayoutinterface.py", line 337, in _triggerEventCallbacks
cb(kwargs)
File "/opt/hfs19.5/houdini/viewer_states/sidefx_lop_layout.py", line 1006, in onALIEvent
self._handleBrushSelected()
File "/opt/hfs19.5/houdini/viewer_states/sidefx_lop_layout.py", line 1025, in _handleBrushSelected
self._supports_resize = self.brush_iface.supportsResize()
File "/opt/hfs19.5/houdini/layoutplugins/brush_interfaces/sidefx_brush_interface.py", line 150, in supportsResize
self._updateBrushIfNeeded()
File "/opt/hfs19.5/houdini/layoutplugins/brush_interfaces/sidefx_brush_interface.py", line 318, in _updateBrushIfNeeded
if self._brush_asset != brush:
File "/opt/hfs19.5/houdini/python3.9libs/hou.py", line 14141, in __ne__
return _hou.Node___ne__(self, node)
hou.ObjectWasDeleted: Attempt to access an object that no longer exists in Houdini.