Autore |
Discussione |
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 06 luglio 2011 : 13:30:10
|
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
|
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
|
|
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 06 luglio 2011 : 13:45:25
|
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) )
|
|
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2778 Messaggi |
Inserito il - 06 luglio 2011 : 14:05:54
|
Altro lisp interessante di Angelo Stocco, in due varianti:
Crea un gruppo della quota
SimbQuota.zip
Crea un blocco della quota
QuotaV.zip
|
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 06 luglio 2011 : 16:11:12
|
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 |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 07 luglio 2011 : 07:23:26
|
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 |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 07 luglio 2011 : 13:18:39
|
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 |
|
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 07 luglio 2011 : 13:23:32
|
Potresti cambiare UCS. |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 07 luglio 2011 : 14:12:20
|
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 |
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 07 luglio 2011 : 20:52:26
|
| 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. |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 08 luglio 2011 : 06:19:49
|
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 |
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 08 luglio 2011 : 07:20:49
|
Nella barra strumenti UCS esiste l'icona Ucs-Origine: basta un clic. Non è sufficiente questo per spostare l'UCS?
Immagine inserita:
12,82 KB |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 08 luglio 2011 : 13:45:29
|
Già fatto, la quota viene sempre riferita al WCS... |
Luca |
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 08 luglio 2011 : 22:33:14
|
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 |
|
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 09 luglio 2011 : 06:19:52
|
I lisp che ti ho descritto sopra prevedono il cambio di UCS. |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 09 luglio 2011 : 07:12:01
|
| 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 |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 09 luglio 2011 : 07:15:15
|
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 |
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 09 luglio 2011 : 07:30:50
|
| Messaggio inserito da Arch_luca
Perfetto! Funziona a meraviglia... Grazie mille!
|
Prego. Buona Domenica |
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 09 luglio 2011 : 07:31:53
|
| 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 |
|
|
Arch_luca
Utente Master
Regione: Piemonte
340 Messaggi |
Inserito il - 09 luglio 2011 : 07:53:42
|
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 |
|
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 09 luglio 2011 : 10:49:23
|
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
|
|
|
Discussione |
|