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
 AutoLISP
 disegnare un rettangolo con quote all'interno
 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

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 04 novembre 2014 : 17:55:25  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
credo ti manchi un command dimlinear P1 P2 ed un command dimlinear P2 P3
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 05 novembre 2014 : 12:18:07  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2778 Messaggi

Inserito il - 05 novembre 2014 : 12:24:34  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 05 novembre 2014 : 14:25:42  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 05 novembre 2014 : 15:43:20  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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)
)
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2707 Messaggi

Inserito il - 05 novembre 2014 : 19:55:55  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
Mah, sarò io ciuccio, ma mica ho capito cosa vuoi ottenere come risultato finale.
Puoi inserire un immagine?
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 05 novembre 2014 : 20:47:42  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2707 Messaggi

Inserito il - 05 novembre 2014 : 21:59:16  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
(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 "" )
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 07:56:35  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 08:34:36  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
;
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
;
(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.
Torna all'inizio della Pagina

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2778 Messaggi

Inserito il - 06 novembre 2014 : 11:10:02  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
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>:
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 14:31:15  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 06 novembre 2014 : 15:07:47  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
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)
)
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 18:05:17  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
Grazie Terminator per l' aiuto. Stasera lo installo e provo. Mandi.
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 18:37:37  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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:
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 06 novembre 2014 : 18:54:03  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 19:29:30  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 06 novembre 2014 : 19:40:55  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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))


Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 06 novembre 2014 : 21:40:09  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

albertoromano
Utente Attivo

Prov.: Brescia


92 Messaggi

Inserito il - 07 novembre 2014 : 12:27:21  Mostra Profilo Invia a albertoromano un Messaggio Privato  Rispondi Quotando
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.
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 1,21 secondi.