calculating perimeter

Discussion in 'AutoCAD' started by Chris, Oct 13, 2005.

  1. Chris

    Chris Guest

    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?
     
    Chris, Oct 13, 2005
    #1
  2. Chris

    Brian Salt Guest

    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)
    )
     
    Brian Salt, Oct 14, 2005
    #2
  3. Chris

    jeannette Guest

    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)
    )
     
    jeannette, Oct 14, 2005
    #3
  4. Chris

    Brian Salt Guest

    SNAP! :)-))


    <SNIP>
     
    Brian Salt, Oct 14, 2005
    #4
  5. Chris

    Chris Guest

    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
     
    Chris, Oct 14, 2005
    #5
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.