Thank you, it was closed, i modified a little for what i need
But it still has a littl error if in need only 1 row and more colomns or 1 colmon and more rows it insert only one block:
(defun C:ELEC (/ *error* bk bname dx dy leg m n osm p1 p2 p3 p4 pmin pn px py req wid)
(defun *error* (msg)
(cond
(or
(not msg)
(member msg
(list "console break"
"Function cancelled"
"quit / exit abort"))
)
)
(if msg (princ (strcat "\nError: " msg))
)
(command "_ucs" "_p")
(setvar 'cmdecho 1)
(setvar 'attdia 1)
(setvar 'qaflags 0)
(if req (setvar 'attreq req))
(if osm (setvar 'osmode osm))
(command "_undo" "_end")
(princ)
)
(defun 3dPoint->2dPoint (3dpt)
(list (float (car 3dpt)) (float (cadr 3dpt)))
);end of 3dPoint->2dPoint
(command "_undo" "_begin")
(setq bname "fluo_et");<-- change block name here
(if (not (tblsearch "block" bname))
(progn
(alert (strcat "Block" "\"" bname "\"" " does not exist.\nProgram exiting..."))
(exit)(princ))
)
(setvar 'cmdecho 0)
(command "_ucs" "_w")
(setq osm (getvar 'osmode))
(setq req (getvar 'attreq))
(setq p1 (getpoint "\nFirst corner: "))
(setq p3 (getcorner p1 "\nOpposite corner: "))
(setq p1 (3dPoint->2dPoint p1)
p3 (3dPoint->2dPoint p3)
p2 (list (car p3) (cadr p1))
p4 (list (car p1) (cadr p3))
leg (distance p1 p2)
wid (distance p1 p4)
)
(command "_zoom" p1 p3)
(setq m (getint "\m Number of rows: " )
n (getint "\n Number of columns: " )
dx (/ leg n 2. )
dy (/ wid m 2. )
leg (- leg (* dx 2.))
wid (- wid (* dy 2.))
)
(setq px (apply 'min (mapcar 'car (list p1 p2 p3 p4)))
py(apply 'min (mapcar 'cadr (list p1 p2 p3 p4)))
pn (list px py)
pmin (car (vl-remove-if-not
(function (lambda(a)
(and (equal (car a)(car pn)0.001)
(equal (cadr a)(cadr pn)0.001)))
) (list p1 p2 p3 p4))
)
px (+ px dx)
py (+ py dy)
)
(setq pmin (list px py))
(setvar 'attdia 0)
(setvar 'attreq 0)
(setvar 'osmode 0)
(setvar 'qaflags 1)
(command "-insert" "fluo_et" (trans pmin 1 0) "1.0" "0.0");<-- change block name here
(setvar 'qaflags 0)
(setq bk (entlast))
(terpri)
(setq rows (itoa m)
cols (itoa n))
(vl-cmdf "-array" bk "" "_R" m n (/ wid (1- m)) (/ leg (1- n)) )
(command "_ucs" "_P")
(*error* nil)
(princ)
)
(prompt "\n --- Start command with \"ELEC\" or \"elec\" ---")
(prin1)
(or (vl-load-com)
(princ)
)