Problema di denominazione topologica
Introduzione
Il problema di denominazione topologica in FreeCAD si riferisce al problema di una forma che cambia il suo nome interno dopo l'esecuzione di un'operazione di modellazione (estrusione, taglio, unione, smusso, raccordo, ecc.). Questo si riflette sulle altre funzioni parametriche che dipendono da quella forma e ha come conseguenze che le interrompe o le calcola in modo errato. Questo problema interessa tutti gli oggetti di FreeCAD, ma è particolarmente importante quando si costruiscono solidi con PartDesign e quando si quotano questi solidi con
TechDraw.
- In
PartDesign, se una funzione è supportata su una faccia (o bordo o vertice), la funzione può interrompersi se il solido sottostante cambia dimensione o orientamento, in quanto la faccia originale (o il bordo o vertice) può essere rinominata internamente.
- In
TechDraw, se una quota misura la lunghezza di un bordo proiettato, la quota potrebbe interrompersi se il modello 3D viene modificato, poiché modificando il bordo misurato i vertici possono essere rinominati.
Il problema di denominazione topologica è un problema complesso nella modellazione CAD che deriva dal modo in cui le routine interne di FreeCAD gestiscono gli aggiornamenti delle forme geometriche create con il kernel OCCT. Questo problema non è esclusivo di FreeCAD. È generalmente presente nei software CAD, ma la maggior parte degli altri software CAD dispone di euristiche per ridurre l'impatto del problema sugli utenti.
A partire da FreeCAD 0.19 sono in corso sforzi a livello di programmazione per migliorare la gestione interna delle forme al fine di ridurre l'impatto di questi problemi. L'algoritmo descritto nel thread del forum Topological Naming, My Take è progettato per ridurre gli interventi manuali, a volte risolvendo automaticamente i problemi e altre volte presentando una probabile soluzione, o almeno mostrare chiaramente la causa del problema. La prima versione stabile di FreeCAD che presenterà questo nuovo algoritmo sarà la 1.0. Nel corso del tempo, questo algoritmo verrà applicato a più parti di FreeCAD e nelle versioni successive verranno aggiunte ulteriori riparazioni automatiche e assistite.
Il problema di denominazione topologica influisce molto spesso e confonde i nuovi utenti di FreeCAD. In PartDesign, l'utente è invitato a seguire le migliori pratiche discusse nella pagina Editazione delle funzioni. Si consiglia vivamente l'uso di oggetti di riferimento come i piani ed i sistemi di coordinate locali per produrre modelli che non sono facilmente soggetti a tali errori topologici. In TechDraw, si consiglia all'utente di aggiungere le quote solo quando il modello 3D è completo e non sarà ulteriormente modificato.
Esempio
1. In PartDesign, creare un
Corpo, poi usare
Nuovo schizzo e selezionare il piano XY per disegnare lo schizzo di base; quindi eseguire un
Pad per creare un primo solido.
2. Selezionare la faccia superiore del solido precedente, quindi usare Nuovo schizzo per disegnare un altro schizzo; quindi eseguire un secondo pad.
![]() |
![]() |
3. Selezionare la faccia superiore dell'estrusione precedente e creare nuovamente uno schizzo e un pad.
4. Ora, fare doppio clic sul secondo schizzo e modificarlo in modo che la sua lunghezza sia lungo la direzione X; facendo questo si rigenera il secondo pad. Il terzo schizzo e il pad rimangono nello stesso posto.
![]() |
![]() |
5. A questo punto, fare nuovamente doppio clic sul secondo schizzo e regolarne i punti in modo che una parte di esso sia fuori dai limiti definiti dal primo pad. In questo modo, il secondo pad viene ricalcolato correttamente, tuttavia, guardando nella vista ad albero, nel terzo pad viene indicato un errore.
![]() |
![]() |
6. Rendendo visibile il terzo schizzo e pad, è chiaro che il calcolo del nuovo solido non è stato eseguito correttamente. Il terzo schizzo, invece di essere supportato dalla faccia superiore del secondo pad, appare in un posto strano, con la sua normale orientata verso la direzione X. Ciò si traduce in un pad non valido, in quanto questo pad sarebbe scollegato dal resto del Corpo, che non è consentito.
Il problema sembra essere che quando il secondo schizzo è stato modificato, la faccia superiore del secondo pad è stata rinominata da Face13
a Face14
. Il terzo schizzo è collegato a Face13
come era in origine, ma poiché questa faccia è ora sul lato (e non più in alto), lo schizzo segue il suo orientamento e ora è posizionato in modo errato.
![]() |
![]() |
7. Per risolvere il problema, il terzo schizzo deve essere nuovamente associato alla faccia superiore. Selezionare lo schizzo, fare clic sui puntini di sospensione (tre punti) accanto alla proprietà DatiMap Mode e scegliere di nuovo la faccia superiore del secondo pad. Quindi lo schizzo si sposta in cima al solido esistente e il terzo pad viene generato senza problemi.
![]() |
![]() |
La rimappatura di uno schizzo in questo modo può essere eseguita ogni volta che si verifica un errore di denominazione topologica, ma questo può essere noioso se il modello è complicato e vi sono molti schizzi che devono essere modificati.
Soluzione

Il Grafico delle dipendenze è uno strumento utile per osservare le relazioni tra i diversi corpi nel documento. L'utilizzo del flusso di lavoro di modellazione originale rivela la relazione diretta esistente tra gli schizzi e i pad. Come una catena, è facile vedere che questa dipendenza diretta è soggetta a problemi di denominazione topologica se uno qualsiasi dei collegamenti nella sequenza cambia.
Come spiegato nella pagina modifica delle feature, una soluzione a questo problema è supportare gli schizzi non sulle facce, ma sui piani principali dell'Origine del Corpo di PartDesign o sui piani di Riferimento collegati a quei piani principali. L'utilizzo dei piani di Riferimento per supportare un singolo schizzo, come descritto di seguito, in realtà non è necessario poiché lo schizzo stesso può essere collegato direttamente a un piano principale e dispone delle stesse opzioni di offset di un piano di Riferimento. Ma l'utilizzo dei piani di Riferimento può avere senso quando si posizionano più schizzi.
1. Selezionare l'origine del Corpo di PartDesign e accertarsi che sia visibile. Quindi selezionare il piano XY e fare clic su Piano di riferimento. Nella finestra di dialogo Offset di associazione, assegnargli un offset nella direzione Z in modo che il piano di riferimento sia complanare con la faccia superiore del primo pad.
2. Ripetere il processo ma questa volta aggiungere uno scostamento maggiore in modo che il secondo piano di riferimento sia complanare con la faccia superiore del secondo pad.
![]() |
![]() |
3. Selezionare il secondo schizzo, fare clic sui puntini di sospensione accanto alla proprietà DatiMap Mode, quindi selezionare il primo piano di riferimento. Il piano di riferimento è già sfalsato rispetto al piano XY del corpo, quindi per lo schizzo non è richiesto un ulteriore spostamento Z.
4. Ripetere il processo con il terzo schizzo e selezionare il secondo piano di riferimento come supporto. Di nuovo, non è necessario alcun ulteriore spostamento in Z.
5. Il grafico delle dipendenze ora mostra che gli schizzi ed i pad sono supportati dai piani di riferimento. Questo modello è più stabile in quanto tutti gli schizzi possono essere modificati essenzialmente indipendentemente l'uno dall'altro.
6. Fare doppio clic sul secondo schizzo e modificare la forma. Il secondo pad dovrebbe aggiornarsi immediatamente senza causare problemi topologici con il terzo schizzo e il terzo pad.
7. In effetti, ogni schizzo può essere modificato senza interferire con i pad degli altri. Fino a quando i pad hanno una lunghezza di estrusione sufficiente, in modo che si tocchino e formino un solido contiguo, l'intero corpo rimane valido.
Compromessi
L'aggiunta di oggetti di riferimento implica più lavoro per l'utente, ma alla fine produce modelli più stabili che sono meno soggetti al problema di denominazione topologica.
Naturalmente, gli oggetti di riferimento possono essere creati prima che vengano disegnati gli schizzi e vengano prodotti i pad. Questo può essere utile per visualizzare la forma e le dimensioni approssimative del corpo finale.
I piani di riferimento possono anche essere basati su altri piani di riferimento. Ciò crea una catena di dipendenze che potrebbe anche portare a problemi topologici; tuttavia, poiché i piani di riferimento sono oggetti molto semplici, il rischio di avere questi problemi è inferiore rispetto a quando viene utilizzata la faccia di un oggetto solido come supporto.
Gli oggetti di riferimento, punti, linee, piani, ed i sistemi di coordinate, possono anche essere utili come geometrie di riferimento, ovvero come ausili visivi per mostrare le funzioni principali del modello, anche se nessuno schizzo è direttamente collegato ad essi.
Algoritmo di denominazione topologica
L'algoritmo di denominazione topologica di Realthunder scelto per ridurre l'impatto di questo problema è stato ampiamente descritto come "soluzione al problema della denominazione topologica", che ha involontariamente indotto molti utenti a pensare che non sarà più utile utilizzare tecniche come datum, posizionamento esplicito di schizzi, e Modifica delle funzionalità per rendere i modelli più stabili. L'algoritmo non è destinato a correggere ogni errore introdotto dall'ambiguità della denominazione topologica. Piuttosto, ha tre scopi.
- Il primo e più importante scopo è, quando possibile, identificare i riferimenti interrotti da cambiamenti topologici e visualizzare un errore all'utente. Invece di dover eseguire una serie di operazioni per trovare la prima operazione che diverge dall'intento progettuale, l'operazione che modifica i nomi verrà normalmente contrassegnata con un errore, rendendo molto più semplice la correzione manuale dei problemi del modello introdotti dalle modifiche alle operazioni o parametri.
- A volte, FreeCAD sarà in grado di identificare una probabile correzione per un riferimento interrotto, in modo che quando l'utente corregge manualmente il riferimento interrotto contrassegnato, verrà presentato un candidato da accettare o modificare. Un esempio comune di ciò sono le operazioni di finitura come raccordi e smussi, in cui l'utente potrebbe dover modificare l'operazione e accettare la selezione della funzione di sostituzione proposta o modificarla per correggerla.
- In alcuni casi, FreeCAD sarà in grado di risolvere automaticamente il riferimento interrotto, poiché sono memorizzate informazioni sufficienti sul riferimento per avere un'elevata sicurezza che la sostituzione sia corretta. Ad esempio, quando si disegna direttamente su una faccia, l'algoritmo spesso (ma non sempre) riparerà correttamente il riferimento alla faccia quando la geometria sottostante viene modificata parametricamente. (Quando si modifica la struttura, ad esempio aggiungendo o eliminando operazioni nel mezzo di un Corpo di Part Design, questo tipo di riparazione automatica sarà meno probabile.) Tuttavia, FreeCAD lo farà solo se c'è elevata fiducia nella correttezza della riparazione, perché una riparazione automatica errata può riproporre il problema nuovamente dopo una successiva modifica. Prima di tutto, non fare del male.
L'obiettivo di FreeCAD 1.0 è che l'implementazione di questo algoritmo nella versione ufficiale di FreeCAD raggiunga una parità di funzionalità con il fork "Linkstage 3" di Realthunder, sul quale ha originariamente sviluppato l'algoritmo, al momento dell'inizio del lavoro di integrazione. Ci sono nuove funzionalità di FreeCAD che potrebbero utilizzare l'algoritmo ma ancora non lo fanno, e ci saranno sempre più opportunità per aggiungere correzioni candidate e riparazioni automatiche. Il lavoro iniziale ha fornito una "struttura" da utilizzare per questi ulteriori miglioramenti nel tempo, sia nel nucleo di FreeCAD che nei componenti aggiuntivi.
Link
- PartDesign Raccordo - Denominazione topologica
- Denominazione topologica, il mio punto di vista: una possibile soluzione, di realthunder.
- Progetto di denominazione topologica : idea per risolvere il problema, di ickby.
- Script di dati topologici
- Editazione delle funzioni : consigli alternativi per tecniche di modellazione stabili.
- Clarifying and expanding "Topological Naming Problem" documentation": Chiarimento delle aspettative per l'algoritmo di denominazione topologica di Realthunder scelto per FreeCAD 1.0.
Video
- Perché i miei modelli FreeCAD si rompono? - "Problema di denominazione topologica": Una spiegazione video dei problemi sottostanti al Problema di denominazione topologica
- FreeCAD è sostanzialmente danneggiato! - E adesso... Aiutami a decidere...: Un video di Maker Tales

- Getting started
- Installation: Download, Windows, Linux, Mac, Additional components, Docker, AppImage, Ubuntu Snap
- Basics: About FreeCAD, Interface, Mouse navigation, Selection methods, Object name, Preferences, Workbenches, Document structure, Properties, Help FreeCAD, Donate
- Help: Tutorials, Video tutorials
- Workbenches: Std Base, Assembly, BIM, CAM, Draft, FEM, Inspection, Material, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework
- Hubs: User hub, Power users hub, Developer hub
- Pages: Insert Default Page, Insert Page using Template, Update template fields, Redraw Page, Print All Pages, Export Page as SVG, Export Page as DXF
- Views:
- TechDraw views: Insert View, Insert Broken View, Insert Section View, Insert Complex Section View, Insert Detail View, Insert Projection Group, Insert Clip Group, Insert SVG Symbol, Insert Bitmap Image, Share View, Turn View Frames On/Off, Project Shape
- Views from other workbenches: Insert Active View, Insert Draft Workbench Object, Insert BIM Workbench Object, Insert Spreadsheet View
- Stacking: Move view to top of stack, Move view to bottom of stack, Move view up one level, Move view down one level
- Dimensions: Insert Dimension, Insert Length Dimension, Insert Horizontal Dimension, Insert Vertical Dimension, Insert Radius Dimension, Insert Diameter Dimension, Insert Angle Dimension, Insert 3-Point Angle Dimension, Insert Area Annotation, Create Arc Length Dimension, Insert Horizontal Extent Dimension, Insert Vertical Extent Dimension, Create Horizontal Chain Dimensions, Create Vertical Chain Dimensions, Create Oblique Chain Dimensions, Create Horizontal Coordinate Dimensions, Create Vertical Coordinate Dimensions, Create Oblique Coordinate Dimensions, Create Horizontal Chamfer Dimension, Create Vertical Chamfer Dimension, Insert Balloon Annotation, Insert Axonometric Length Dimension, Insert Landmark Dimension, Dimension Repair, Link Dimension to 3D Geometry
- Hatching: Hatch Face using Image File, Apply Geometric Hatch to Face,
- Annotations: Insert Annotation, Add Leaderline to View, Insert Rich Text Annotation, Add Cosmetic Vertex, Add Midpoint Vertices, Add Quadrant Vertices, Add Centerline to Faces, Add Centerline between 2 Lines, Add Centerline between 2 Points, Add Cosmetic Line Through 2 points, Add Cosmetic Circle, Change Appearance of Lines, Show/Hide Invisible Edges, Add Welding Information to Leader, Add Surface Finish Symbol, Add Hole or Shaft Tolerances
- Extensions:
- Attributes and modifications: Select Line Attributes, Cascade Spacing and Delta Distance, Change Line Attributes, Extend Line, Shorten Line, Lock/Unlock View, Position Section View, Position Horizontal Chain Dimensions, Position Vertical Chain Dimensions, Position Oblique Chain Dimensions, Cascade Horizontal Dimensions, Cascade Vertical Dimensions, Cascade Oblique Dimensions, Calculate the area of selected faces, Calculate the arc length of selected edges, Customize format label
- Centerlines and threading: Add Circle Centerlines, Add Bolt Circle Centerlines, Add Cosmetic Thread Hole Side View, Add Cosmetic Thread Hole Bottom View, Add Cosmetic Thread Bolt Side View, Add Cosmetic Thread Bolt Bottom View, Add Cosmetic Intersection Vertex(es), Add an offset vertex, Add Cosmetic Circle, Add Cosmetic Arc, Add Cosmetic Circle 3 Points, Add Cosmetic Parallel Line, Add Cosmetic Perpendicular Line
- Dimensions: Insert '⌀' Prefix, Insert '□' Prefix, Insert 'n×' Prefix, Remove Prefix, Increase Decimal Places, Decrease Decimal Places
- Miscellaneous: Remove Cosmetic Object
- Additional: Line Groups, Templates, Hatching, Geometric dimensioning and tolerancing, Preferences
- Structure tools: Part, Group
- Helper tools: Create body, Create sketch, Attach sketch, Edit sketch, Validate sketch, Check geometry, Create a shape binder, Create a sub-object(s) shape binder, Create a clone, Create a datum plane, Create a datum line, Create a datum point, Create a local coordinate system
- Modeling tools:
- Additive tools: Pad, Revolution, Additive loft, Additive pipe, Additive helix, Additive box, Additive cylinder, Additive sphere, Additive cone, Additive ellipsoid, Additive torus, Additive prism, Additive wedge
- Subtractive tools: Pocket, Hole, Groove, Subtractive loft, Subtractive pipe, Subtractive helix, Subtractive box, Subtractive cylinder, Subtractive sphere, Subtractive cone, Subtractive ellipsoid, Subtractive torus, Subtractive prism, Subtractive wedge
- Boolean: Boolean operation
- Dress-up tools: Fillet, Chamfer, Draft, Thickness
- Transformation tools: Mirrored, Linear Pattern, Polar Pattern, Create MultiTransform, Scaled
- Extras: Sprocket, Involute gear, Shaft design wizard
- Context menu: Set tip, Move object to other body, Move object after other object, Appearance, Color per face
- Preferences: Preferences, Fine tuning
- Primitives: Box, Cylinder, Sphere, Cone, Torus, Tube, Create primitives, Shape builder
- Creation and modification: Create sketch, Extrude, Revolve, Mirror, Scale, Fillet, Chamfer, Make face from wires, Ruled Surface, Loft, Sweep, Section, Cross sections, 3D Offset, 2D Offset, Thickness, Projection on surface, Color per face
- Boolean: Make compound, Explode compound, Compound Filter, Boolean, Cut, Union, Intersection, Connect objects, Embed object, Cutout for object, Boolean fragments, Slice apart, Slice to compound, Boolean XOR, Check geometry, Defeaturing
- Other tools: Import CAD file, Export CAD file, Box selection, Create shape from mesh, Create points object from geometry, Convert to solid, Reverse shapes, Create simple copy, Create transformed copy, Create shape element copy, Refine shape, Attachment
- Preferences: Preferences, Fine tuning