cg-Cad

Lisp »Tips 'n Tricks »Qbloc.lsp

QBLOC.LPS

Modifica del comando ARRAY, è simile ma calcola quanti blocchi inserire in una zona data secondo le distanze di X e Y inserite.

Autore: Michele Ingenuo - Sito Web: 3eye

;Qbloc.lsp (C) 2003 by Michele Ingenuo Ingoenius
;
;inserisce dei blocchi all'interno di una zona selezionata
;calcolando quante linee e quante colonne inserire 

(defun C:QBLOC (/ OSN BLOCCO DatiB NBLOC NEWBLOC P1 P2
	          x1 x2 Disty Distx Ecx Ecy COL LIN OB2 QUANTI message
  );variabili locali

  (SETQ OSN (GETVAR "OSMODE"));salva gli snap
  (SETVAR "OSMODE" 0) ;toglie gli snap
  
  (setq BLOCCO (car (entsel "\nSeleziona 1 blocco ")))
  (setq DatiB (entget BLOCCO));estrae tutte le informazioni del blocco
  (setq NBLOC (cdr (assoc 2 DatiB)));recupera il nome del blocco selezionato
  (setq NEWBL NBLOC)

  (setq P1 (getpoint "\nseleziona angolo in basso a sinistra"))
  (setq P2 (getpoint "\nseleziona angolo alto destra "))
  (setq x1 (car p1))
  (setq x2 (car P2))
  (setq Distx (- x2 x1))
  (setq y1 (cadr P1))
  (setq y2 (cadr P2))
  (setq Disty (- y2 y1))
  ;(setq X (fix Distx))
  ;(setq Y (fix Disty))
  (setq EcX (getreal "\n DISTANZA ORIZZONTALE X?\n"))
  (setq Ecy (getreal "\n DISTANZA VERTICALE Y? \n"))
  (setq COL (1+(fix (/ Distx  ECx))))
  (setq LIN (1+ (fix (/ Disty  ECy))))

  (setq QUANTI (itoa (* col lin)));stringa per il messaggio finale 

  (command "_insert" NEWBL P1 "" "" "");inserisce il blocco in P1
  (setq OB2 (entlast))

  (command "_array" OB2 "" "r" LIN COL  Ecy Ecx "")
  (SETVAR "OSMODE" OSN) ;rimette gli snap salvati prima

  (setq message (strcat "inseriti " QUANTI " blocchi  " NEWBL))
  (alert message);message box col messaggio

  (princ)

)

Lisp »Tips 'n Tricks