Perhaps …
view = Sketchup.active_model.active_view
screen_corners = [view.corner(0),view.corner(1),view.corner(3),view.corner(2)]
point_corners = screen_corners.map {|c| view.inputpoint(c.x,c.y).position }
… or …
corners = [0,1,3,2].map {|i| view.inputpoint(*view.corner(i)).position }
… or …
corners = [
view.inputpoint(view.corner(0)).position, # top left
view.inputpoint(view.corner(1)).position, # top right
view.inputpoint(view.corner(3)).position, # bottom right
view.inputpoint(view.corner(2)).position # bottom left
]
Tested on this model … “Front View” scene page (parallel projection camera)
window.skp (966.8 KB)
Returns this …
[ Point3d(-12.0729, 0, 108.692), Point3d(174.671, 0, 108.692),
Point3d(174.671, 0, -2.78699), Point3d(-12.0729, 0, -2.78699) ]
… which are all on the XZ plane, (where the front of the “window wall” is.)
The camera eye is at …
Point3d(81.2992, -222.886, 52.9528)
If you wanted to tranlate these corner points back to the camera plane ,then …
y = view.camera.eye.y
corners.each {|corner| corner.y= y }