TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoCAD
 Quotatura da linea base con blocco
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Pagina Successiva
Autore Discussione Precedente Discussione Discussione Successiva
Pagina: di 2

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 06 luglio 2011 : 13:30:10  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Salve a tutti,
vorrei sottoporre un quesito in tema di quotatura: nel disegno architettonico - ma suppongo anche in quello meccanico - capita non di rado di dover quotare in modo progressivo e secondo una determinata direzione, gli elementi di un disegno a partire da una linea di riferimento. Esempio tipico quello di una sezione verticale di un edificio per il quale si prende come riferimento la quota del piano più basso (quota 000) e poi si quotano i piani di calpestio dei solai soprastanti con, ad esempio, (+300) per il piano primo, (+600) per il piano secondo e così via.
Volendo poi affinare la qualità del disegno, sarebbe bello poter utilizzare un blocco, tipo il classico triangolino rovesciato, da posizionare con il vertice sul piano da quotare... andando ancora oltre sarebbe anche decisamente utile disporre di un blocco con un attributo che "leggesse" in automatico la distanza in verticale tra la linea di riferimento e il punto sull'oggetto da quotare (allego disegno esemplificativo).
Qualcosa di simile si ottiene con la quotatura-coordinate ma da quello che ho visto il risultato è decisamente lontano da quello che intendo io.
Chiedo troppo?

Scarica allegato:

Quotatura_sezione.zip
21,19 KB

Luca

Modificato da - Arch_luca in Data 06 luglio 2011 13:32:00

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2778 Messaggi

Inserito il - 06 luglio 2011 : 13:44:12  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
QPRE - quota prospetto estradosso
QPRI - quota prospetto intradosso

Sono due lisp anni '90, e relativi blocchi dwg, con piccole integrazioni successive.
Vedi un po'



QPR.zip
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 06 luglio 2011 : 13:45:25  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Scritti tanto tempo fa, non ho più fatto ulteriori modifiche, neanche per adattarli all'ActiveX. Vedi se possono andare bene.
Il comando CAT copia uno dei blocchi quota della mia libreria QALT,QUOTALT,QR o QV, comunque puoi cambiare il nome tu stesso. Invece il comando MAT li sposta e tutti e due comandi aggiornano il valore della quota altimetrica.

(defun C:CAT (/ ent1 ucsz ucsw att1 quota1 pquota1 insquota1 diff quota2 nuovo ent2)
(setq ent1 (car(entsel "\nSelezionare la quota: ")))

(if (and (= (cdr (assoc 0 (entget ent1))) "INSERT")
(or (= (strcase (cdr (assoc 2 (entget ent1)))) "QALT")
(= (strcase (cdr (assoc 2 (entget ent1)))) "QUOTALT")
(= (strcase (cdr (assoc 2 (entget ent1)))) "QR")
(= (strcase (cdr (assoc 2 (entget ent1)))) "QV")
)
)
(progn
(setq ucsw (list 0.0 0.0 1.0)
ucsz (cdr (assoc 210 (entget ent1)))
att1 (entnext ent1)
quota1 (atof (cdr (assoc 1 (entget att1))))
)
(command "UCS" "_WORLD")

(if (equal ucsz ucsw 0.00000001)
(progn
(command "UCS" "Z" (rtd (cdr (assoc 50 (entget ent1)))))
(setq pquota1 (trans (cdr (assoc 10 (entget ent1))) 0 1))
)
(progn
(command "UCS" "A" "0,0,0" ucsz)
(setq pquota1 (cdr (assoc 10 (entget ent1))))
)
)

(setq insquota1 (cadr pquota1))
(command "_COPY" ent1 "")
(princ "\nPrimo punto: ")
(command pause)
(princ "\nSecondo punto: ")
(command pause)
(setq ent2 (entlast)
att2 (entnext ent2)
)
;;;(setvar "OSNAPOVERRIDE" 0)

(if (equal ucsz ucsw 0.00000001)
(progn
(setq pquota2 (trans (cdr (assoc 10 (entget ent2))) 0 1))
)
(progn
(setq pquota2 (cdr (assoc 10 (entget ent2))))
)
)

(setq insquota2 (cadr pquota2))

(cond
((> insquota2 insquota1)
(setq diff (abs (- insquota2 insquota1))
quota2 (+ quota1 diff)
)
)
((< insquota2 insquota1)
(setq diff (abs (- insquota1 insquota2))
quota2 (- quota1 diff)
)
)
)

(cond
((equal quota2 0.00 0.005)
(setq stringa "0.00")
(setq nuovo (subst (cons 1 (strcat "±" stringa))
(assoc 1 (entget att2))
(entget att2)
)
)
)
((< quota2 0)

(if (< (strlen (rtos quota2 2 2)) 3)
(progn
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
(progn

(cond
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 1)
1
)
"."
)
(setq agg "0")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
(setq agg nil)
(setq stringa (rtos quota2 2 2))
)
((not (equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
)
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
)

)
)

(setq nuovo (subst (cons 1 stringa)
(assoc 1 (entget att2))
(entget att2)
)
)
)
((> quota2 0)

(if (< (strlen (rtos quota2 2 2)) 3)
(progn
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
(progn

(cond
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 1)
1
)
"."
)
(setq agg "0")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
((not (equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
)
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
(setq agg nil)
(setq stringa (rtos quota2 2 2))
)
)

)
)

(setq nuovo (subst (cons 1 (strcat "+" stringa))
(assoc 1 (entget att2))
(entget att2)
)
)
)
)

(entmod nuovo)
(entupd ent2)
)
(progn (princ "\nNon e' un blocco quota altimetrica!")
(princ)
)
)
(princ)
)

(defun C:MAT (/ ent1 ucsz ucsw att1 quota1 pquota1 insquota1 diff quota2 nuovo ent2)
(setq ent1 (car(entsel "\nSelezionare la quota: ")))

(if (and (= (cdr (assoc 0 (entget ent1))) "INSERT")
(or (= (strcase (cdr (assoc 2 (entget ent1)))) "QALT")
(= (strcase (cdr (assoc 2 (entget ent1)))) "QUOTALT")
(= (strcase (cdr (assoc 2 (entget ent1)))) "QR")
(= (strcase (cdr (assoc 2 (entget ent1)))) "QV")
)
)
(progn
(setq ucsw (list 0.0 0.0 1.0)
ucsz (cdr (assoc 210 (entget ent1)))
att1 (entnext ent1)
quota1 (atof (cdr (assoc 1 (entget att1))))
)
(command "UCS" "_WORLD")

(if (equal ucsz ucsw 0.00000001)
(progn
(command "UCS" "Z" (rtd (cdr (assoc 50 (entget ent1)))))
(setq pquota1 (trans (cdr (assoc 10 (entget ent1))) 0 1))
)
(progn
(command "UCS" "A" "0,0,0" ucsz)
(setq pquota1 (cdr (assoc 10 (entget ent1))))
)
)

(setq insquota1 (cadr pquota1))
(command "_MOVE" ent1 "")
(princ "\nPrimo punto: ")
(command pause)
(princ "\nSecondo punto: ")
(command pause)
;;; (setvar "OSNAPOVERRIDE" 0)

(if (equal ucsz ucsw 0.001)
(progn
(setq pquota2 (trans (cdr (assoc 10 (entget ent1))) 0 1))
)
(progn
(setq pquota2 (cdr (assoc 10 (entget ent1))))
)
)

(setq insquota2 (cadr pquota2))

(cond
((> insquota2 insquota1)
(setq diff (abs (- insquota2 insquota1))
quota2 (+ quota1 diff)
)
)
((< insquota2 insquota1)
(setq diff (abs (- insquota1 insquota2))
quota2 (- quota1 diff)
)
)
)

(cond
((equal quota2 0.00 0.005)
(setq stringa "0.00")
(setq nuovo (subst (cons 1 (strcat "±" stringa))
(assoc 1 (entget att1))
(entget att1)
)
)
)
((< quota2 0)

(if (< (strlen (rtos quota2 2 2)) 3)
(progn
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
(progn

(cond
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 1)
1
)
"."
)
(setq agg "0")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
(setq agg nil)
(setq stringa (rtos quota2 2 2))
)
((not (equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
)
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
)

)
)

(setq nuovo (subst (cons 1 stringa)
(assoc 1 (entget att1))
(entget att1)
)
)
)
((> quota2 0)

(if (< (strlen (rtos quota2 2 2)) 3)
(progn
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
(progn

(cond
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 1)
1
)
"."
)
(setq agg "0")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
((not (equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
)
(setq agg ".00")
(setq stringa (strcat (rtos quota2 2 2) agg))
)
((equal (substr (rtos quota2 2 2)
(- (strlen (rtos quota2 2 2)) 2)
1
)
"."
)
(setq agg nil)
(setq stringa (rtos quota2 2 2))
)
)

)
)

(setq nuovo (subst (cons 1 (strcat "+" stringa))
(assoc 1 (entget att1))
(entget att1)
)
)
)
((= quota2 0)
(setq stringa "0.00")
(setq nuovo (subst (cons 1 (strcat "±" stringa))
(assoc 1 (entget att1))
(entget att1)
)
)
)
)

(entmod nuovo)
(entupd ent1)
)
(progn (princ "\nNon e' un blocco quota altimetrica!")
(princ)
)
)
(princ)
)

Torna all'inizio della Pagina

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2778 Messaggi

Inserito il - 06 luglio 2011 : 14:05:54  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
Altro lisp interessante di Angelo Stocco, in due varianti:



Crea un gruppo della quota

SimbQuota.zip



Crea un blocco della quota

QuotaV.zip
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 06 luglio 2011 : 16:11:12  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Puoi crearti un simbolo-blocco (simile al tuo) con un attributo che contenga un campo dati che visualizza la posizione X e/o Y del blocco stesso.

Immagine inserita:

55,29 KB
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 07 luglio 2011 : 07:23:26  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
A dire il vero non speravo proprio che la cosa si potesse fare...
Ora provo a studiarmi i vostri preziosi contributi e a metterli in pratica; è probabile che debba tornare a chiedere chiarimenti...

Luca

Modificato da - Arch_luca in data 07 luglio 2011 07:23:56
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 07 luglio 2011 : 13:18:39  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Quella del blocco con attributo che visualizza la posizione X/Y potrebbe essere anche una buona soluzione ma... è possibile selezionare di volta in volta una origine diversa delle coordinate?

Luca
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 07 luglio 2011 : 13:23:32  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Potresti cambiare UCS.
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 07 luglio 2011 : 14:12:20  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Se creo il blocco con campo dati che visualizza la posizione, le coordinate sono riferite sempre al WCS oppure l'origine può essere cambiata (come) in modo che venga visualizzata la nuova coordinata?

Luca

Modificato da - Arch_luca in data 07 luglio 2011 14:22:42
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 07 luglio 2011 : 20:52:26  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Messaggio inserito da Arch_luca

Se creo il blocco con campo dati che visualizza la posizione, le coordinate sono riferite sempre al WCS oppure l'origine può essere cambiata (come) in modo che venga visualizzata la nuova coordinata?


Purchè il nuovo UCS venga scelto prima di inserire i blocchi con il campo dati.
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 08 luglio 2011 : 06:19:49  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Il fatto è che sullo stesso disegno capita spesso di dover quotare con il sistema sopra illustrato ma facendo riferimento a piani "000" posti in posizioni differenti... meglio usare le apposite LISP?

Luca
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 08 luglio 2011 : 07:20:49  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Nella barra strumenti UCS esiste l'icona Ucs-Origine: basta un clic.
Non è sufficiente questo per spostare l'UCS?

Immagine inserita:

12,82 KB
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 08 luglio 2011 : 13:45:29  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Già fatto, la quota viene sempre riferita al WCS...

Luca
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 08 luglio 2011 : 22:33:14  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Prova ad inserire nel campo dati la variabile Lastpoint.
Fissare sempre l'origine dell'UCS prima dell'inserimento del blocco.

Immagine inserita:

57,55 KB
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 09 luglio 2011 : 06:19:52  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
I lisp che ti ho descritto sopra prevedono il cambio di UCS.
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 09 luglio 2011 : 07:12:01  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Messaggio inserito da joseph

Prova ad inserire nel campo dati la variabile Lastpoint.
Fissare sempre l'origine dell'UCS prima dell'inserimento del blocco.

Immagine inserita:

57,55 KB


Perfetto! Funziona a meraviglia...
Grazie mille!

Luca
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 09 luglio 2011 : 07:15:15  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Utilizzando il blocco con attributo da Campo dati si raggiunge lo scopo, anche se è necessario digitare manualmente il valore letto in corrispondenza della riga di comando.
Con i lisp è tutto automatico ma vorrei poter utilizzare il mio blocco con anche il tipo di carattere... è possibile senza un minimo di pratica di linguaggio lisp?

Luca

Modificato da - Arch_luca in data 09 luglio 2011 07:37:21
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 09 luglio 2011 : 07:30:50  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Messaggio inserito da Arch_luca


Perfetto! Funziona a meraviglia...
Grazie mille!


Prego.
Buona Domenica
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 09 luglio 2011 : 07:31:53  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Messaggio inserito da Arch_luca

Ho provato anche i lisp ma vorrei poter utilizzare il mio blocco con anche il tipo di carattere... è possibile senza un minimo di pratica di linguaggio lisp?


Non ho capito bene cosa chiedi
Torna all'inizio della Pagina

Arch_luca
Utente Master


Regione: Piemonte


340 Messaggi

Inserito il - 09 luglio 2011 : 07:53:42  Mostra Profilo Invia a Arch_luca un Messaggio Privato  Rispondi Quotando
Intendo dire che vorrei personalizzare la grafica (simbolo del triangolo e tipo di carattere) del blocco che viene inserito quando utlilizzo ad esempio la lisp QuotaV che mi ha indicato GP

Scarica allegato:

Simboli_lisp.zip
21,32 KB

Luca
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 09 luglio 2011 : 10:49:23  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Senza perdere tempo a ricrearsi il blocco se non esiste, ho modificato il file quotav.lsp.
Basta che il tuo blocco "Quota in sezione (carta) - SOPRA Dx" sia disponibile nei percorsi AutoCAD

Scarica allegato:

QuotaV_mod.zip
2,77 KB

Torna all'inizio della Pagina
Pagina: di 2 Discussione Precedente Discussione Discussione Successiva  
Pagina Successiva
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 2,23 secondi.