Autore |
Discussione  |
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 04 novembre 2014 : 17:55:25
|
Un saluto a Tutti. Vorrei disegnare un rettangolo e scriverci all'interno il nome e le sue misure in forma di testo, riesco a scrivere il nome ma non le quote. Qualcuno mi aiuta? Grazie
non allega il file allora lo trascrivo
;Rettangolo quotato, voglio disegnare un rettangolo maggiorato :di 20mm rispetto alle quote date e contenga all'interno le ;quote nel formato nome lunghezzaXlarghezza in millimetri nello ;stile di testo corrente. ; ; ; ; ; ;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ; (DEFUN C:rett () (defun dtr (a) (* pi (/ a 180.0))) (SETVAR "CMDECHO" 0) (SETVAR "OSNAPCOORD" 1) (SETVAR "BLIPMODE" 0) (SETQ P1 (GETPOINT "\nANGOLO ALTO SX DEL RETTANGOLO: ")) (SETVAR "OSMODE" 63) (SETQ TAGLIO 20) (SETQ NOME (GETSTRING "\nNOME: ")) (SETQ A (GETDIST "\nLUNGHEZZA: ")) (SETQ B (GETDIST "\nLARGHEZZA: ")) (SETQ TESTO ( STRCAT NOME )) ;calcola lunghezza e larghezza+20mm ;(SETQ L1 (+ 20 A)) ;(SETQ L2 (+ 20 B)) (COMMAND "_-LAYER" "_M" "TAGLI" "_C" "_BLUE" "" "") (SETQ P2 (POLAR P1 (DTR 0) (+ TAGLIO A))) (SETQ P3 (POLAR P2 (DTR 270) (+ TAGLIO B))) ;(SETQ P4 (POLAR P1 (DTR 270) B)) (COMMAND "_RECTANG" P1 P3 "") (COMMAND "_TEXT" PAUSE "" TESTO "" "" A "" "" B "" "") (SETVAR "BLIPMODE" 0) )
|
|
Giuseppe Mauro
Amministratore

Regione: Campania
Prov.: Napoli
2707 Messaggi |
Inserito il - 05 novembre 2014 : 11:58:08
|
credo ti manchi un command dimlinear P1 P2 ed un command dimlinear P2 P3
|
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 05 novembre 2014 : 12:18:07
|
Grazie per la risposta Giuseppe, non mi interessa la quota ma scrivere le due misure in formato di stringa, sto studiando l'uso della lista ma non ne vengo a capo. Un saluto. A. |
 |
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2778 Messaggi |
Inserito il - 05 novembre 2014 : 12:24:34
|
Beppe ci stavo guardando anch'io, credo che Alberto voglia scrivere i dati già in possesso "sotto" al primo testo, potrebbe fare in questo modo:
(princ "\nPunto d'inserimento del testo") (COMMAND "_TEXT" PAUSE "" "" NOME) (COMMAND "_TEXT" "" (rtos A 2 2)) (COMMAND "_TEXT" "" (rtos B 2 2))
Qualche osservazione:
(COMMAND "_RECTANG" P1 P3 "") le doppie virgolette non servono
(SETQ TESTO (STRCAT NOME)) strcat serve a concatenare più stringhe, quindi in questo caso non serve (ce n'è una sola), oltretutto si può utilizzare NOME da passare a (command "_text"...
A e B sono valori numerici, per passarli a (command "_text... devono essere convertiti in stringa con la funzione rtos |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 05 novembre 2014 : 14:25:42
|
Grazie GP per il contributo. A e B sono valori numerici e li acquisisco con "getint" per evitare che me li stampi con dieci decimali, ho tentato di comporre una lista setq mess '( "testo" "A" "B") ma mi scrive solo il testo senza le quote. Provo senz'altro a convertirle come mi consigli. Un saluto. A. |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 05 novembre 2014 : 15:43:20
|
Eccomi, ciao a tutti, ho convertito i valori A e B in AA e BB in formato frazionario (5). Componendo la lista non scrive nulla, per scivere le cose devo tornare al comando _text per ciascuna voce perchè il comando text con la sequenza scrive solo il nome. Trascrivo lo scritto "modulare" in modo che si possano attivare e disattivare le varie funzioni per provare. Grazie a chi vorrà perderci un minuto. Un saluto
; ;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ; (DEFUN C:rett () (defun dtr (a) (* pi (/ a 180.0))) (SETVAR "CMDECHO" 0) (SETVAR "OSNAPCOORD" 1) (SETVAR "BLIPMODE" 0) (SETQ P1 (GETPOINT "\nANGOLO ALTO SX DEL RETTANGOLO: ")) (SETVAR "OSMODE" 63) (SETQ TAGLIO 20) (SETQ NOME (GETSTRING "\nNOME: ")) (SETQ A (GETINT "\nLUNGHEZZA: ")) (SETQ B (GETINT "\nLARGHEZZA: ")) (SETQ TESTO ( STRCAT NOME ))
;calcola lunghezza e larghezza+20mm ;(SETQ L1 (+ 20 A)) ;(SETQ L2 (+ 20 B)) ;(COMMAND "_-LAYER" "_M" "TAGLI" "_C" "_BLUE" "" "") (SETQ P2 (POLAR P1 (DTR 0) (+ TAGLIO A))) (SETQ P3 (POLAR P2 (DTR 270) (+ TAGLIO B))) (setq AA (rtos A 5 )) (setq BB (rtos B 5 )) ;(setq mess '( testo AA BB )) ;(SETQ P4 (POLAR P1 (DTR 270) B)) (COMMAND "_RECTANG" P1 P3 ) (COMMAND "_TEXT" PAUSE ""mess"" ) ;(COMMAND "_TEXT" PAUSE ""nome"" ""AA"" ""BB"" "") ;(COMMAND "_TEXT" PAUSE ""AA"" ) ;(COMMAND "_TEXT" PAUSE ""BB"" ) (SETVAR "BLIPMODE" 0) ) |
 |
|
Giuseppe Mauro
Amministratore

Regione: Campania
Prov.: Napoli
2707 Messaggi |
Inserito il - 05 novembre 2014 : 19:55:55
|
Mah, sarò io ciuccio, ma mica ho capito cosa vuoi ottenere come risultato finale. Puoi inserire un immagine? |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 05 novembre 2014 : 20:47:42
|
Un rettangolo con scritto all'interno il nome e le misure in formato di stringa
_____________________________ ! ! ! ! ! nome 500 350 ! ! ! ! ! ! ! ! ! !____________________________!
Mi serve per impostare i piani di taglio dei pannelli, in una fase successiva vorrei anche dare il numero dei pannelli in modo che mi disegni tanti rettangoli quanti me ne servono, tutti col nome e le misure. Quando ho tutti i miei pannelli li dispongo manualmente sui layouts per ottimizzare i tagli. Non mi permetterei mai di considerarti un ciuccio, che poi i ciucci veri si offendono Un saluto e grazie se riesci a darmi una mano. A. |
 |
|
Giuseppe Mauro
Amministratore

Regione: Campania
Prov.: Napoli
2707 Messaggi |
Inserito il - 05 novembre 2014 : 21:59:16
|
(SETQ TESTO ( STRCAT NOME )) è inutile - eliminala
;(setq mess '( testo AA BB )) sostituiscila con (setq mess (strcat NOME " - " AA " - " BB))
(COMMAND "_TEXT" PAUSE ""mess"" ) sostituiscila con (COMMAND "_TEXT" PAUSE "" "" mess "" )
|
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 07:56:35
|
Grazie Giuseppe per la risposta notturna. Vedo che è una questione di punteggiatura, mi sono nuovi i "-" tra i componenti di mess, ci devo studiare. Buona giornata. A. |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 08:34:36
|
; ;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ; (DEFUN C:rett () (defun dtr (a) (* pi (/ a 180.0))) (SETVAR "CMDECHO" 0) (SETVAR "OSNAPCOORD" 1) (SETVAR "BLIPMODE" 0) (SETQ P1 (GETPOINT "\nANGOLO ALTO SX DEL RETTANGOLO: ")) (SETVAR "OSMODE" 63) (SETQ TAGLIO 20) (SETQ NOME (GETSTRING "\nNOME: ")) (SETQ A (GETINT "\nLUNGHEZZA: ")) (SETQ B (GETINT "\nLARGHEZZA: ")) ;(COMMAND "_-LAYER" "_M" "TAGLI" "_C" "_BLUE" "" "") (SETQ P2 (POLAR P1 (DTR 0) (+ TAGLIO A))) (SETQ P3 (POLAR P2 (DTR 270) (+ TAGLIO B))) (setq AA (rtos A 5 )) (setq BB (rtos B 5 )) (setq mess ( strcat nome " - " AA " - " BB)) ;(SETQ P4 (POLAR P1 (DTR 270) B)) (COMMAND "_RECTANG" P1 P3 ) (COMMAND "_TEXT" PAUSE "" "" mess "" ) (SETVAR "BLIPMODE" 0) )
(SETQ TESTO ( STRCAT NOME )) è inutile - eliminala
;(setq mess '( testo AA BB )) sostituiscila con (setq mess (strcat NOME " - " AA " - " BB))
(COMMAND "_TEXT" PAUSE ""mess"" ) sostituiscila con (COMMAND "_TEXT" PAUSE "" "" mess "" )
0 Comando: appload rettangolo quotato 22.lsp caricato. Comando: Comando: Comando: rett ANGOLO ALTO SX DEL RETTANGOLO: NOME: fianco LUNGHEZZA: 500 LARGHEZZA: 300 Comando sconosciuto "FIANCO - 500 - 300". Premere F1 per la Guida. Comando sconosciuto "RETT". Premere F1 per la Guida. 0
Disegna il rettangolo ma non scrive il testo. sto lavorando con ADT2004 su winxp sp2 su un PC non connesso in rete. |
 |
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2778 Messaggi |
Inserito il - 06 novembre 2014 : 11:10:02
|
A me funziona, per uscire in maniera pulita dal lisp dovresti al limite togliere queste virgolette (COMMAND "_TEXT" PAUSE "" "" mess "" ) e aggiungere (princ) nell'ultima riga.
Non so che versione utilizzi, ma nelle ultime (credo da 2011 o 2012) blipmode non esiste più, è diventato un comando: Comando: PUNTINI Digitare modalità [ON/OFF] <OFF>: |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 14:31:15
|
Grazie GP per la risposta, significa che siamo sulla strada giusta. Posto lo scritto nell'ultima stesura e lo scritto della riga di comando, il programma disegna il rettangolo ma non il testo e dice che il messaggio è un comando sconosciuto. Lavoro con ADT2004 su winxp sp2 con un PC non sonnesso alla rete. Ho anche un pò pasticciato togliendo e aggiungendo spazi e virgolette, copiando righe di esempi prese qua e là, a volte scrive solo il nome senza le quote... spero proprio che qualcuno mi dia una dritta. Un saluto a tutti.
; ;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ; (DEFUN C:rett () (defun dtr (a) (* pi (/ a 180.0))) (SETVAR "CMDECHO" 0) (SETVAR "OSNAPCOORD" 1) (SETVAR "BLIPMODE" 0) (SETQ P1 (GETPOINT "\nANGOLO ALTO SX DEL RETTANGOLO: ")) (SETVAR "OSMODE" 63) (SETQ TAGLIO 20) (SETQ NOME (GETSTRING "\nNOME: ")) (SETQ A (GETINT "\nLUNGHEZZA: ")) (SETQ B (GETINT "\nLARGHEZZA: ")) ;(COMMAND "_-LAYER" "_M" "TAGLI" "_C" "_BLUE" "" "") (SETQ P2 (POLAR P1 (DTR 0) (+ TAGLIO A))) (SETQ P3 (POLAR P2 (DTR 270) (+ TAGLIO B))) (setq AA (rtos A 5 )) (setq BB (rtos B 5 )) (setq mess ( strcat " nome " " AA " " BB " )) ;(setq mess '( strcat nome " - " AA " - " BB)) ;(SETQ P4 (POLAR P1 (DTR 270) B)) (COMMAND "_RECTANG" P1 P3 ) (COMMAND "_TEXT" PAUSE "" "" mess ) (princ) )
Comando: appload rettangolo quotato 22.lsp caricato. Comando: Comando: Comando: rett ANGOLO ALTO SX DEL RETTANGOLO: NOME: fianco LUNGHEZZA: 500 LARGHEZZA: 300 Comando sconosciuto " NOME AA BB ". Premere F1 per la Guida. |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 06 novembre 2014 : 15:07:47
|
Così come era scritta la variabile mess, conteneva nome come stringa e non come variabile. Comunque l'ho inglobata insieme al comando del testo. La funzione dtr non ti serve, basta lavorare con il pi greco. Il testo è inserito al centro del rettangolo, evitando un ulteriore input.
ERRATO -> (setq mess (strcat " nome " " AA " " BB " ))
GIUSTO -> (setq mess (strcat nome " " AA " " BB))
(defun C:rett ()
(setvar "CMDECHO" 0)
(setvar "OSNAPCOORD" 1)
(setvar "BLIPMODE" 0)
(setq P1 (getpoint "\nANGOLO ALTO SX DEL RETTANGOLO: "))
(setvar "OSMODE" 63)
(setq TAGLIO 20)
(setq NOME (getstring "\nNOME: "))
(setq A (getdist "\nLUNGHEZZA: "))
(setq B (getdist "\nLARGHEZZA: "))
(setq P2 (polar P1 0 (+ TAGLIO A)))
(setq P3 (polar P2 (* (/ pi 2) 3) (+ TAGLIO B)))
(vl-cmdf "_RECTANG" P1 P3)
(vl-cmdf "_TEXT" "_J" "M" (polar P1 (angle P1 P3)(/ (distance P1 P3) 2)) "" "" (strcat nome " " (rtos A 5) " " (rtos B 5)))
(princ)
) |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 18:05:17
|
Grazie Terminator per l' aiuto. Stasera lo installo e provo. Mandi. |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 18:37:37
|
Accidenti. Un saluto a tutti. Non funziona, disegna il rettangolo ma non il testo. Allego lo scritto di acad. E' possibile che abbia il mio pc qualcosa che non va? qualche impostazione o variabile?
Comando: appload rettangolo quotato 33.lsp caricato. Comando: Comando: Comando: rett ANGOLO ALTO SX DEL RETTANGOLO: NOME: fianco LUNGHEZZA: 500 LARGHEZZA: 300 Comando sconosciuto "FIANCO 500 300". Premere F1 per la Guida. Comando: Specificare angolo opposto: |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 06 novembre 2014 : 18:54:03
|
Penso di sapere cosa sia, dovresti mettere l'altezza dello stile di testo di default a zero. Ho provato e infatti non funzionava con un'altezza impostata. |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 19:29:30
|
Grande Terminator! Funziona. Ti chiedo troppo se ti chiedo perchè succede questo? come sa il programma l'altezza giusta che deve avere il testo? Perchè c'è da dire che l'ha azzeccata. Un saluto a tutti. A.
La prossoma fase è creare una routine che disegni un numero di rettangoli richiesto accostati in una fila orizzontale. C'è da studiare. |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 06 novembre 2014 : 19:40:55
|
Sistemata la stringa con la giusta punteggiatura indicata da Terminator funziona anche la versione precedente.
ERRATO -> (setq mess (strcat " nome " " AA " " BB " ))
GIUSTO -> (setq mess (strcat nome " " AA " " BB))
|
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 06 novembre 2014 : 21:40:09
|
| Messaggio inserito da albertoromano
Grande Terminator! Funziona. Ti chiedo troppo se ti chiedo perchè succede questo? come sa il programma l'altezza giusta che deve avere il testo?
|
Perché il comando testo segue una precisa sequenza: punto-rotazione-stringa. Se l'altezza è impostata a 0, fra il punto e la rotazione il comando chiede anche l'altezza. Ovviamente anche la funzione command deve seguire la stessa sintassi e non può sapere se l'altezza è impostata. Mi sembra che ci sia una variabile, ma ora non mi viene in mente. Per tagliare la testa al...topo, io cerco di non usare la funzione command, che considero sempre una forzatura nel lisp, preferisco di gran lunga le funzioni entmake o vla-add, ma qui entriamo in un altro discorso, molto più complesso.
| La prossima fase è creare una routine che disegni un numero di rettangoli richiesto accostati in una fila orizzontale. C'è da studiare.
|
E' più semplice di quello che pensi, ti basta incrementare la coordinata x di un tot ad ogni rettangolo disegnato. |
 |
|
albertoromano
Utente Attivo
Prov.: Brescia
92 Messaggi |
Inserito il - 07 novembre 2014 : 12:27:21
|
Grazie Termanator per la disponibilità e chiarezza. quella variabile è TEXTSIZE? non voglio ridisegnare manualmente il rettangolo ogni volta ma dare l'imput " n.pezzi nome lunghezza larghezza " e mediante una routine il sw ne disegna n.pezzi in fila distanziati di x tra loro. Se serve sono pronto a studiare. Buona domenica a tutti. |
 |
|
Discussione  |
|