Hi
that seems the opposite of “zoom extents” rhino command… scale (and move) the geometry to fit the viewport(?)
Is this really what you want?
You say “a large set of objects”… but this would mean that after moving each object to viewport the old one should be removed, or they would overlap…
Could you explain better, in detail, how you imagined the whole process?
It shouldn’t be to hard to do this with script/c#/gh but it’s better to understand well what you have in mind before putting anything down.
Cycle through a set of GH objects of various sizes as follows
Bake a single object from the set
Scale it to view port boundary - the part I have not figured out
Capture the view port - I’m using a view port to PNG capture component
Delete the object - using a component that deletes all object on the default layer
Next object in the list
The part I’m wrestling with is how to get an object to fill the view port. Maybe I need to just scale all objects to the same size before baking it. I was hoping there is a command or component that would show the object in a view port to fill the full view port. I’m not a python or C# guy I mostly use components to create the GH scripts.
I hope this helps explaining what I’m trying to do.
Ok,
The attached definition is pretty small.
It could have been done entirely in c#, but for the sake of understanding (mine and others), and to keeping it simple, I’ve done half the work in c# and the other half in gh.
The c# component just get camera viewport properties to output:
a point, intersection of camera>target vector to world XY plane
(i couldn’t use cameratarget point because it would move to the preview brep itself; if wired instead of shaded preview that could be still an alternative)
a number, radius of the largest sphere that could fit inside active viewport (centered on previous point)
(To “refresh” the c# component I used a timer; you can disable it and trigger it manually…)
Then in gh i scaled and moved the breps accordingly to that virtual sphere.
In rendered mode you can already see your preview.
Instead of baking/deleting every time, you can again use c# to make the bake refresh/move as a preview.