sabato, marzo 08, 2014

Door Threshold External Command - Update


Questo il file DLL da sostituire a quello precedente, qui invece il codice sorgente.

If you are happy with my code you can show me some gratitude paying what you want on PayPal:

puntorevit@gmail.com

Grazie in modo particolare a Luca Vocella che ha contribuito con la sua esperienza a farmi ragionare su questo problema permettendomi di leggere il suo codice.
In effetti ho poi preferito prendere una strada diversa.
In particolare ho applicato il suo suggerimento per quanto riguarda l'estrapolazione degli Edge utilizzando la possibilità di RollBack delle transaction (ossia il poter eseguire dei comandi che modificano il database senza poi effettivamente finalizzarli, quindi usando il RollBack in luogo del Commit).
Quello che svolge il comando è semplice: l'utente deve selezionare le porte con una finestra di selezione e poi assegnare il tipo di pavimento nel form successivo.
Per ciascuna porta viene ricavato il muro host il quale viene abbassato di due piedi rispetto al suo livello attuale (potrebbe non funzionare se il punto di inserimento della porta è al di sotto di due piedi rispetto al livello) e vengono create due liste di curve: una contenente le curve corrispondenti agli edge del muro con la porta  (A), e l'altra contenente le curve corrispondenti agli edge del muro senza porta (B).
Questo proprio grazie al metodo di RollBack per cui si può cambiare il valore di offset dal livello di base del muro ed eliminare una porta solo per ricavare le informazioni sulle curve che servono senza di fatto cambiare veramente il modello, geniale non è vero?
La parte "difficile" è stata quella relativa alla restituzione delle curve relative alla sola porta: per ciascuna curva della lista A, si confronta il punto medio con ciascuno dei punti medi delle curve della lista B.
Se da questo confronto non c'è corrispondenza significa che la curva è relativa alla porta che si sta analizzando e se la quota Z del punto medio è uguale a quella del punto di inserimento della porta viene aggiunta alla lista C che verrà ordinata con l'algoritmo di Jeremy Tammik per poi creare il pavimento in una nuova transazione.




Nessun commento:

Posta un commento