Jump to content

need lisp to calculate lengths of layers


jimpcfd

Recommended Posts

hi,

 

has anyone got a lisp routine to calculate the length of all layers(lines,arcs, circles etc) and then display the result on the command line. ie layer 1 = (what ever) layer 2 = (what ever) layer 3 = (what ever) etc etc.

 

Cheers

jimpcfd

:)

Link to comment
Share on other sites

Just for fun, here's a quickie...

 

(defun c:LayerLengths (/ data name ss lst)
 ;; Alan J. Thompson, 09.09.10
 (vl-load-com)
 (while (setq data (tblnext "LAYER" (null data)))
   (or (wcmatch (setq name (cdr (assoc 2 data))) "*|*")
       (if (setq ss (ssget "_X" (list '(0 . "ARC,CIRCLE,LINE,*POLYLINE,SPLINE") (cons 8 name))))
         ((lambda (i tot / e)
            (while (setq e (ssname ss (setq i (1+ i))))
              (setq tot (+ tot (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))))
            )
            (setq lst (cons (cons name tot) lst))
          )
           -1
           0.
         )
         (setq lst (cons (cons name 0.) lst))
       )
   )
 )
 (mapcar (function print) (vl-sort lst (function (lambda (a b) (< (car a) (car b))))))
 (princ)
)

Link to comment
Share on other sites

thanks alanjt that's just what i needed.

 

There is a LISP Lee Mac wrote however it displays the results in a table as opposed to on the command line

 

Hi migs i had a look at lee's routine, it does a great job but alanjt routine is perfect for me.

 

thanks

jimpcfd

Link to comment
Share on other sites

my five cents

;Command MLEN4
(defun c:mlen4 (/ m ss clist temp)
 (defun sort (lst predicate)
   (mapcar '(lambda (x) (nth x lst)) (vl-sort-i lst predicate))
 )
 (defun combine (inlist is-greater is-equal / sorted current result)
   (setq sorted (sort inlist is-greater))
   (setq current (list (car sorted)))
   (foreach item (cdr sorted)
     (if (apply is-equal (list item (car current)))
 (setq current (cons item current))
 (progn
   (setq result (cons current result))
   (setq current (list item))
 )
     )
   )
   (cons current result)
 )
 (defun mlen3_1 (lst / sum_len)
   (setq sum_len 0)
   (foreach item (mapcar 'car lst)
     (setq
 sum_len  (+ sum_len
      (if (vlax-property-available-p item 'length)
        (vla-get-length item)
        (cond
          ((=
       (strcase (vla-get-objectname item) t)
       "acdbarc"
     ) ;_  =
     (vla-get-arclength item)
          )
          ((=
       (strcase (vla-get-objectname item) t)
       "acbcircle"
     ) ;_  =
     (* pi 2.0 (vla-get-radius item))
          )
          (t 0.0)
        ) ;_  cond
      ) ;_  if
   ) ;_  +
     )
   )
   (if  (not (zerop sum_len))
     (princ
 (strcat "\n\t" (cdar lst) " = " (rtos (* sum_len m) 2 4))
     )
   )
 )
 (vl-load-com)
 (and
   (setq m (getreal "\nEnter a scale factor:\t"))
   (setq ss (ssget "_:L"))
   (setq ss (mapcar
        (function vlax-ename->vla-object)
        (vl-remove-if
    (function listp)
    (mapcar
      (function cadr)
      (ssnamex ss)
    ) ;_  mapcar
        ) ;_ vl-remove-if
      )
   )
   (mapcar '(lambda (x)
        (setq temp (cons (cons x (vla-get-Layer x)) temp))
      )
     ss
   )
   (setq clist  (combine temp
      '(lambda (a b)
         (> (cdr a) (cdr b))
       )
      '(lambda (a b)
         (eq (cdr a) (cdr b))
       )
   )
   )
   (princ
     "\n\n  The total length of all primitives of layers:"
   )
   (mapcar 'mlen3_1 clist)
 )
 (princ)
) ;_  defun

Link to comment
Share on other sites

and with export to exel

;_Command MLEN41
(defun c:mlen41 (/ m ss clist temp)
 (defun sort (lst predicate)
   (mapcar '(lambda (x) (nth x lst)) (vl-sort-i lst predicate))
 )
 (defun combine (inlist is-greater is-equal / sorted current result)
   (setq sorted (sort inlist is-greater))
   (setq current (list (car sorted)))
   (foreach item (cdr sorted)
     (if (apply is-equal (list item (car current)))
 (setq current (cons item current))
 (progn
   (setq result (cons current result))
   (setq current (list item))
 )
     )
   )
   (cons current result)
 )
 (defun mlen4_1 (lst / sum_len)
   (setq sum_len 0)
   (foreach item (mapcar 'car lst)
     (setq
 sum_len  (+ sum_len
      (if (vlax-property-available-p item 'length)
        (vla-get-length item)
        (cond
          ((=
       (strcase (vla-get-objectname item) t)
       "acdbarc"
     ) ;_  =
     (vla-get-arclength item)
          )
          ((=
       (strcase (vla-get-objectname item) t)
       "acbcircle"
     ) ;_  =
     (* pi 2.0 (vla-get-radius item))
          )
          (t 0.0)
        ) ;_  cond
      ) ;_  if
   ) ;_  +
     )
   )
   (if  (not (zerop sum_len))
     (princ
 (strcat "\n\t" (cdar lst) " = " (rtos (* sum_len m) 2 4))
     )
   )
   (list (cdar lst)(rtos (* sum_len m) 2 4))
 )
 (vl-load-com)
 (if (null *M*)(setq *M* 1))
 (initget 6)
 (and
   (princ "\nEnter a scale factor: <")
   (princ *M*)(princ ">: ")
   (or (setq m (getreal))
  (setq m *M*)
  )
   (setq *M* m)
   (setq ss (ssget "_:L"))
   (setq ss (mapcar
        (function vlax-ename->vla-object)
        (vl-remove-if
    (function listp)
    (mapcar
      (function cadr)
      (ssnamex ss)
    ) ;_  mapcar
        ) ;_ vl-remove-if
      )
   )
   (mapcar '(lambda (x)
        (setq temp (cons (cons x (vla-get-Layer x)) temp))
      )
     ss
   )
   (setq clist  (combine temp
      '(lambda (a b)
         (> (cdr a) (cdr b))
       )
      '(lambda (a b)
         (eq (cdr a) (cdr b))
       )
   )
   )
   (princ
     "\n\n  The total length of all primitives of layers:"
   )
   (setq temp (mapcar 'mlen4_1 clist))
   (xls temp '("Layer" "Length") nil "mlen41")
 )
 (princ)
) ;_  defun
;|= EN ================= XLS ========================================
* posted by Vladimir Azarko (VVA)
* Purpose: Export of the list of data Data-list in Excell
*             It is exported to a new leaf of the current book.
             If the book is not present, it is created
* Arguments:
             Data-list - The list of lists of data (LIST) 
                           ((Value1 Value2 ... VlalueN)(Value1 Value2 ... VlalueN)...)
                           Each list of a kind (Value1 Value2... VlalueN) enters the name in
                           a separate line in corresponding columns (Value1-A Value2-B and .т.д.)
                 header -  The list (LIST) headings or nil a kind (" Signature A " " Signature B "...)
                           If header nil, is accepted ("X" "Y" "Z")
                Colhide -  The list of alphabetic names of columns to hide or nil - to not hide ("A" "C" "D") - to hide columns A, C, D
                Name_list - The name of a new leaf of the active book or nil - is not present
* Return: nil
* Usage
(xls '((1.1 1.2 1.3 1.4)(2.1 2.2 2.3 2.4)(3.1 3.2 3.3 3.4)) '("Col1" "Col2" "Col3"  "Col4") '("B") "test")   |;
(vl-load-com)
(defun xls ( Data-list header Colhide Name_list / *aplexcel* *books-colection* Currsep
*excell-cells* *new-book* *sheet#1* *sheet-collection* col iz_listo row cell cols)
(defun Letter (N / Res TMP)(setq Res "")(while (> N 0)(setq TMP (rem N 26)
 TMP (if (zerop TMP)(setq N (1- N) TMP 26) TMP)
 Res (strcat (chr (+ 64 TMP)) Res)  N   (/ N 26))) Res)
(if (null Name_list)(setq Name_list ""))
 (setq  *AplExcel*     (vlax-get-or-create-object "Excel.Application"))
 (if (setq *New-Book*  (vlax-get-property *AplExcel* "ActiveWorkbook"))
   (setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
         *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
              *Sheet#1*     (vlax-invoke-method *Sheet-Collection* "Add"))
(setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
             *New-Book*     (vlax-invoke-method *Books-Colection* "Add")
         *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
              *Sheet#1*     (vlax-get-property *Sheet-Collection* "Item" 1)))
(setq *excell-cells*     (vlax-get-property *Sheet#1* "Cells"))
(setq Name_list (if (= Name_list "")
                 (vl-filename-base(getvar "DWGNAME"))
                 (strcat (vl-filename-base(getvar "DWGNAME")) "&" Name_list))
  col 0 cols nil)
(if (> (strlen Name_list) 26)
(setq Name_list (strcat (substr Name_list 1 10) "..." (substr Name_list (- (strlen Name_list) 13) 14))))
(vlax-for sh *Sheet-Collection* (setq cols (cons (strcase(vlax-get-property sh 'Name)) cols)))
(setq row Name_list)
(while (member (strcase row) cols)(setq row (strcat Name_list " (" (itoa(setq col (1+ col)))")")))
(setq Name_list row)
(vlax-put-property *Sheet#1* 'Name Name_list)
(setq Currsep (vlax-get-property *AplExcel* "UseSystemSeparators"))
(vlax-put-property *AplExcel* "UseSystemSeparators" :vlax-false) ;_не использовать системные установки
(vlax-put-property *AplExcel* "DecimalSeparator" ".")            ;_разделитель дробной и целой части
(vlax-put-property *AplExcel* "ThousandsSeparator" " ")          ;_разделитель тысячей
(vla-put-visible *AplExcel* :vlax-true)(setq row 1 col 1)
(if (null header)(setq header '("X" "Y" "Z")))
(repeat (length header)(vlax-put-property *excell-cells* "Item" row col
(vl-princ-to-string (nth (1- col) header)))(setq col (1+ col)))(setq  row 2 col 1)
(repeat (length Data-list)(setq iz_listo (car Data-list))(repeat (length iz_listo)
(vlax-put-property *excell-cells* "Item" row col (vl-princ-to-string (car iz_listo)))
(setq iz_listo (cdr iz_listo) col (1+ col)))(setq Data-list (cdr Data-list))(setq col 1 row (1+ row)))
(setq col (1+(length header)) row (1+ row))
(setq cell (vlax-variant-value (vlax-invoke-method *Sheet#1* "Evaluate"
   (strcat "A1:" (letter col)(itoa row))))) ;_ end of setq
(setq cols (vlax-get-property cell  'Columns))
(vlax-invoke-method cols 'Autofit)
(vlax-release-object cols)(vlax-release-object cell)
(foreach item ColHide (if (numberp item)(setq item (letter item)))
(setq cell (vlax-variant-value (vlax-invoke-method *Sheet#1* "Evaluate"
   (strcat item "1:" item "1"))))
(setq cols (vlax-get-property cell  'Columns))
(vlax-put-property cols 'hidden 1)
(vlax-release-object cols)(vlax-release-object cell))
(vlax-put-property *AplExcel* "UseSystemSeparators" Currsep)
(mapcar 'vlax-release-object (list *excell-cells* *Sheet#1* *Sheet-Collection* *New-Book* *Books-Colection*
*AplExcel*))(setq *AplExcel* nil)(gc)(gc)(princ))

Link to comment
Share on other sites

hi VVA

 

i don't use Excel, but i like your first one, it would be nice if i could select just the layers that i need to display the lengths of, is that possible?

 

thanks

jimpcfd

Link to comment
Share on other sites

hi VVA

 

i don't use Excel, but i like your first one, it would be nice if i could select just the layers that i need to display the lengths of, is that possible?

 

thanks

jimpcfd

why not. Try new version mlen4

;;Command MLEN4
(defun c:mlen4 (/ m ss clist temp lay)
 (defun mydcl (zagl info-list / fl ret dcl_id msg)
 (vl-load-com)
 (if (null zagl)
   (setq zagl "Select")
   ) ;_ end if
 (setq fl (vl-filename-mktemp "mip" nil ".dcl"))
 (setq ret (open fl "w"))
 (mapcar '(lambda (x) (write-line x ret))
         (list "mip_msg : dialog { "
               (strcat "label=\"" zagl "\";")
               " :list_box {"
               "alignment=top ;"
               "multiple_select = true ;"
               "width=31 ;"
               (if (> (length info-list) 26)
                 "height= 26 ;"
                 (strcat "height= " (itoa (+ 3 (length info-list))) ";")
                 ) ;_ end of if
               "is_tab_stop = false ;"
               "key = \"info\";}"
               "ok_cancel;}"
               ) ;_ end of list
         ) ;_ end of mapcar
 (setq ret (close ret))
 (if (and (null (minusp (setq dcl_id (load_dialog fl))))
          (new_dialog "mip_msg" dcl_id)
          ) ;_ end and
   (progn (start_list "info")
          (mapcar 'add_list info-list)
          (end_list)
          (set_tile "info" "0")
          (setq ret "0")
          (action_tile "info" "(setq ret $value)")
          (action_tile "cancel" "(done_dialog 0)")
          (action_tile "accept" " (done_dialog 1)")
          (if (zerop (start_dialog))
            (setq ret nil)
            (setq ret (mapcar (FUNCTION (lambda (num) (nth num info-list)))
                              (read (strcat "(" ret ")"))
                              ) ;_ end mapcar
                  ) ;_ end setq
            ) ;_ end if
          (unload_dialog dcl_id)
          ) ;_ end of progn
   ) ;_ end of if
 (vl-file-delete fl)
 ret
 )

   (defun tablelist (s / d r)
     (while (setq d (tblnext s (null d)))
       (setq r (cons (cdr (assoc 2 d)) r))
     )                                           ;while
   )                                             ;defun
 (defun sort (lst predicate)
   (mapcar '(lambda (x) (nth x lst)) (vl-sort-i lst predicate))
 )
 (defun combine (inlist is-greater is-equal / sorted current result)
   (setq sorted (sort inlist is-greater))
   (setq current (list (car sorted)))
   (foreach item (cdr sorted)
     (if (apply is-equal (list item (car current)))
 (setq current (cons item current))
 (progn
   (setq result (cons current result))
   (setq current (list item))
 )
     )
   )
   (cons current result)
 )
 (defun mlen3_1 (lst / sum_len)
   (setq sum_len 0)
   (foreach item (mapcar 'car lst)
     (setq
 sum_len  (+ sum_len
      (if (vlax-property-available-p item 'length)
        (vla-get-length item)
        (cond
          ((=
       (strcase (vla-get-objectname item) t)
       "acdbarc"
     ) ;_  =
     (vla-get-arclength item)
          )
          ((=
       (strcase (vla-get-objectname item) t)
       "acbcircle"
     ) ;_  =
     (* pi 2.0 (vla-get-radius item))
          )
          (t 0.0)
        ) ;_  cond
      ) ;_  if
   ) ;_  +
     )
   )
   (if  (not (zerop sum_len))
     (princ
 (strcat "\n\t" (cdar lst) " = " (rtos (* sum_len m) 2 4))
     )
   )
 )
 (vl-load-com)
 (and
   (setq m (getreal "\nEnter a scale factor:\t"))
   (setq lay (mydcl "Select Layers" (vl-remove-if-not  'snvalid (ACAD_STRLSORT (tablelist "Layer")))))
   (setq lay (apply 'strcat(mapcar (function(lambda(x)(strcat x ","))) lay)))
   (setq ss (ssget "_X" (list (cons 8 lay)(cons 410 (getvar "CTAB")))))
   (setq ss (mapcar
        (function vlax-ename->vla-object)
        (vl-remove-if
    (function listp)
    (mapcar
      (function cadr)
      (ssnamex ss)
    ) ;_  mapcar
        ) ;_ vl-remove-if
      )
   )
   (mapcar '(lambda (x)
        (setq temp (cons (cons x (vla-get-Layer x)) temp))
      )
     ss
   )
   (setq clist  (combine temp
      '(lambda (a b)
         (> (cdr a) (cdr b))
       )
      '(lambda (a b)
         (eq (cdr a) (cdr b))
       )
   )
   )
   (princ
     "\n\n  The total length of all primitives of layers:"
   )
   (mapcar 'mlen3_1 clist)
 )
 (princ)
) ;_  defun

PS.Use Ctrl or Shift key for select layer's in dialog

Link to comment
Share on other sites

  • 3 years later...
and with export to exel

;_Command MLEN41
(defun c:mlen41 (/ m ss clist temp)
 (defun sort (lst predicate)
   (mapcar '(lambda (x) (nth x lst)) (vl-sort-i lst predicate))
 )
 (defun combine (inlist is-greater is-equal / sorted current result)
   (setq sorted (sort inlist is-greater))
   (setq current (list (car sorted)))
   (foreach item (cdr sorted)
     (if (apply is-equal (list item (car current)))
 (setq current (cons item current))
 (progn
   (setq result (cons current result))
   (setq current (list item))
 )
     )
   )
   (cons current result)
 )
 (defun mlen4_1 (lst / sum_len)
   (setq sum_len 0)
   (foreach item (mapcar 'car lst)
     (setq
 sum_len  (+ sum_len
      (if (vlax-property-available-p item 'length)
        (vla-get-length item)
        (cond
          ((=
       (strcase (vla-get-objectname item) t)
       "acdbarc"
     ) ;_  =
     (vla-get-arclength item)
          )
          ((=
       (strcase (vla-get-objectname item) t)
       "acbcircle"
     ) ;_  =
     (* pi 2.0 (vla-get-radius item))
          )
          (t 0.0)
        ) ;_  cond
      ) ;_  if
   ) ;_  +
     )
   )
   (if  (not (zerop sum_len))
     (princ
 (strcat "\n\t" (cdar lst) " = " (rtos (* sum_len m) 2 4))
     )
   )
   (list (cdar lst)(rtos (* sum_len m) 2 4))
 )
 (vl-load-com)
 (if (null *M*)(setq *M* 1))
 (initget 6)
 (and
   (princ "\nEnter a scale factor: <")
   (princ *M*)(princ ">: ")
   (or (setq m (getreal))
  (setq m *M*)
  )
   (setq *M* m)
   (setq ss (ssget "_:L"))
   (setq ss (mapcar
        (function vlax-ename->vla-object)
        (vl-remove-if
    (function listp)
    (mapcar
      (function cadr)
      (ssnamex ss)
    ) ;_  mapcar
        ) ;_ vl-remove-if
      )
   )
   (mapcar '(lambda (x)
        (setq temp (cons (cons x (vla-get-Layer x)) temp))
      )
     ss
   )
   (setq clist  (combine temp
      '(lambda (a b)
         (> (cdr a) (cdr b))
       )
      '(lambda (a b)
         (eq (cdr a) (cdr b))
       )
   )
   )
   (princ
     "\n\n  The total length of all primitives of layers:"
   )
   (setq temp (mapcar 'mlen4_1 clist))
   (xls temp '("Layer" "Length") nil "mlen41")
 )
 (princ)
) ;_  defun
;|= EN ================= XLS ========================================
* posted by Vladimir Azarko (VVA)
* Purpose: Export of the list of data Data-list in Excell
*             It is exported to a new leaf of the current book.
             If the book is not present, it is created
* Arguments:
             Data-list - The list of lists of data (LIST) 
                           ((Value1 Value2 ... VlalueN)(Value1 Value2 ... VlalueN)...)
                           Each list of a kind (Value1 Value2... VlalueN) enters the name in
                           a separate line in corresponding columns (Value1-A Value2-B and .т.д.)
                 header -  The list (LIST) headings or nil a kind (" Signature A " " Signature B "...)
                           If header nil, is accepted ("X" "Y" "Z")
                Colhide -  The list of alphabetic names of columns to hide or nil - to not hide ("A" "C" "D") - to hide columns A, C, D
                Name_list - The name of a new leaf of the active book or nil - is not present
* Return: nil
* Usage
(xls '((1.1 1.2 1.3 1.4)(2.1 2.2 2.3 2.4)(3.1 3.2 3.3 3.4)) '("Col1" "Col2" "Col3"  "Col4") '("B") "test")   |;
(vl-load-com)
(defun xls ( Data-list header Colhide Name_list / *aplexcel* *books-colection* Currsep
*excell-cells* *new-book* *sheet#1* *sheet-collection* col iz_listo row cell cols)
(defun Letter (N / Res TMP)(setq Res "")(while (> N 0)(setq TMP (rem N 26)
 TMP (if (zerop TMP)(setq N (1- N) TMP 26) TMP)
 Res (strcat (chr (+ 64 TMP)) Res)  N   (/ N 26))) Res)
(if (null Name_list)(setq Name_list ""))
 (setq  *AplExcel*     (vlax-get-or-create-object "Excel.Application"))
 (if (setq *New-Book*  (vlax-get-property *AplExcel* "ActiveWorkbook"))
   (setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
         *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
              *Sheet#1*     (vlax-invoke-method *Sheet-Collection* "Add"))
(setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
             *New-Book*     (vlax-invoke-method *Books-Colection* "Add")
         *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
              *Sheet#1*     (vlax-get-property *Sheet-Collection* "Item" 1)))
(setq *excell-cells*     (vlax-get-property *Sheet#1* "Cells"))
(setq Name_list (if (= Name_list "")
                 (vl-filename-base(getvar "DWGNAME"))
                 (strcat (vl-filename-base(getvar "DWGNAME")) "&" Name_list))
  col 0 cols nil)
(if (> (strlen Name_list) 26)
(setq Name_list (strcat (substr Name_list 1 10) "..." (substr Name_list (- (strlen Name_list) 13) 14))))
(vlax-for sh *Sheet-Collection* (setq cols (cons (strcase(vlax-get-property sh 'Name)) cols)))
(setq row Name_list)
(while (member (strcase row) cols)(setq row (strcat Name_list " (" (itoa(setq col (1+ col)))")")))
(setq Name_list row)
(vlax-put-property *Sheet#1* 'Name Name_list)
(setq Currsep (vlax-get-property *AplExcel* "UseSystemSeparators"))
(vlax-put-property *AplExcel* "UseSystemSeparators" :vlax-false) ;_не использовать системные установки
(vlax-put-property *AplExcel* "DecimalSeparator" ".")            ;_разделитель дробной и целой части
(vlax-put-property *AplExcel* "ThousandsSeparator" " ")          ;_разделитель тысячей
(vla-put-visible *AplExcel* :vlax-true)(setq row 1 col 1)
(if (null header)(setq header '("X" "Y" "Z")))
(repeat (length header)(vlax-put-property *excell-cells* "Item" row col
(vl-princ-to-string (nth (1- col) header)))(setq col (1+ col)))(setq  row 2 col 1)
(repeat (length Data-list)(setq iz_listo (car Data-list))(repeat (length iz_listo)
(vlax-put-property *excell-cells* "Item" row col (vl-princ-to-string (car iz_listo)))
(setq iz_listo (cdr iz_listo) col (1+ col)))(setq Data-list (cdr Data-list))(setq col 1 row (1+ row)))
(setq col (1+(length header)) row (1+ row))
(setq cell (vlax-variant-value (vlax-invoke-method *Sheet#1* "Evaluate"
   (strcat "A1:" (letter col)(itoa row))))) ;_ end of setq
(setq cols (vlax-get-property cell  'Columns))
(vlax-invoke-method cols 'Autofit)
(vlax-release-object cols)(vlax-release-object cell)
(foreach item ColHide (if (numberp item)(setq item (letter item)))
(setq cell (vlax-variant-value (vlax-invoke-method *Sheet#1* "Evaluate"
   (strcat item "1:" item "1"))))
(setq cols (vlax-get-property cell  'Columns))
(vlax-put-property cols 'hidden 1)
(vlax-release-object cols)(vlax-release-object cell))
(vlax-put-property *AplExcel* "UseSystemSeparators" Currsep)
(mapcar 'vlax-release-object (list *excell-cells* *Sheet#1* *Sheet-Collection* *New-Book* *Books-Colection*
*AplExcel*))(setq *AplExcel* nil)(gc)(gc)(princ))

 

This Lisp Is Awesome. thank you so much!:):D

Link to comment
Share on other sites

  • 6 years later...

This is an impressive LSP file. Thank you heaps for figuring this out for us all. Do you know if it would be possible to add hatch areas to this LSP file?

 

Cheers Tim

Link to comment
Share on other sites

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...