Progetto Denominazione

From FreeCAD Documentation
Jump to: navigation, search
This page is a translated version of the page Naming project and the translation is 95% complete.

Other languages:
English • ‎español • ‎français • ‎italiano • ‎română

Questo modello contiene le linea guida per il progetto di sviluppo di FreeCAD. Esso segue le regole della metodologia Getting things done. I progetti sono raccolti nel Piano di sviluppo (Development roadmap).

Finalità e principi

Si tratta di un lavoro di sviluppo e progettazione per implementare un sistema di denominazione topologica robusta (persistente e coerente) in FreeCAD.

Maggiori dettagli sulla denominazione topologica in Problema di denominazione topologica.

Risultati

  1. Interfaccia in (Part::TopoShape) per referenziare in modo robusto le forme (nome) e le sotto-forme (facce, bordi, vertici) attraverso una stringa (nome dei sotto-elementi del tipo "Face1").

    Per fare questo bisogna fornire una interfaccia per Part::TopoShape con tutte le informazioni necessarie per produrre la Denimonazione (Naming), ad esempio, NewShape, con le informazioni addizionali di un algoritmo come le facce cancellate, i passaggi della modellazione (es. suddivisione in 2) e ...

  1. Associazione dei passaggi della modellazione con le facce o i bordi risultanti.

    Nel caso di un grande modello l'utente si perde se ha a che fare con centinaia di raccordi o di fori. Per questo motivo, se le facce o i bordi ricordano quale fase della modellazione le ha create, è possibile implementare che un doppio click sul bordo o sulla faccia apra l'operazione corrispondente!

  1. Algoritmo per mantenere coerente la denominazione nello storico della modellazione durante le modifiche, come la suddivisione di bordi o di facce e il movimento dei vertici

    NamingExample.jpg

  1. (opzional) Ottimizzare la struttura dei dati in memoria per mantenere in memoria solo le facce o i bordi modificati nelle operazioni di modellazione.

    Questo diventa importante quando i modelli diventano grandi. Non è efficace copiare la maggior parte della forma. E' molto più efficace condividere le facce o i bordi rimasti invariati nelle operazioni (Features) e copiare solo quello che viene modificato.

Riflessioni

Si è discusso molto nel post "Robust Reference" di jrheinlaender.

Altro

Letteratura & documentazione

  • J Kripac, "Un meccanismo per la denominazione persistente delle entità topologiche costantemente basata sullo storico dei modelli solidi parametrici"
Descrive un metodo per realizzare i primi tre punti della lista. Direi che è l'approccio utilizzato da Catia e OCC-TNaming. Almeno l'interfaccia sembra la stessa. Il documento non è disponibile per essere scaricato. Ho dovuto comprarlo. Se qualcuno è interessato posso inviarlo via e-mail.
Approccio interessante via shell-grafica, affronta il quarto punto della lista per il riutilizzo delle facce o dei bordi non modificati.
Panoramica molto buona e esempi
  • e alcune altre da aggiungere....

Sintesi del lavoro fino ad oggi

Questa è la sintesi del lavoro che è stato fatto per questo progetto fino al 13 giugno 2016:

  • jrheinlaender nel 2012 ha prodotto un sacco di codice basato essenzialmente sull'ambiente Schizzo per risolvere il "Riferimento Robusto"
  • ickby ha provato a incorporare alcuni codici di jrheinlaender in FreeCAD moderno. Questo post ha un link al suo repo GitHub.
  • Nel 2016, ezzieyguywuf ha rianimato il progetto di jrheinlaender e, successivamente, ha iniziato il suo. E' visibile qui
  • ezzieyguywuf ha messo a punto un programma di opencascade "leggero" per duplicare il problema della Denominazione Topologica e per testare le possibili soluzioni. Vedere il suo repo github qui
  • ezzieyguywuf ha incorporato il TNaming toolkit opencascade nel suo codice di test, e ha mostrato come questo potrebbe contribuire a risolvere alcuni dei problemi di Denominazione Topologica. Vedere il repo github

Organizzazione

Informazioni su TNaming

Vedere qui per un dignitoso rapporto sul repo GitHub di ezzieyguywuf. Ecco alcuni punti salienti:

  • opencascade's TNaming relies upon the TDF_Data data framework.
  • TDF_Data is a key component of the opencascade OCAF thing, but can be used independent of it
  • TDF_Data is essentially a tree in which data is added and then read at a later date
  • Whenever a TNaming_NamedShape attribute is added to a node on the TDF_Data tree, a TNaming_UsedShapes attribute is added to the root of the tree
    • NOTE: this TNaming_UsedShapes attribute is critical to the utility of the TNaming toolkit. It contains a history of all the TopoDS_Shape used during the 'history' of the part
  • TNaming_Builder is used to add information to the TDF_Data tree. It adds a TNaming_NamedShape to a given node on the tree, as well as updating the TNaming_UsedShapes database as necessary.
  • Any time the TopoDS_Shape is changed, it must be logged in the TDF_Data structure
    • Again, TNaming_Builder is used for this
    • See here in the opencascade documentation for a table listing what must be stored in the database. NOTE: this table appears to be incomplete. Some additional testing may need to be done
    • In short, any time the TopoDS_Shape is modified, any modified/generated/deleted features must be logged. For the most part, since we're dealing with solids, this means we must log the modified/generated/deleted Faces on the solid
  • The TNaming_Selector class is used to "select" a feature that is being tracked on the TDF_Data tree
    • a "selected" feature is one that opencascade's TNaming algorithm will maintain a constant reference to, regardless of topological changes

Azioni successive

  • Definire il campo di applicazione
  • Testare in Python
  • Interfaccia in Part::TopoShape (+ legami con Python)

Passi successivi (a partire dal 13 giugno 2016)

  1. Determinare se opencascade TNaming toolkit risolve completamente il problema della Denominazione Topologica in FreeCAD
    • Quali sono tutti i casi in cui la Denominazione Topologica è un problema?
    • Quali sono gli scenari complessi in cui questo approccio dovrà lavorare?
  2. Incorporare il codice di TNaming in FreeCAD
    1. Iniziare con un approccio essenziale, vale a dire creare un Cubo e un Cilindro, Fonderli, fare un Raccordo, e poi ridimensionare il cilindro. Il raccordo non deve muoversi
    2. Gradualmente aggiungere ulteriori funzionalità
  3. Determinare se TNaming è la soluzione a lungo termine
  4. O se TNaming non è la soluzione a lungo termine, trovare un modo per 'serializzare / deserializzare' i dati che TNaming utilizza per la persistenza tra le sessioni