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
 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  

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 13 dicembre 2011 : 00:35:50  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
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

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 13 dicembre 2011 : 11:33:45  Mostra Profilo  Rispondi Quotando
Ciao,

con simpatia e auguri natalizzzzzziiiiiiiiii

OTTIMO ESERCIZIO PROF

Immagine inserita:

6,8 KB

Ciao

Andrea Forza

CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22"
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 13 dicembre 2011 : 11:57:55  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Peccato! Mi mancano i baffi, i capelli, il farfallino ma per il resto è tutto a posto, comprese le maniche corte anche in inverno.
Torna all'inizio della Pagina

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 13 dicembre 2011 : 12:33:15  Mostra Profilo  Rispondi Quotando
Ciao,

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


Ciao

Andrea Forza

CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22"
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 13 dicembre 2011 : 12:41:59  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Messaggio inserito da aforza
ma per i capelli se trovi qualcosa fammi sapere
perchè sono molto interessato....


chiedi a Conte, l'allenatore della juventus
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 13 dicembre 2011 : 14:32:09  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
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à.
Torna all'inizio della Pagina

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 13 dicembre 2011 : 15:04:31  Mostra Profilo  Rispondi Quotando
chiedi a Conte, l'allenatore della juventus


ciao,

dai troppo finto......

Ciao

Andrea Forza

CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22"
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 13 dicembre 2011 : 17:52:06  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
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)))
)
)
)
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 0,88 secondi.