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
 ssget con filtro

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Faccine
Felice [:)] Davvero Felice [:D] Caldo [8D] Imbarazzato [:I]
Goloso [:P] Diavoletto [):] Occhiolino [;)] Clown [:o)]
Occhio Nero [B)] Palla Otto [8] Infelice [:(] Compiaciuto [8)]
Scioccato [:0] Arrabbiato [:(!] Morto [xx(] Assonnato [|)]
Bacio [:X] Approvazione [^] Disapprovazione [V] Domanda [?]
Seleziona altre faccine

    
 
   

V I S U A L I Z Z A    D I S C U S S I O N E
blubossa Inserito il - 12 ottobre 2010 : 10:31:19
ciao a tutti,
vorrei selezionare i cerchi di colore bainco e gli archi di colore giallo, farne una copia, cambiare io colore e posizionarli sun un nuovo layer chiamato A123.

non riesco ad ottenere il filtro degli oggetti, riporto qui sotto:

(setq sel1 (ssget '((-4 . "<OR") ((0 . "CIRCLE") (62 . 7)) ((0 . "ARC") (62 . 2)) (-4 . "OR>"))))

dove sbaglio?
grazie
5   U L T I M E    R I S P O S T E    (in alto le più recenti)
blubossa Inserito il - 13 ottobre 2010 : 18:26:17
grazie a tutti è chiarissimo adesso.

bb
arri Inserito il - 13 ottobre 2010 : 07:58:50
Messaggio inserito da blubossa

"Attenzione però agli oggetti con colore DALAYER, non hanno il codice 62."

e quale codice devo controllare?


vedi qui
GP Inserito il - 12 ottobre 2010 : 20:28:32
Questo codice cattura cerchi con colore 7 e archi con colore 2.
(ssget "X" 
 '(
    (-4 . "<OR")
      (-4 . "<AND")
        (0 . "CIRCLE")
        (62 . 7)
      (-4 . "AND>")
      (-4 . "<AND")
        (0 . "ARC")
        (62 . 2)
      (-4 . "AND>")
    (-4 . "OR>")
  )
)

Gli oggetti con colore dalayer NON hanno il codice 62, se lo cerchi con (assoc 62) ti restituisce nil, li devi cercare con il codice 256 -> (62 . 256)

Il filtro ssget postato sopra non cattura quindi tali oggetti, devi rilanciare un (ssget "X" '((0 . "ARC,CIRCLE")(62 . 256))) e poi per ogni oggetto verificare l'accoppiata oggetto + colore layer

oppure
(ssget "X" '((0 . "ARC")(62 . 256))) e per ogni oggetto verificare il colore layer
(ssget "X" '((0 . "CIRCLE")(62 . 256))) e per ogni oggetto verificare il colore layer

Altro sistema sarebbe quello di verificare a priori quali layer hanno quei colori e aggiungere il filtro al gruppo di selezione, ma è un po' più complicato.


blubossa Inserito il - 12 ottobre 2010 : 15:07:48
"Attenzione però agli oggetti con colore DALAYER, non hanno il codice 62."

e quale codice devo controllare?

mi aiuteresti comunque a capire dov'è l'errore in:
(setq sel1 (ssget '((-4 . "<OR") ((0 . "CIRCLE") (62 . 7)) ((0 . "ARC") (62 . 2)) (-4 . "OR>"))))

vorrei imparare meglio ad utilizzare i filtri ma gli esempi che trovo in rete sono sempre piuttosto semplici.

grazie
bb


GP Inserito il - 12 ottobre 2010 : 13:38:48
Ti conviene catturare tutti i cerchi e gli archi, dopo di che verificare la coppia oggetto-colore...


(setq a (ssget "_X" '((0 . "ARC,CIRCLE"))))
(setq n -1)
(repeat (sslength a)
    (setq b (ssname a (setq n (1+ n))))
    (setq OGG (cdr (assoc 0 (entget b))))
    (setq COL (cdr (assoc 62 (entget b))))
    (if (or
	    (and (= OGG "CIRCLE") (= COL 7))
	    (and (= OGG "ARC") (= COL 2))
	)
	(progn
	    ..........................

Attenzione però agli oggetti con colore DALAYER, non hanno il codice 62.

TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,74 secondi.