TheSwamp

Code Red => AutoLISP (Vanilla / Visual) => Topic started by: HOSNEYALAA on December 02, 2018, 04:22:21 PM

Title: Please help the members to modify the lisp
Post by: HOSNEYALAA on December 02, 2018, 04:22:21 PM
Hello all
I have a code from the great friend Lee Mac

Selects several texts and gives the average AND

Draws a line between the texts and the average value
Is it possible, when setting the average value, to paint a line directly?

(defun c:avg ( / a b g i l p s u COT SUM SUMM  )
           (SETQ SUM 0)
           (SETQ COT 0)
   (if (setq s (ssget '((0 . "MTEXT,TEXT"))))
       (progn
           (repeat (setq i (sslength s))
               (setq p (assoc 10 (entget (ssname s (setq i (1- i))))))
               (setq u (cons (trans (cdr p) 0 1) u))
               (setq l (cons p l))
          (setq SUMM (ATOF (CDR (ASSOC 1 (entget (ssname s I))))));LEVEL
          (setq SUM (+ SUM SUmM))
          (setq COT (1+ COT))
           (eval SUM)
               )
        (SETQ MEEM (/ SUM COT))
        (SETQ DDD (RTOS MEEM 2 2))
        (SETQ PO (GETPOINT "\nPlease Select a Point."))
        (command "-mtext" PO "w" "0" (strcat "Avg=" DDD) "" )
   
;;;           (princ "\nSelect Point: ")
           (while
               (progn (setq g (grread t 13 2) a (car g) b (cadr g))
                   (cond
                       (   (= 5 a) (redraw)
                           (foreach x u (grdraw x b 1 1)) t
                       )
                       (   (= 3 a)
                           (if (setq s (ssget b '((0 . "MTEXT,TEXT"))))
                               (progn
                                   (setq p (cdr (assoc 10 (entget (ssname s 0)))))
                                   (foreach x l (entmakex (list (cons 0 "LINE") x (cons 11 p)))) nil
                               )
;;;                               (princ "\nPlease Select a Point.")
                           )
                       )
                   )
               )
           )
       )
   )
   (redraw) (princ)
)
Title: Re: Please help the members to modify the lisp
Post by: HasanCAD on December 04, 2018, 10:08:43 PM
Code - Auto/Visual Lisp: [Select]
  1. (defun c:avg ( / a b g i l p s u COT SUM SUMM  )    ; Lee Mac
  2.            (SETQ SUM 0)
  3.            (SETQ COT 0)
  4.    (if (and
  5.          (setq s (ssget '((0 . "MTEXT,TEXT"))))
  6.          (SETQ PO (GETPOINT "\nPlease Select a Point."))
  7.          )
  8.        (progn
  9.            (repeat (setq i (sslength s))
  10.                (setq p (assoc 10 (entget (ssname s (setq i (1- i))))))
  11.              (entmakex (list (cons 0 "LINE") P (cons 11 PO)))
  12.                (setq u (cons (trans (cdr p) 0 1) u))
  13.                (setq l (cons p l))
  14.           (setq SUMM (ATOF (CDR (ASSOC 1 (entget (ssname s I))))));LEVEL
  15.           (setq SUM (+ SUM SUmM))
  16.           (setq COT (1+ COT))
  17.            (eval SUM)
  18.                )
  19.         (SETQ MEEM (/ SUM COT))
  20.         (SETQ DDD (RTOS MEEM 2 2))        
  21.         (command "-mtext" PO "w" "0" (strcat "Avg=" DDD) "" )
  22.          )
  23.      )
  24.   )
Title: Re: Please help the members to modify the lisp
Post by: HasanCAD on December 05, 2018, 09:24:16 PM
Or this
Code - Auto/Visual Lisp: [Select]
  1. (defun c:avg ( / a b g i l p s u COT SUM SUMM  )  ; Lee Mac
  2.            (SETQ SUM 0)
  3.            (SETQ COT 0)
  4.    (if (setq s (ssget '((0 . "MTEXT,TEXT"))))
  5.        (progn
  6.            (repeat (setq i (sslength s))
  7.                (setq p (assoc 10 (entget (ssname s (setq i (1- i))))))
  8.                (setq u (cons (trans (cdr p) 0 1) u))
  9.                (setq l (cons p l))
  10.           (setq SUMM (ATOF (CDR (ASSOC 1 (entget (ssname s I))))));LEVEL
  11.           (setq SUM (+ SUM SUmM))
  12.           (setq COT (1+ COT))
  13.            (eval SUM)
  14.                )
  15.         (SETQ MEEM (/ SUM COT))
  16.         (SETQ DDD (RTOS MEEM 2 2))
  17.         (SETQ PO (GETPOINT "\nPlease Select a Point."))
  18.         (command "-mtext" PO "w" "0" (strcat "Avg=" DDD) "" )
  19.    
  20. ;;;           (princ "\nSelect Point: ")
  21.            (while
  22.                (progn (setq g (grread t 13 2) a (car g) b (cadr g))
  23.                    (cond
  24.                        (   (= 5 a) (redraw)
  25.                            (foreach x u (grdraw x b 1 1)) t
  26.                        )
  27.                        (   (= 3 a)
  28.                            (if (setq s (ssget b '((0 . "MTEXT,TEXT"))))
  29.                                (progn
  30.                                    (setq p (cdr (assoc 10 (entget (ssname s 0)))))
  31.                                    (foreach x l (entmakex (list (cons 0 "LINE") x (cons 11 p)))) nil
  32.                                )
  33. ;;;                               (princ "\nPlease Select a Point.")
  34.                            )
  35.                        )
  36.                    )
  37.                )
  38.            )
  39.          (foreach x l (entmakex (list (cons 0 "LINE") x (cons 11 PO) )))
  40.        )
  41.    )
  42.    (redraw) (princ)
  43.   )
Title: Re: Please help the members to modify the lisp
Post by: HasanCAD on December 05, 2018, 09:25:20 PM
And please follow http://www.theswamp.org/index.php?topic=48309.0
Title: Re: Please help the members to modify the lisp
Post by: HOSNEYALAA on December 06, 2018, 12:12:51 AM
thank you very much, my brother HasanCAD
The code works well
Thanks