# calculating perimeter

Since the last question I asked got taken care superbly I thought I would ask another question. Here where I work we have to calculate cutting inches
of a part. What that means is say you have a drawing that contains a rectangle with 50 holes and some slots. What we have to do is take the perimeter/area of each hole, slot, and outside and add them all togehter. It gets very cumbersome if you have a part with 100's of holes. Is there a way to have autocad take the perimeter of every object in a drawing and calculate the sum of the perimeters?
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
(Chris) wrote:

Try this lisp routine, with due acknowledgement to Tee Square Graphics.
Window over the objects you want included. Don't forget that a 'crossing' window will include anything that you cut with the window.
;|
TLEN.LSP - Total LENgth of selected objects (c) 1998 Tee Square Graphics
|;
(defun C:TLEN (/ ss tl n ent itm obj l) (setq ss (ssget) tl 0 n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond ((= obj "LINE") (distance (cdr (assoc 10 ent))(cdr (assoc 11 ent)))) ((= obj "ARC") (* (cdr (assoc 40 ent)) (if (minusp (setq l (- (cdr (assoc 51 ent)) (cdr (assoc 50 ent))))) (+ pi pi l) l))) ((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE") (= obj "LWPOLYLINE")(= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "perimeter")) (T 0)) tl (+ tl l) n (1- n))) (alert (strcat "Total length of selected objects is " (rtos tl))) (princ) )
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
This is the routine I use. It's a free LSP from Tee Square graphics that I modified so it will print the distance on the drawing It will not include blocks.
I use it for exactly what you do. Laser & Waterjet cutting
Jeannette www.eblw.com
;|
TLEN.LSP - Total LENgth of selected objects (c) 1998 Tee Square Graphics
|;
(defun C:TLEN (/ ss tl n ent itm obj l) (setq ss (ssget) tl 0 n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond ((= obj "LINE") (distance (cdr (assoc 10 ent))(cdr (assoc 11 ent)))) ((= obj "ARC") (* (cdr (assoc 40 ent)) (if (minusp (setq l (- (cdr (assoc 51 ent)) (cdr (assoc 50 ent))))) (+ pi pi l) l))) ((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE") (= obj "LWPOLYLINE")(= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "perimeter")) (T 0)) tl (+ tl l) n (1- n))) ;(alert (strcat "Total length of selected objects is " (rtos tl 2 2))) (setq tlen (rtos tl 2 2))
(cond ((boundp 'tlen) (setq cmd (getvar "cmdecho") mno (getvar "menuecho") ) (setvar "cmdecho" 0) (setvar "menuecho" 1) (graphscr) (setq wcl (strcat "Total Cut Length = " tlen)) (setq p1 (getpoint "\nPick the arrowhead position : ")) (if (= p1 nil)(setq p2 nil)(setq p2 (getpoint p1 "\nPick the text position : "))) (if (/= p2 nil)(command "leader" p1 p2 "" wcl "")) (setvar "cmdecho" cmd) (setvar "menuecho" mno) ) ) (princ) )
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
SNAP! (:-))
jeanne8_Remove snipped-for-privacy@eblw.com (jeannette) wrote:

<SNIP>
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

What I also found out yesterday that works good enough for us is if you hatch your part, doesn't matter the style or anything just choose hatch then select the entire part. once the object is hatched, take the area clicking on the hatched area and it will give you total area and total perimeter. I will use the lsp though, thanks alot
Chris
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

## Site Timeline

• ### Ethical Hacking Training | CEH Course in Delhi ? S SDN Technologies

• Share To

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.