Hi, so here's my problem, i have lots of points taken on the field that represent portions of lands where we had to fill with top soil. I need the area of those portions in square meters. My problem is that i can't use survey figure or parcels because it gives me a 2d surface area... and i need the 3d surface area.. there's not a lot of difference between one protion... but i have like over a hundred little patches.
Is there a way to get those area quick and easy without having to build one surface for each of them and going to the stats screen ?
Solved! Go to Solution.
Solved! by tcorey. See the answer in context.
Your english is fine. I understood exactly what you're looking for.
The following LISP code will do what you ask. For each polyline area you pick, one at a time, it will bring up a dialog with the 3d surface area within that polyline. You can copy them down or take screenshots or whatever. If you need the data attached to the polyline or a piece of text added, I could probably add that pretty easily when I get more time. Let me know what else you want this to do.
;copyright (c)2014 by Timothy Corey
;Delta Engineering Systems, Redding, CA
;Autodesk Authorized Value-Added Reseller
;permission is hereby granted for free use of this program as-is
;This program or any portion may not be sold or combined with any
;It is the responsibility of the user to debug the software
;to determine its usability and accuracy.
(defun c:go (/ cosn surf vsurf bdy vbdy what surf2 bdys answer ) (vl-load-com) (setq cosn (getvar "OSMODE")) ;get surface object (setq surf (car (entsel "\nSelect surface: ")) vsurf (vlax-ename->vla-object surf) ) (setq bdy (car (entsel "\nSelect sub-boundary polyline for 3d surface area calculation: "))) (setq vbdy (vlax-ename->vla-object bdy)) (while (and bdy) (if (or (= (cdr (assoc 0 (entget bdy))) "LWPOLYLINE")(= (cdr (assoc 0 (entget bdy))) "POLYLINE")) (get3darea) (setq what (getstring "\nBoundary object must be polyline, press any key to continue: ")) ) (setq bdy (car (entsel "\nSelect sub-boundary polyline for 3d surface area calculation: "))) (setq vbdy (vlax-ename->vla-object bdy)) ) (setvar "OSMODE" cosn) (princ) ) ;end defun go (defun get3darea() (setq Surf2 (vlax-invoke-method vsurf 'copy )) (setq bdys (vlax-get-property surf2 'boundaries)) (vlax-invoke-method bdys 'add vbdy "NewBdy" 4 T 1.0) (vlax-invoke-method surf2 'rebuild) (setq stats (vlax-get-property Surf2 'Statistics)) (setq Answer (strcat "3d surface area inside this polyline is: " (rtos (vlax-get-property stats 'area3d) 2 2))) (vlax-invoke-method Surf2 'delete) (alert answer) (princ) )
I have no Civil, but...
If you create a big C3D surface passing thru the points, then you explode it, you'd get a bunch of 3D faces.
And every single 3D face could be querable with the _Area command.
Anyone can check this technique out..?
How would i do that ? I've create a big surface using my points and without a lot of editing, i can't get the right boundaries for each portion of land.
If they are surfaces, both 2D and 3D areas are a part of the statistics from the surface properties.
Can't open as am running C3D 2012. Here is a clip of what I mean.
I do know about the 3d area of a surface, what i want to do is get the surface area of multiple portions of a survey without having to create a surface for each and one of them... In the pictures red circles are some of those area i need... i used to get them in simple 2d area with a survey figures or a pline around them, but we recently had some difference with one of our sub contractor on a project with big slopes.
Sorry for the english... not my first language
ohhh sorry ! i don't know if you will be able to understand how parts are seperate due to the fact that my surveyor didn't use codes to process lineworks. Anyway here it is !
Access a broad range of knowledge to help get the most out of your products and services.
Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.
Upgrading to a 2015 product? Make sure to check these out 1st!