Lisp »Tips 'n Tricks
»Qbloc.lsp
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
|