[REQ] Plugin Multi-View Elevations
-
camera samurai
-
You already have something that does this Tig?
-
Maybe TIG already have this but just in case here is some initial progress into making this plugin happen.
The following code is only purpose is to position camera to the center of a group (in this case the marker with arrows). The way the code filters other groups is by name so in this case I am naming the group "Camera".
model = Sketchup.active_model ; sel = model.selection ; ents = model.active_entities ; groups = ents.grep(Sketchup;;Group) groups.each do |e| if e.name == "Camera" boundbox = e.bounds ; @center = boundbox.center ; end ; end ; view = Sketchup.active_model.active_view ; x = @center.x.to_f ; y = @center.y.to_f ; z = 50 ; newEye = Geom;;Point3d.new(x,y,z) ; targetX = 0.0 if !targetX ; targetY = 0.0 if !targetY ; targetZ = 50.0 if !targetZ ; newTarget = Geom;;Point3d.new(targetX,targetY,targetZ) newUp = Geom;;Vector3d.new(0,0,1) newCamera = view.camera newCamera.set(newEye,newTarget,newUp) view.camera = newCamera view.invalidate()
There is still a lot of things to but just want to post some progress code. This is just testing code that you may use with "Ruby Code Editor" to see results.
Cheers!
-
woudn't it be more useful to actually click on the position required? (cheddar walls)
-
@cadfather said:
woudn't it be more useful to actually click on the position required? (cheddar walls)
yes that will be necessary. like 5 or more of these will be needed per plan... and rooms will never be in the same location.
-
What you suggested can be done no problem but having the ability to place a marker will provide visual reference which is good. Maybe you can click where you want to position camera and also place markers at the same time.
Cheers!
-
Are you probe CubicPanoOut? You can free downloading it here CubicPanoOut.rb
The plugin create six Views/Scenes-->Front, Right, Left, Back, Up and Down and you have the possibility to save the six images with size option.
With the Place Camera SU Tool, put the camera for example in the center of a room and automatically the CubicPanoOut generate the six Views/Scenes.
The problem is that the images generates are square, same width & height but you can go to File/Export/2D Graphic and save the image in the size that you want. -
I'll have a look at it.
-
We are talking about sections here rather than elevations, right? Elevations would just show internal orthogonal views and sections would cut through the walls.
Surely that would be awesome tool to have. -
In drafting we just call them elevations, but yes it is a section and in SU a section would be used to accomplish it. having the walls on either side cut out would be good. However, I have seen architects and designers show varying methods of showing them. some don't show any walls past the interior surface, some show the section of the wall, floor and roof/ceiling...
-
If you are showing design only than cut walls could be omitted, but if you are preparing working drawings than one would show cut walls. In any case I always show cut walls as they convey idea of proximity of windows /doors to the floor/ceiling.
So idea of this plugin is really advanced section tool. That would save a lot of time if possible to implement, so +1 from me. -
Hi,
Here is an update of what I have done so far;
#########Guide # camdist = 80*12 # Elavation A (Front) = x , y+camdist # Elavation B (Right) = x+camdist , y # Elavation D (Left) = x-camdist , y # Elavation C (Back) = x , y-camdist ######## model = Sketchup.active_model ; view = model.active_view ; camera = view.camera ; pages = model.pages ; page = pages.selected_page sel = model.selection ; ents = model.active_entities ; groups = ents.grep(Sketchup;;Group) groups.each do |e| if e.name == "Camera" boundbox = e.bounds ; @center = boundbox.center ; end ; end ; x = @center.x.to_f ; y = @center.y.to_f ; z = 6*12 ; newEye = Geom;;Point3d.new(x,y,z) ; newUp = Geom;;Vector3d.new(0,0,1) camdist = 80*12 if page == nil pages.add "Elevation A" pages.add "Elevation B" pages.add "Elevation C" pages.add "Elevation D" end elev1 = "Elevation A" ; elev2 = "Elevation B" ; elev3 = "Elevation D" ; elev4 = "Elevation C" ; page_num = 0 ; pages.each {|page| if page.name == elev1 pages.selected_page = model.pages[page_num] ; break end ; page_num+=1 ; } #Pages.each if page.name != "Elevation A" pages.add "Elevation A" end targetX = x ; targetY = y+camdist ; targetZ = z ; newTarget = Geom;;Point3d.new(targetX,targetY,targetZ) elevACam = view.camera elevACam.set(newEye,newTarget,newUp) view.camera = elevACam view.invalidate() camera.perspective = true ; camera.perspective = false ; page = pages.selected_page.update(1) ; ##################################################################### x = @center.x.to_f ; y = @center.y.to_f ; page_num = 0 ; pages.each {|page| if page.name == elev2 pages.selected_page = model.pages[page_num] ; break end ; page_num+=1 ; } #Pages.each if page.name != "Elevation B" pages.add "Elevation B" end targetX = x+camdist ; targetY = y ; targetZ = z ; newTarget = Geom;;Point3d.new(targetX,targetY,targetZ) elevBCam = view.camera elevBCam.set(newEye,newTarget,newUp) view.camera = elevBCam view.invalidate() camera.perspective = false ; page = pages.selected_page.update(1) ; ##################################################################### x = @center.x.to_f ; y = @center.y.to_f ; page_num = 0 ; pages.each {|page| if page.name == elev3 pages.selected_page = model.pages[page_num] ; break end ; page_num+=1 ; } #Pages.each if page.name != "Elevation D" pages.add "Elevation D" end targetX = x-camdist ; targetY = y ; targetZ = z ; newTarget = Geom;;Point3d.new(targetX,targetY,targetZ) elevBCam = view.camera elevBCam.set(newEye,newTarget,newUp) view.camera = elevBCam view.invalidate() camera.perspective = false ; page = pages.selected_page.update(1) ; ##################################################################### x = @center.x.to_f ; y = @center.y.to_f ; page_num = 0 ; pages.each {|page| if page.name == elev4 pages.selected_page = model.pages[page_num] ; break end ; page_num+=1 ; } #Pages.each if page.name != "Elevation C" pages.add "Elevation C" end targetX = x ; targetY = y-camdist ; targetZ = z ; newTarget = Geom;;Point3d.new(targetX,targetY,targetZ) elevBCam = view.camera elevBCam.set(newEye,newTarget,newUp) view.camera = elevBCam view.invalidate() camera.perspective = false ; page = pages.selected_page.update(1) ; ##################################################################### page_num = 0 ; pages.each {|page| if page.name == elev1 pages.selected_page = model.pages[page_num] ; break end ; page_num+=1 ; } #Pages.each
Important to realize that the above code is just a sketch which still needs to be polish but it offers an idea of the progress. Also I post it so that if anyone spots something that I can improve then please by all means let me know.
If you want to test this its important to do the following;
- Crete group to serve as a marker
- Right click that group and pick "Entity info"
- Under Name enter "Camera"
- Open "Ruby Code Editor" plugin
- Copy & Paste the above code I provided to "Ruby Code Editor"
- Execute Code
- Done!
Anyways hope to keep working on this so I can finish and make Beta rb file...Cheers!
-
I have PM'd a 2013 compliant version of my tool 'TIG-ElevTag' to some of you for beta-testing...
All comments welcome [by PM] before it gets published... -
Are you gonna publish it how i think you're gonna publish it?
-
NO.
I await beta-test results...
I'll send you a copy - to test -
Hi,
TIG is upcoming plugin looks very good! I might still finish my attempt to make plugin but only for learning purpose. (Hope to be as good as TIG one day)
Cheers!
-
@renderiza said:
Hi,
TIG is upcoming plugin looks very good! I might still finish my attempt to make plugin but only for learning purpose. (Hope to be as good as TIG one day)
Cheers!
He's a talented guy no doubt. I still want to see what you came up with too Renderiza.
-
Hi Tig
Any chance for me to test it?
Best
Sepo -
TIG or Rendriza,
Have you done anything further on your plugin? The need is certainly still out there.
KrisM
-
Here it is KrisM...
Advertisement