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

Cambiare layer con modifica tratto e colore

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#1
Ciao, mi sarebbe utile una lisp che trasformi una entità (linea cerchio ecc...)
da livello x al livello selezionato precedentemente e che automaticamente la faccia diventare del colore e del tratto prefissato.

Esempio
ho 3 livelli:
- 0 (colore nero / tratto continuo)
- carpenterie (colore rosso / tratto continuo)
- macchine (colore blu / tratto continuo)

traccio una linea su livello 0

Ora voglio che diventi una linea nascosta del livello carpenterie+colore verde+tratto nascoste.

- Premo l'icona "pennello verde con 2 tratti" (creato in precedenza-simile a applica proprietà).
- Seleziono una entità qualsiasi del livello carpenterie (per indicare a quale livello dovrà appartenere l'entità che toccherò dopo)
- Seleziono l'entità del livello 0 che volgio trasformare
- Invio

A questo punto dovrei aver ottenere i seguenti cambiamenti:
- da liv. 0 a carpenterie
- da colore nero a verde (prefissato)
- da tratto continuo a nascoste (prefissato)

Esiste qlc oppure mi sapete "dettare" cosa scrivere nella lisp?
PS Vorrei creare anche l'icona "pennello verde con tratto punto tratto" (acadiso08w100)

PS2 Possibile creare una ulteriore lisp x gli assi che COPI (duplichi l'oggetto) l'asse selezionato applicandogli il livello precedentemente selezionato + colore e tratto prefissato?
 
Ultima modifica:

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#2
Carica il file lisp, all'interno è spiegato l'uso.

Ciao
 

Allegati

Ultima modifica:

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#3
uhmmm... provo a lanciarlo ma mi dà errore di stringa..


Comando: (load"cambiapr.lsp")
errore: la stringa è errata
(LOAD "cambiapr.lsp")
*Annullato*


:( cosa posso fare?
 
Ultima modifica:

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#4
Riprenditi il file, l'ho modificato, ora funziona.

Ciao
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#5
Ciao, lo stò provando ma non funziona.. come immaginavo...
in pratica ripropone sempre le proprietà del layer che seleziono....
invece dovrebbe fare:

(prompt "Seleziona le entita' campione")
e prende il nome del layer selezionato="LA1",

poi dovrebbe chiedere solamente
(prompt "Seleziona le entita' da modificare")
quindi alle entita' selezionate applicare:
"LA1" come livello
sempre (setq Colore 3) verde come colore
sempre (setq TipoLinea "acad_iso08w100") come linea

e basta
... io ho provato a modificare il tuo codice, ma c'è qlc che non và in quanto nn funzia :(

;*Cambia proprieta'
; se Layer = "" usato layer corrente
; se Colore = 0 usato colore ByLayer
; se TipoLinea = "" usato tipo linea corrente
(defun ChgPR (Layer Colore TipoLinea / l1)
(prompt "Seleziona le entita' ")
(setq L1 (ssget))
(if (= Layer "")
(setq Layer (getvar "clayer"))
)

(setq Colore 40)


(setq TipoLinea "DASHED")

(command "_change" L1 "" "_PR" "_LA" Layer "_C" Colore "_LT" TipoLinea "")
)

Dove sbalgio?
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#6
"LA1" come livello
sempre (setq Colore 3) verde come colore
sempre (setq TipoLinea "acad_iso08w100") come linea
da command: (chgPR "LA1" 3 "acad_iso08w100")

nel file lsp c'è un esempio per come richiamare chgPR passandogli i parametri.

Ciao
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#7
Ok e come faccio a "mettere dentro" LA1 il nome del layer del primo elemento selezionato? Scusa l'ignoranza :p

Cioè in pratica ricapitolando quello che vorrei è:

"Tocca un elemento da cui vuoi prendere il nome del layer"
clik
"adesso tocca gli elementi a cui vuoi applicare il layer selezionato prima, ma applicando il colore verde e il tratto nascosta"
clik
Fine

...ma mi sembra che quì ci sia l'ultima parte, manca quella in cui memorizza il nome del layer campione da applicare successivamente giusto?
come si fà quello?

:D
 
Ultima modifica:

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#8
Scarica il nuovo file, comando SetP1, ti chiede di indicare l'entita contenente il layer di destinazione, poi selezioni le entita.

C'è anche SetP2, è solo un esempio per fatri vedere come creare un comando che passa parametri alla routine principale, che è ChgPR, ne puoi creare diverse impostando colori e tipolinee diverse.

Ciao
 

Allegati

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#9
... F I C H I S S I M O ! ! ! ! ! :D

...quindi spingo sull'acceleretore ;-P

PS2 Possibile creare una ulteriore lisp x gli assi che COPI (duplichi l'oggetto) l'asse selezionato applicandogli il livello precedentemente selezionato + colore e tratto prefissato?
Dici che si riesce a fare anche questa lisp?
In pratica è simile alla prima solo che duplica e trasforma un asse invece di trasformarlo solo:

All'inizio ho disegnato solo un asse sul layer <albero>, quindi lancio la lisp e
"seleziona l'elemento o gli elementi che vuoi duplicare"
invio
clicco su un asse appartentente al layer <albero>
"seleziona un elemento appartenente al layer a cui il NUOVO asse dovrà appartenere"
clicco su un entità appartenente al layer <cuscinetto>
fine
A questo punto mi dovrei ritrovare con l'asse sul layer <albero> e sovrapposto
dovrei aver creato anche l'asse sul layer <cuscinetto> (che sarà SEMPRE "verde" e SEMPRE "acad_iso08w100"

Cosa dici, si riesce?

Grazie 1000 :D
 

reggio

Utente Senior
Professione: ...
Software: autocad11+swx16 sp4 w7 x64+Ready2W2012
Regione: Emilia - Modena
#11
GRAZIE GRAZIE GRAZIE, proprio forte sto LISP :D
qlc cosa forse la inizio a capire eh eh eh :)
credo ti disturberò spesso ;-P

...infatti a proposito, quando hai un attimo di tempo, riusciresti a vedere l'appunto dell'altro mio tread http://www.cad3d.it/forum1/showthread.php?t=6110 quello riguardante la creazione dei blocchi?
Per quello sarebbe bello poter selezionare gli elementi del layer da "blocc-are"
così che le tre viste dello stesso particolare non siano bloccate assieme ma possano essere spostate indipendentemente.

....ma poi mi viene in mente un altro problema... quando creo il blocco della 2° o 3° vista, visto che si trovano sullo stesso livello e che la lisp prende il nome blocco proprio dal livello... si sovrascriverebbe... :( pffff
c'è un sistema intelligente per evitarlo secondo te? uhmmm
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#13
per creare e settare un layer corrente utilizzo la seguente stringa:

(COMMAND "_LAYER" "_m" "000_abc" "_COLOR" "_RED" "" "")

(COMMAND "_LAYER" "_m" "123_abc" "_COLOR" "bylayer" "" "")

il primo funziona a metà cioè mi setta il layer e non il colore!!:confused:

il secondo va in errore:confused::confused:

però se non ricordo male nelle versioni precedenti queste stringhe funzionavano:rolleyes:

ricordo male??

grazie
bb
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#14
Il primo a me funziona (2008-2011), prova al limite ad indicare il numero del colore, mentre per quanto riguarda il secondo come puoi assegnare ad un layer il colore DALAYER???
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#15
Il primo a me funziona (2008-2011), prova al limite ad indicare il numero del colore, mentre per quanto riguarda il secondo come puoi assegnare ad un layer il colore DALAYER???
cia GP,
la prima stringa funziona la prima volta, ma se si cambia layer con un colore diverso, ad esempio layer 0 colore bianco, e poi si lancia nuovamente la prima stringa il layer viene settato ma il colore rimane quello bianco.

il fatto di utilizzare il bylayer l'ho preso come spunto dal comando cambia proprietà.

quello che vorrei capire è come fare ad settare un determinato layer con il colore bylayer?

grazie
bb
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#16
blu, mi spiace ma non riesco a replicare il tuo primo problema, a me funziona.

Per il secondo... un oggetto può avere colore bylayer, ma un layer deve avere un colore.
 

blubossa

Utente Standard
Professione: disegnatore
Software: CREO 2, WF5, SOLIDWORKS 2015, AUTOCAD 2016,
Regione: puglia
#17
blu, mi spiace ma non riesco a replicare il tuo primo problema, a me funziona.

Per il secondo... un oggetto può avere colore bylayer, ma un layer deve avere un colore.
ciao GP,
non so cosa è successo ma ora mi funziona nuovamente, non lo so mi sa che mi sono rinc.............

ciao e grazie anche per la seconda info

bb