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
 Sistemi di coordinate WCS-UCS-OCS

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
joseph Inserito il - 13 dicembre 2011 : 00:35:50
Sto cercando di fare (farmi) chiarezza sulla relazione che esiste fra i 3 sistemi di coordinate:
WCS Sistema di Coordinate Globale (World)
UCS Sistema di Coordinate Utente (User)
OCS Sistema di Coordinate Oggetto (Object)

Mi sono messo in un caso particolare.
Su un UCS con origine in (150,100,50), ruotato di 15° attorno al suo asse X,
ho disegnato un cerchio di raggio=60 con centro C (120,140)
ricordiamo che il cerchio é una delle tante entità 2D.

1^situazione
Estraggo le coordinate del centro usando VisualLisp.
(setq cerc (car (entsel)))
(setq cerc-obj (vlax-ename->vla-object cerc)) -> <Nome entità: 7ffff6148e0> #<VLA-OBJECT IAcadCircle2 000000002c78cb48>
(setq cen (vlax-get-property cerc-obj 'center))
(setq cen (vlax-safearray->list (variant-value cen))) ->(270.0 235.23 86.2347) sono le coordinate rispetto al WCS,
non si tiene conto dunque su quale UCS è stato disegnato il cerchio.

Anche la funzione (distance) usa e restituisce le coordinate nel sistema WCS:
(setq dist (distance '(0 0 0) cen-ent))-> 368.333 -> Delta X = 270, Delta Y = 235.23, Delta Z = 86.23

2^situazione
Invece la funzione (getpoint) e altre simili tengono conto dell'orientamento del sistema corrente
nel momento in cui é stato disegnato l'oggetto:
(setq cen-id (getpoint)) -> (120.0 140.0 -2.84217e-014) ;sono le coordinate rispetto all'UCS
e anche dalla finestra Proprietà:
Xcentro= 120 Ycentro= 140 Zcentro= 0, sono sempre coord. rispetto all'UCS.
Xnorm = -150 Ynorm = -109.53 Znorm = -21.41 questa informazione, a prima vista non è comprensibile,
perchè non sono le componenti dell'asse Z dell'UCS, come si poteva supporre.

3^situazione
La cosa più interessante è invece l'estrazione dei dati con "entget":
(setq ent (entget (car(entsel))))
((-1 . <Nome entità: 7ffff6148e0>) (0 . "CIRCLE") (5 . "103E") (102 . "{ACAD_REACTORS") (330 . <Nome entità: 7ffff614da0>)
(102 . "}") (330 . <Nome entità: 7ffff6069f0>) (100 . "AcDbEntity") (67 . 0)
(410 . "Model") (8 . "OGGETTO-CERCHIO") (370 . 25) (100 . "AcDbCircle")
(10 270.0 249.534 22.4144) (40 . 60.0) (210 1.36224e-017 -0.258819 0.965926))

Estraiamo le coordinate del centro:
(setq centro (cdr (assoc 10 ent))) ->(270.0 249.534 22.4144), queste sono le coordinate rispetto al sistema OCS,
che NON coincidono nè con quelle del WCS nè con quelle dell'UCS.

Inoltre questo sistema OCS ha l'asse Z diretto come il versore "Zdir" che non coincide nè con l'asse Z del WCS nè con quello dell'UCS ruotato, ma
ha coordinate misurate nel sistema UCS:
(setq Zdir (cdr (assoc 210 ent))) ->(1.36224e-017 -0.258819 0.965926)
-------

Possiamo però esprimere le coordinate del centro nei vari sistemi utilizzando la funzione (trans):

(trans centro 0 Zdir) -> da (270.0 235.23 86.2347) a (270.0 249.534 22.4144) trasformaz. delle coord. del centro da WCS a OCS

(trans centro Zdir 0) -> da (270.0 249.534 22.4144) a (270.0 235.23 86.2347) trasformaz. delle coord. del centro da OCS a WCS
----
oppure trovare una relazione fra gli assi Z dei 3 sistemi WCS, UCS, OCS.
(trans Zdir 0 Zdir) -> (0.0 0.0 1.0) restituisce l'asse Z di WCS

(trans Zdir 0 1) -> (1.36224e-017 -0.258819 0.965926) restituisce le componenti di Zdir di OCS nel sistema UCS

(trans '(0 0 0) 0 Zdir) -> (1.36224e-017 -0.258819 0.965926) restituisce le componenti di Z di WCS nel sistema OCS (è il reciproco del precedente)

Nota: seguirà una seconda parte con altre osservazioni.

Immagine inserita:

180,32 KB
7   U L T I M E    R I S P O S T E    (in alto le più recenti)
Terminator Inserito il - 13 dicembre 2011 : 17:52:06
Giusto un'integrazione all'ottima spiegazione di Jo.
In realtà l'analogo (assoc 210) dell'entget per il VisualLISP sarebbe (vla-get-Normal). E' il solito variant che tradotto dà lo stesso risultato di entget. Effettivamente il centro è nelle coordinate globali a differenza di entget.

Molto simile il discorso sulle lwpolyline. Anche qui abbiamo (vla-get-Normal) analogo ad (assoc 210), la lista di coordinate è però nell'UCS della lwpolyline a differenza del cerchio.

Per ottenere la direzione di estrusione per i cerchi e le lwpolyline:

(vlax-safearray->list
(vlax-variant-value
(vla-get-Normal
(vlax-ename->vla-object (car (entsel)))
)
)
)
aforza Inserito il - 13 dicembre 2011 : 15:04:31
chiedi a Conte, l'allenatore della juventus


ciao,

dai troppo finto......

Ciao
joseph Inserito il - 13 dicembre 2011 : 14:32:09
Ma è così comodo non averli!
Niente coiffeur, poco shampoo, niente pettine, sei sempre in ordine, anche quando ti togli il casco; ti arrabbi di meno, perchè non puoi metterti le mani nei capelli...e poi, non potendoti distrarre arruffandoti i capelli, sei molto più riflessivo, sicuramente più "riflettente".
Oddio! Gli UCS,OCS,WCS mi stanno dando alla testa, o saranno i dolci al liquore di S.Lucia?
Fine OT; torno alla normalità.
arri Inserito il - 13 dicembre 2011 : 12:41:59
Messaggio inserito da aforza
ma per i capelli se trovi qualcosa fammi sapere
perchè sono molto interessato....


chiedi a Conte, l'allenatore della juventus
aforza Inserito il - 13 dicembre 2011 : 12:33:15
Ciao,

per baffi e farfallino credo si possa risolvere ma per i capelli se trovi qualcosa fammi sapere
perchè sono molto interessato....


Ciao
joseph Inserito il - 13 dicembre 2011 : 11:57:55
Peccato! Mi mancano i baffi, i capelli, il farfallino ma per il resto è tutto a posto, comprese le maniche corte anche in inverno.
aforza Inserito il - 13 dicembre 2011 : 11:33:45
Ciao,

con simpatia e auguri natalizzzzzziiiiiiiiii

OTTIMO ESERCIZIO PROF

Immagine inserita:

6,8 KB

Ciao

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