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
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

blubossa
Utente Senior



102 Messaggi

Inserito il - 12 ottobre 2010 : 10:31:19  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
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

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2776 Messaggi

Inserito il - 12 ottobre 2010 : 13:38:48  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 12 ottobre 2010 : 15:07:48  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
"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


Torna all'inizio della Pagina

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2776 Messaggi

Inserito il - 12 ottobre 2010 : 20:28:32  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
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.


Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 13 ottobre 2010 : 07:58:50  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Messaggio inserito da blubossa

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

e quale codice devo controllare?


vedi qui
Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 13 ottobre 2010 : 18:26:17  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
grazie a tutti è chiarissimo adesso.

bb
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione 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 8,12 secondi.