Jump to content

Recommended Posts

Posted

Hi guys,

 

I have been loving the content on here, I think that my question is probably for the more advanced LISP folks out there (I am still fairly new and have been struggling to get it to work).

 

I have been trying to put a LISP together that will go through a drawing and create a table of quantities, I have attached an example drawing that I have been using to try make it work, along with an example of the kind of table That would be the output.

 

Basically the goal would be to drop the LISP in, select the line/layers/blocks you wanted quantities of and for a table to be produced with the total lengths.

 

I hope someone out there as the time to help, or atleast point me in the right direction,

 

Thanks a lot!

Rotech

 

Example_Quantity LISP.dwg

Posted (edited)

Welcome !

 

Probably not what you were expecting, but something that could be adapted for a lot of uses.

 

Needs tweaking and some addition error trapping.

 

This should work in all releases of AutoCAd and probably Briscad

 


[color=#8b4513];;;1.1[/color]
[b][color=BLACK]([/color][/b]defun c:cnt-q [b][color=FUCHSIA]([/color][/b]/ ss i en ed et bn la ll bl bf lf un bc bn tn bs
                 mxb mxl rx lx sp s z xp yp ls lt[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"DIMZIN"[/color] 0[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not ss[b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect Entities To Count:   "[/color][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"*LINE,INSERT,ARC,"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]setq i 0[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]ssname ss i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b]
              et [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
              bn [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 2 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
              la [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 8 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]member la ll[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq ll [b][color=GREEN]([/color][/b]cons la ll[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]and bn
             [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]member bn bl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
             [b][color=MAROON]([/color][/b]setq bl [b][color=GREEN]([/color][/b]cons bn bl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]and bl [b][color=NAVY]([/color][/b]setq bl [b][color=MAROON]([/color][/b]acad_strlsort bl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]foreach b bl
  [b][color=NAVY]([/color][/b]setq bs [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 2 b[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname bs i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]cond [b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]ssmemb en ss[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
               [b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]assoc b bf[b][color=BLUE])[/color][/b]
                [b][color=BLUE]([/color][/b]setq bf [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons b [b][color=TEAL]([/color][/b]1+ [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc b bf[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
                                [b][color=PURPLE]([/color][/b]assoc b bf[b][color=PURPLE])[/color][/b] bf[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
               [b][color=GREEN]([/color][/b]T
                [b][color=BLUE]([/color][/b]setq bf [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]cons b 1[b][color=PURPLE])[/color][/b] bf[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]and ll [b][color=NAVY]([/color][/b]setq ll [b][color=MAROON]([/color][/b]acad_strlsort ll[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]foreach l ll
  [b][color=NAVY]([/color][/b]setq lt 0[b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]setq ls [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"*LINE,ARC"[/color][b][color=RED])[/color][/b]
                                 [b][color=RED]([/color][/b]cons 8 l[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
       [b][color=MAROON]([/color][/b]setq i 0[b][color=MAROON])[/color][/b]
       [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ls i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
              [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]ssmemb en ss[b][color=BLUE])[/color][/b]
                  [b][color=BLUE]([/color][/b]progn
                    [b][color=RED]([/color][/b]command [color=#2f4f4f]"_.AREA"[/color] [color=#2f4f4f]"_E"[/color] en[b][color=RED])[/color][/b]
                    [b][color=RED]([/color][/b]setq lt [b][color=PURPLE]([/color][/b]+ lt [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"PERIMETER"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
              [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1+ i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]setq lf [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]cons l [b][color=BLUE]([/color][/b]rtos lt 2 0[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] lf[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]


[b][color=FUCHSIA]([/color][/b]setq un [b][color=NAVY]([/color][/b]rtos [b][color=MAROON]([/color][/b]* [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"TDCREATE"[/color][b][color=GREEN])[/color][/b] 1e+6[b][color=MAROON])[/color][/b] 2 0[b][color=NAVY])[/color][/b]
      bc 1
      bn [b][color=NAVY]([/color][/b]strcat un [color=#2f4f4f]"-T"[/color] [b][color=MAROON]([/color][/b]itoa bc[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=NAVY])[/color][/b]
       [b][color=NAVY]([/color][/b]setq bc [b][color=MAROON]([/color][/b]1+ bc[b][color=MAROON])[/color][/b]
             bn [b][color=MAROON]([/color][/b]strcat un [color=#2f4f4f]"-T"[/color] [b][color=GREEN]([/color][/b]itoa bc[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if bn
   [b][color=NAVY]([/color][/b]setq mxb [b][color=MAROON]([/color][/b]apply 'max [b][color=GREEN]([/color][/b]mapcar 'strlen bl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
   [b][color=NAVY]([/color][/b]setq mxb 0[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if ll
    [b][color=NAVY]([/color][/b]setq mxl [b][color=MAROON]([/color][/b]apply 'max [b][color=GREEN]([/color][/b]mapcar 'strlen ll[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]setq mxl 0[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setq lx [b][color=NAVY]([/color][/b]- [b][color=MAROON]([/color][/b]+ [b][color=GREEN]([/color][/b]max mxl mxb[b][color=GREEN])[/color][/b] 6[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq rx [b][color=NAVY]([/color][/b]+ 16[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"STYLE"[/color] [color=#2f4f4f]"MROMANS"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
         [b][color=MAROON]([/color][/b]findfile [color=#2f4f4f]"MROMANS.SHX"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]progn
      [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.STYLE"[/color] [color=#2f4f4f]"MROMANS"[/color] [color=#2f4f4f]"MROMANS"[/color][b][color=MAROON])[/color][/b]
      [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]> [b][color=BLUE]([/color][/b]getvar [color=#2f4f4f]"CMDACTIVE"[/color][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b]
             [b][color=GREEN]([/color][/b]command [color=#2f4f4f]""[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"BLOCK"[/color][b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]cons 2 bn[b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]list 10 0 0 0[b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]cons 70 2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 7[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 0 0 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 0 2 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 7[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 lx 0 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 rx 0 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 7[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 lx 2 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 rx 2 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 7[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 lx 0 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 lx 2 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 7[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 rx 0 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 rx 2 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"ATTDEF"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 1 [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 2 [color=#2f4f4f]"DVAL"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 3 [color=#2f4f4f]"VALUE DESCRIPTION"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 7 [color=#2f4f4f]"MROMANS"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 -3 1 1[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 -3 1 1[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 40 1.0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 2[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 70 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 72 2[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 74 2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"ATTDEF"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 1 [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 2 [color=#2f4f4f]"TVAL"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 3 [color=#2f4f4f]"TOTAL VALUE"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 7 [color=#2f4f4f]"MROMANS"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 10 3 1 1[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]list 11 3 1 1[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 40 1.0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 62 2[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 70 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 72 0[b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]cons 74 2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setq tn [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"ENDBLK"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]


[b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq sp [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nTable Starting Point:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]initget 6[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq s [b][color=NAVY]([/color][/b]getdist [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nText size <"[/color] [b][color=GREEN]([/color][/b]rtos [b][color=BLUE]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=BLUE])[/color][/b] 2 2[b][color=GREEN])[/color][/b] [color=#2f4f4f]">:   "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]or s [b][color=NAVY]([/color][/b]setq s [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setq s [b][color=NAVY]([/color][/b]* s 0.5[b][color=NAVY])[/color][/b]
      z [b][color=NAVY]([/color][/b]* s 2[b][color=NAVY])[/color][/b]
      xp [b][color=NAVY]([/color][/b]car sp[b][color=NAVY])[/color][/b]
      yp [b][color=NAVY]([/color][/b]cadr sp[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"ATTREQ"[/color] 1[b][color=FUCHSIA])[/color][/b]
[color=#8b4513];;;BLOCKS[/color]

[b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] tn [b][color=NAVY]([/color][/b]list xp yp 0[b][color=NAVY])[/color][/b] z z 0 [color=#2f4f4f]"BLOCKS"[/color] [color=#2f4f4f]"QTY"[/color][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq yp [b][color=NAVY]([/color][/b]- yp z z[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]foreach v [b][color=NAVY]([/color][/b]reverse bf[b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] tn [b][color=MAROON]([/color][/b]list xp yp 0[b][color=MAROON])[/color][/b] z z 0 [b][color=MAROON]([/color][/b]car v[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cdr v[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]setq yp [b][color=MAROON]([/color][/b]- yp z z[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] tn [b][color=NAVY]([/color][/b]list xp yp 0[b][color=NAVY])[/color][/b] z z 0 [color=#2f4f4f]""[/color] [color=#2f4f4f]""[/color][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq yp [b][color=NAVY]([/color][/b]- yp z z[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[color=#8b4513];;;LAYERS[/color]
[b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] tn [b][color=NAVY]([/color][/b]list xp yp 0[b][color=NAVY])[/color][/b] z z 0 [color=#2f4f4f]"LAYERS"[/color] [color=#2f4f4f]"LENGTH"[/color][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq yp [b][color=NAVY]([/color][/b]- yp z z[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]foreach v [b][color=NAVY]([/color][/b]reverse lf[b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] tn [b][color=MAROON]([/color][/b]list xp yp 0[b][color=MAROON])[/color][/b] z z 0 [b][color=MAROON]([/color][/b]car v[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cdr v[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  [b][color=NAVY]([/color][/b]setq yp [b][color=MAROON]([/color][/b]- yp z z[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] tn [b][color=NAVY]([/color][/b]list xp yp 0[b][color=NAVY])[/color][/b] z z 0 [color=#2f4f4f]""[/color] [color=#2f4f4f]""[/color][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq yp [b][color=NAVY]([/color][/b]- yp z z[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

-David

Edited by David Bethel
Updated & Error Trapping
Posted

This may be useful also a table create example, rather than lines etc. If you go back a few posts I did a add rows to an existing table so you could do a pick layer add a row and keep picking layers, with ARCS Blocks Lines etc as columns.

 

There is 25 hours in a day isn't there ?

 

; start in model space
; example of creating a table
; By Alan H
(defun c:sct (/ colwidth numcolumns numrows objtable rowheight sp mspace )
(vl-load-com)
(setq sp (vlax-3d-point '(0 0 0)))
(setq doc  (vla-get-activedocument (vlax-get-acad-object) ))
(setq mspace (vla-get-modelspace doc))
(setq numrows 5)
(setq numcolumns 5)
(setq rowheight 0.5)
(setq colwidth 30)
(setq objtable (vla-addtable mspace sp numrows numcolumns rowheight colwidth))
; RetVal = object.AddTable(InsertionPoint, NumRows, NumColumns, RowHeight, ColWidth)
(vla-settext objtable 0 0 "TABLE title")
(vla-settext objtable 1 0 "ITEM") 
(vla-settext objtable 1 1 "Straights") 
(vla-settext objtable 1 2 "Arcs")
(vla-settext objtable 1 3 "Laterals")
(vla-settext objtable 1 4 "Connections")
(vla-settext objtable 2 0 "1")
(vla-settext objtable 3 0 "2")
(vla-settext objtable 4 0 "3")
(vla-setcolumnwidth objtable 0 15) ; 0 is first column
(vla-setcolumnwidth objtable 1 30)
(vla-setcolumnwidth objtable 2 60)
(command "_zoom" "e")
(princ)
)
(C:sct)

Posted

A bit more as a start note your water valve blocks are on layer 0 so does not help

 

; make a table here if required else pick existing
; defun add row totable here
(defun c:qty ( / lay totline bcount)

(while 
(Setq lay (cdr (assoc 8 (entget (car (entsel "Pick object for layer <Cr> to exit "))))))
(setq totline 0.0
bcount 0 
ss nil)
(princ "\nPick objects")
(setq ss (ssget (list (cons 0 "*LINE,INSERT,ARC,")(cons 8 lay))))
(repeat (setq x (sslength ss))
(setq obj  (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(setq objname (vla-get-ObjectName obj))
(cond 
((or (= objname "AcDbPolyline" )(= objname "AcDbLine" )) (setq totline (+ (vla-get-length obj) totline)))
((= objname "AcDbBlockReference") (setq bcount (+ 1 bcount))) ; need a split blocks here 
)
)
(alert (strcat "length" (rtos totline 2 0) " or \nCount = " (rtos bcount 2 0)))
;do the add rows to table here note can seperate the valves from lengths and put in seperate column
(if (> totline 0)(setq coll 1)) ; this is column number for lines
(if (> bcount 0)(setq colb 2)) ; this column number for blocks
)

)

(C:qty)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...