Trying to figure out how to enter (manually, or text file import) survey data (point cloud) collected using a Total Station. The location of each point is defined by horizontal angle, slope distance, and vertical angle from the origin (survey instrument location). I couldn’t get the protractor tool to work for these compound angles. I can draw a guideline or line at the horizontal angle, but how to measure a vertical angle up from a guideline (protractor only locks to one of the 3 axes, but not to a guideline). For example, how to draw a point (guide) located at a horizontal angle of 51.7 degrees (clockwise from green axis), vertical angle of 5.6 degrees, and slope distance of 24.53 ft?
I’d draw an edge the required length along the green axis, rotate it up around the red axis and then azimuth around blue. Press arrow keys to set the axis.
Sounds like the sort of thing an extension would be useful for. Don’t know if one already exists. Doing what Steve suggests is fine for one or two point but if you had lots it would take forever.
The solution in code
mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
SKETCHUP_CONSOLE.clear
ha=va=0.0;sd='100'.to_l
begin
vals = inputbox(["Horz Angle:","Vert Angle:","Slope Dist:"],[ha,va,sd],"Set Point")
if vals
ha,va,sd = vals
ht = Geom::Transformation.rotation(ORIGIN,Z_AXIS,-ha.degrees)
vt = Geom::Transformation.rotation(ORIGIN,X_AXIS,va.degrees)
pt = ORIGIN.offset(Y_AXIS,sd)
pt.transform! ht*vt
ent.add_cpoint(pt);mod.active_view.refresh
end
end while vals
Of course! I’ll give it a try. Of course! I’ll give it a try.
Just out of pure interest, how would you get this into the system and then how would you actually use it? What would each set of input data result in?
Use the code in the Ruby Console. Copy and paste into the bottom panel and press enter. Click Cancel to terminate the code.
Each set of input would result in a Construction Point placed at the resulting point.
OK. Again purely out of interest, if you had (say) a spreadsheet with lots of these data sets, would it theoretically be possible to extend that code to read all the data and produce all the points in one go? If so, creating a suitable extension would be pretty easy I guess.
Fairly simple if the data was in a .csv file.
Most spreadsheet data can be exported in CSV format I think. So there’s an idea for the OP. Use your code, extend it to be able to handle a bunch of data points and either put it to use or create an extension so that others can too. Leica ought to be all over this!
FWIW, Total stations are Trimble scanners, and can produce pointclouds that can be imported by native Trimble Scan explorer extension, don’t know which lenses they use
https://extensions.sketchup.com/nl/content/trimble-scan-explorer-extension
However, even more usefull was the presentation of Stangle Associates at the 3D Basecamp, were they imported the scan information via Undet extension.
No video’s from basecamp, yet
You can also do the horizontal first and while still having the rotate tool active, click for the centerpoint and then drag (hold left mouse button) over the drawn edge, go around and the ‘perpendicular’ inference will pop up:
There is also a Dynamic Component solution
C_point.skp (129.6 KB)
First time using Ruby Console–took me a few minutes to figure out where to paste the code (bottom), and how to navigate (right & left arrows). I plugged in some decimal angles (e.g., 51.3) and got an error "Invalid value for Integer(): “51.3”. Can the code be tweaked to accept decimal values? And how do I save the code for future use?
I briefly searched for free extensions for Total Station data, but didn’t find one that works with the horiz. angle, dist, vert. angle configuration–just x,y,z values.
This would be great! However, I’m not much of a coder, and don’t have time to devote to it. If someone wants to take this project on, more power to them!
Sorry about that. Sloppy testing on my part. The problem has been fixed if you would like to get a copy of the code again.
I use the original Ruby Web Console to develop and use code “snippets” like this. There are one or two others out there that are probably better but I’m comfortable with what I have.