[REQ] Plugin Multi-View Elevations
-
@box said:
One thing to keep in mind while making this. If the scene order is right it should make a good basis for a standard animation.
I just had fish for dinner, so mine is baited breath.
-
Hi,
Any ideas on what will be the name of this plugin?
Cheers!
-
The name of the symbol is an Elevation Marker. Perhaps "MarkerMaker"?
-
The name is important since it will give a hint as to what the plugin do.
"Marker Maker" - Is good
"Elevation Maker" - Maybe good as well?
Anyways no hurry for this but its nice to start exploring ideas.
-
Elevation Maker would be good if you can also make the exterior elevations... which would be an inversion of directions. The same marker is used for exterior parallel elevations.
Easy Elevations?
Interioriza?
Elevation Tools? -
sectionist
-
Multi Elevation Set Point
-
Late to the party...
ElevTag
- 1 direction == outside elev marker...
ElevTag4
- 4 direction == room elev marker...That's what mine is called...
Unpublished for personal use... -
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!
Advertisement