Bug report: Move block instance returns null without error

Related discussion: "Geometry" container acts as a bouncer for some breps in blocks - #17 by wim

@wim I know the discussion above is old but you were the last one to comment on it with a theory. My issue seem to prove the theory wrong, hence my post.

Issue: a block instance containing an apparently special kind of geometry, created in Rhino 8, cannot be moved using Grasshopper with the Move node. The move node returns null, but no error. @wim the untrimmed geometry was not especially larger than the trimmed geometry, so it doesn’t seem to be the cause of this bug.

Steps to reproduce:

System info:

Rhino 8 SR34 2026-8-11 (Rhino 8, 8.34.26223.11001, Git hash:master @ f416e902495235e4e4a45cfc29ff1320cc8c70d8)
License type: Commercial, build 2026-08-11
License details: Cloud Zoo

Windows 11 (10.0.26200 SR0.0) or greater (Physical RAM: 32GB)
.NET 8.0.14

Computer platform: LAPTOP - Plugged in [100% battery remaining]

Non-hybrid graphics configuration.
Primary display and OpenGL: NVIDIA GeForce RTX 4060 Laptop GPU (NVidia) Memory: 8GB, Driver date: 4-23-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 596.36

Integrated accelerated graphics device with 4 adapter port(s)

  • Windows Main Display is laptop’s integrated screen or built-in port
    Primary OpenGL: NVIDIA GeForce RTX 4060 Laptop GPU (NVidia) Memory: 8GB, Driver date: 4-23-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 596.36

Integrated accelerated graphics device with 4 adapter port(s)

  • Windows Main Display is laptop’s integrated screen or built-in port

Secondary graphics devices.
Intel(R) UHD Graphics (Intel) Memory: 2GB, Driver date: 4-28-2025 (M-D-Y).

Integrated graphics device with 4 adapter port(s)

  • Secondary monitor is laptop’s integrated screen or built-in port
  • Secondary monitor attached to adapter port 1

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 4-23-2026
Driver Version: 32.0.15.9636
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 8188 MB

Rhino plugins that do not ship with Rhino
C:\Program Files\SimLab\Plugins\SimLab PDF From Rhino\SimLabPDFExporter.rhp “SimLab PDF Exporter”

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\SolidTools.rhp “SolidTools”
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoLabsTools.rhp “Rhino Labs Tools”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\RhinoRender.rhp “Legacy Rhino Render”
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\BlockEdit.rhp “BlockEdit” 8.34.26223.11001
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

This is what I get when I create a block with your polysurface. The surface is bad already.

Thank you for your input, it seems that the issue is in fact caused by this invalid surface.

However I don’t see why GH shouldn’t be able to move an invalid geometry, nor why it should not throw an explicit error if it’s not able to.

Since it is a simple surface, I think it should be fixed before creating the block.

I agree in some situations it is not possible to fix the input and it would be nice if bad objects in blocks would not keep you from moving an instance.

PS: Actually the instance can be transformed.

2026-08-31_transform-block-with-bad-obj.gh (14.3 KB)

Man I don’t want to sound blunt here, but I didn’t write this message to look for help. It’s explicitly written at the beginning: “bug report”.

The fact that a workaround exists is interesting, and thank you for taking the time to find one, but it’s irrelevant to the bug report.

Not Valid being the key word here, you’ll want to create Valid geometry.

image

All good…

Maybe a block instance should not simply be plugged into a geometry input of a move component…

How did you create it?

why ?

you know what screw it. I’m taking valuable time in my workday to file bug reports when I find one, but if you guys at McNeel are happy living with undocumented bugs if undocumented workarounds exists, let’s file this issue as solved, so that you can work on funny useless new features instead. I’m sick of your way to manage this software development.

Because it is a block.

Also I’m not affiliated with McNeel.

Again. It would be interesting to know why the surface is bad. It’s the source of the issue you are seing. If you’re dealing with bad geometry all the time and this object is a placeholder to simply demonstrate the fact that you get no error with the move component, then sorry for chiming in.

A block instance is a geometry type, so it’s reasonable to expect a geometry input to accept it.

From my point of view, a block contains model objects which is geometry and attributes. Translating geometry, model object attributes and user text are lost. Therefore I don’t suggest moving blocks with a translate (move) component.

I guess “block instance” can refer to either the Rhino object (Rhino.DocObjects.InstanceObject) or to the geometry itself (Rhino.Geometry.InstanceReferenceGeometry). I had assumed the OP’s script was only referencing the geometry instance.

Are you aware that even curves can have attributes and user text ?..

Hi Felix -

I’ve put that on the list as RH-98245 Grasshopper: Deal with Referenced Bad Objects
This works as you expect in Grasshopper 2.
-wim