Autore |
Discussione |
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
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
|
|
aforza
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
Inserito il - 13 dicembre 2011 : 11:33:45
|
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" |
|
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
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
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
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 |
Andrea Forza
CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22" |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
|
joseph
Utente Master
Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
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à.
|
|
|
aforza
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
Inserito il - 13 dicembre 2011 : 15:04:31
|
| 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" |
|
|
Terminator
Utente Master
725 Messaggi |
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))) ) ) ) |
|
|
|
Discussione |
|