• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Calcolo delle superfici e del perimetro

Zanna91

Utente Standard
Professione: ---
Software: AutoCAD
Regione: Deutschland
#1
Questa funzione chiede un punto all'interno di un'area (che identifica una stanza) e l'altezza delle pareti. Restituisce, scrivendoli sul punto scelto: la superficie, il volume e la superficie totale comprensiva delle pareti e del soffitto della stanza. Oppure scrive solo la superficie ed il perimetro dell'area su nuovi layers.

Codice:
(defun c:CSV ()
	(if (= ht nil)(setq ht 1))
        (if (= scala nil)(setq scala(getreal "\n....... Scala scritte 1:")))
  	(if (= Hstanze nil)(setq Hstanze(getreal "\n....... Altezza delle stanze: ")))
        (setq hs(* 0.0015 scala))
	(setq p "")
	(setq p(getpoint "\n....... Seleziona il punto all'interno della stanza: "))
(if (/= p nil)(progn
        (setvar "cmdecho" 0)
	(setq cpltype(getvar "PLINETYPE"))
        (setq clay(getvar "clayer"))
	(setvar "PLINETYPE" 1)
	(command "_layer" "_m" "aree_nuove" "")
	(command "_bpoly" "_a" "_b" "_e" "_o" "_p" "_x" p "")
	(setq poli(entlast))
	(setq polix(entget poli))
	(if (= (cdr(assoc 0 polix)) "LWPOLYLINE")(progn
	  	(command "_area" "_o" poli)
	  	(setq Area(getvar "Area"))
		(setq Perimetro(getvar "Perimeter"))
		(command "_layer" "_m" "aree_scritte" "")
	        (command "_text" "_c" p hs "0" (strcat "Sp=" (rtos area 2 1) " m²") \r)
		(setq Volume(* Hstanze Area))
	        (command "_text" "_c" (polar p (* 1.5 pi) (* hs 1.5)) hs "0" (strcat "V=" (rtos Volume 2 1) " m³") \r)
		(setq Stot(+ Area Area (* Perimetro Hstanze)))
	        (command "_text" "_c" (polar p (* 1.5 pi) (* hs 3)) hs "0" (strcat "Stot=" (rtos Stot 2 1) " m²") \r)
		
	))		
        (setvar "clayer" clay)
	(setvar "PLINETYPE" cpltype)

))
(princ)
) 
(defun c:CS ()
	(if (= ht nil)(setq ht 1))
        (if (= scala nil)(setq scala(getreal "\n....... Scala scritte 1:")))
        (setq hs(* 0.0015 scala))
	(setq p "")
	(setq p(getpoint "\n....... Seleziona il punto all'interno dell'area: "))
(if (/= p nil)(progn
        (setvar "cmdecho" 0)
	(setq cpltype(getvar "PLINETYPE"))
        (setq clay(getvar "clayer"))
	(setvar "PLINETYPE" 1)
	(command "_layer" "_m" "aree_nuove" "")
	(command "_bpoly" "_a" "_b" "_e" "_o" "_p" "_x" p "")
	(setq poli(entlast))
	(setq polix(entget poli))
	(if (= (cdr(assoc 0 polix)) "LWPOLYLINE")(progn
	  	(command "_area" "_o" poli)
	  	(setq Area(getvar "Area"))
		(setq Perimetro(getvar "Perimeter"))
		(command "_layer" "_m" "aree_scritte" "")
	        (command "_text" "_c" p hs "0" (strcat "S=" (rtos area 2 2)) \r)
	        (command "_text" "_c" (polar p (* 1.5 pi) (* hs 1.5)) hs "0" (strcat "P=" (rtos Perimetro 2 2)) \r)
	))		
        (setvar "clayer" clay)
	(setvar "PLINETYPE" cpltype)

))
(princ)
) 
(princ "\n<Copyright: ing. Claudio Granuzzo>")
(princ "\ndigitare CS per scrivere superficie e perimetro")
(princ "\ndigitare CSV per scrivere superficie e volume")
(princ)
Fonte: www.sepram.com


Saluti,
Giacomo
 
Ultima modifica:

IKO

Utente poco attivo
Professione: Ingegnere
Software: Autocad 2008
Regione: Lazio
#2
Salve..sono nuovo di questo forum...cercando mi sono imbattuto in questo link ke sembrerebbe fare al caso mio...adesso il problema è come faccio a caricarlo sul mio autocad??ho seguito delle indicazioni che ho trovato ma non sembra funzionare...credo ke il problema sia io...aiutooooo!!!!!
 

Zanna91

Utente Standard
Professione: ---
Software: AutoCAD
Regione: Deutschland
#3
i file .LSP si possono caricare in AutoCAD nei seguenti modi:

-trascinando il file direttamente all'interno di AutoCAD in esecuzione.
-con _APPLOAD selezionando il file e caricandolo
-digitando dalla linea di comando (load "Nomefile.lsp") tenendo presente che Nomefile.lsp deve trovarsi nel percorso di AutoCAD

Per caricare automaticamente il lisp a ogni apertura di dwg occorre:

-aggiungere con _APPLOAD il file nel gruppo di avvio.
-rinominare il file in ACAD.lsp e inserirlo nel percorso di ricerca dei file di supporto di AutoCAD
se il file ACAD.lsp esiste già, aggiungere il contenuto del nuovo lisp

Per conoscere il comando del Lisp caricato:

-di solito corrisponde al nome del file stesso
-quando si carica esce l'indicazione sulla riga di comando.
con un editor, ad esempio Notepad, si cerca la stringa defun C: , quello che segue C: è il comando. Supponiamo di trovare defun C:pROVA , il comando sarà PROVA.
 

manente

Utente Junior
Professione: architetto
Software: autocad
Regione: piemonte
#4
scusate, ma il lisp qui sopra mi va in errore con autocad 2012 ita....cosa posso fare ?
grazie
 

geometrico

Utente poco attivo
Professione: geometra
Software: autocad 2014
Regione: veneto
#5
Ringrazio,
utilissima la lisp, solo che il testo,malgrado imposti l'altezza quando richiesto risulta talmente piccolo che non si vede nulla.
Inoltre ho la necessità di calcolare le superfici di ogni singolo ambiente per circa 600 immobili. E' possibile impostare qualcosa di automatico in modo che selezionando tutte le polilinee venga restituita una tabella che identifichi "ambiente e superficie relativa"?