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.