Is there a ruby command to align camera to a section plane Like command “Align view”?
Or I need to find the plane, than the normal vector, than the up vector, than align the camera?
You can select the section cut itself and align view.
Oops, sorry, didn’t realise this was a developer question. Just ignore me.
It’s a little bit trickier than it could have been.
You can get a plane from a Section Plane’s get_plane method. However the returned plane is defined by 4 coordinates and you need to manually get the plane normal out of them. Once you’ve got a normal vector you can set the camera target to the camera eye offset by that vector.
A section-plane [sp
] has a plane [plane = sp.get_plane
] and from that you can get its normal = plane[0..2]
.
So you can set a new camera using the n = normal.reverse
as its direction of view…
Project an arbitrary point onto the ‘plane’ - this is now the ‘target’, offset it by ‘n’, to get the ‘eye’.
Use those to make and set the new camera then, zoom-extents to ensure you see everything…
The code could be something like this, given that a section plane is the only selected Entity in the model:
# Convert plane defined by 4 coordinate Array into one defined by Poin3d and Vector3d Array.
# Source: http://sketchucation.com/forums/viewtopic.php?f=180&t=25462
def format_plane(plane)
return plane if plane.length == 2
a, b, c, d = plane
v = Geom::Vector3d.new(a,b,c)
p = ORIGIN.offset(v.reverse, d)
[p, v]
end
model = Sketchup.active_model
section_plane = model.selection.first
plane = section_plane.get_plane
plane = format_plane(plane)
cam = model.active_view.camera
cam.set(cam.eye, cam.eye.offset(plane[1]), Z_AXIS)
Thank you, now I’ve all the answers I needed.
- There is no direct soluction
- How to find the normal vector
Distinti saluti
Kind regards
Saludos
Mit freundlichen Grüßen
Sincères salutations
Ing. Paolo Danielli
O&P s.r.l.
Via dei Bocchi 352/D
55010 Segromigno in Piano – Lucca
Tel. +39 0583 926598
Fax. +39 0583 921800
The information included in this e-mail and any attachments are
confidential and may also be privileged.
The diffusion, distribution e/o copying of the document transmitted from
any different subject from the recipient is forbidden, to the senses of the
art. 616 c.ps. and to the senses of the D.Lgs. n.196/2003.
If you are not the correct recipient, you are kindly requested to notify
the sender immediately at mecdep@oepweb.com or +39 0583 926598, to cancel
it and not to disclose the contents to any other person.
2017-07-24 13:40 GMT+02:00 Julia Christina Eneroth <
sketchup@discoursemail.com>:
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.