Surface Filling/it: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
Line 30: Line 30:


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
Gli spigoli di base che formano il contorno chiuso, così come i vertici e gli spigoli ausiliari, possono appartenere a curve 2D di [[File:Workbench_Draft.svg|16px]] [[Part_Workbench/it|Draft]] o di [[File:Workbench_Sketcher.svg|16px]] [[Sketcher_Workbench/it|Sketcher]], ma possono anche appartenere a oggetti solidi 3D come quelli creati con [[File:Workbench_Part.svg|16px]] [[Part_Module/it|Part]] o [[File:Workbench_PartDesign.svg|16px]] [[PartDesign_Workbench/it|PartDesign]].
Gli spigoli di base che formano il contorno chiuso, così come i vertici e gli spigoli ausiliari, possono appartenere a curve 2D di [[File:Workbench_Draft.svg|16px]] [[Part_Workbench/it|Draft]] o di [[File:Workbench_Sketcher.svg|16px]] [[Sketcher_Workbench/it|Sketcher]], ma possono anche appartenere a oggetti solidi 3D come quelli creati con [[File:Workbench_Part.svg|16px]] [[Part_Workbench/it|Part]] o [[File:Workbench_PartDesign.svg|16px]] [[PartDesign_Workbench/it|PartDesign]].
</div>
</div>



Revision as of 19:35, 1 September 2021

Other languages:

Surface Filling

Posizione nel menu
Surface → Riempimento...
Ambiente
Surface|Version=0.17
Avvio veloce
Nessuno
Introdotto nella versione
-
Vedere anche
Nessuno

Descrizione

Surface Filling crea una superficie da una serie di bordi collegati.

La superficie può essere modificata aggiungendo bordi e vertici di vincolo attraverso i quali deve passare la superficie.

Esempio di una superficie riempita, delimitata da quattro spigoli situati nel piano XY; (a sinistra) solo i quattro bordi e (a destra) una curva aggiunta nello spazio che definisce la curvatura della superficie

Utilizzo

  1. Assicurarsi di avere almeno tre bordi o curve nello spazio che formano un contorno chiuso. I bordi possono essere creati con gli strumenti di Draft o di Sketcher. L'uso di tre bordi crea una superficie triangolare; quattro bordi una superficie quadrilatera.
    • Se è il caso, all'interno del contorno chiuso possono essere disegnate delle curve. Non è necessario che tocchino i bordi. Queste curve possono essere utilizzate per controllare la curvatura della superficie risultante.
    • Allo stesso modo, è possibile utilizzare un numero di vertici con lo stesso scopo per indicare dove deve passare la superficie.
  2. Premere il pulsante Surface filling.
  3. Nella sezione Boundary, premere Add edge.
  4. Usare il puntatore per selezionare i bordi desiderati nella vista 3D; viene visualizzata un'anteprima della forma finale dopo aver selezionato i bordi validi che formano un contorno chiuso.
    • Come opzione, andare alla sezione Curvature: non-boundary edges (bordi non di confine), premere Add edge, e selezionare i bordi desiderati nella vista 3D.
    • Come opzione, andare alla sezione Curvature: non-boundary vertices (vertici non di confine), premere Add vertex, e scegliere i vertici desiderati nella vista 3D.
  5. Premere OK per completare l'operazione.

Gli spigoli di base che formano il contorno chiuso, così come i vertici e gli spigoli ausiliari, possono appartenere a curve 2D di Draft o di Sketcher, ma possono anche appartenere a oggetti solidi 3D come quelli creati con Part o PartDesign.

Opzioni

  • Nella sezione Boundary:
    • Add edge: premere una volta per iniziare a selezionare i bordi Boundary edges nella vista 3D. Possono essere selezionati i bordi dritti come le polilinee di Draft e le polilinee di Sketcher, o i bordi curvi come le BSpline di Draft e le BSpline di Sketcher , così come qualsiasi bordo di oggetti solidi, come quelli di un Corpo e le Primitive di Part.
    • Remove edge: premere una volta per iniziare a selezionare i bordi nella vista 3D; questi bordi devono essere stati precedentemente selezionati con Add edge.
    • Right mouse button: aprire il menu contestuale e selezionare Remove, o premere Del sulla tastiera, per rimuovere il bordo attualmente selezionato nell'elenco.
  • Nella sezione Curvature: non-boundary edges; il pulsante Add edge è disponibile per selezionare bordi ausiliari (linee rette o B-Splines) per controllare la curvatura della superficie. La superficie sarà costretta a passare attraverso questi bordi ausiliari. Funziona meglio quando i bordi ausiliari si trovano all'interno della regione delimitata da Boundary edges.
  • Nella sezione Curvature: non-boundary vertices; simile a non-boundary edges, l'utente può selezionare vertici ausiliari per controllare la curvatura. Questi vertici possono essere indipendenti punti di Draft o punti di Part, o possono appartenere a qualsiasi bordo (linee rette o B-Splines) o essere un vertice in un oggetto solido. In questo caso, la superficie sarà vincolata a passare attraverso questi punti ausiliari.
  • Premere Cancel o Esc per interrompere l'operazione corrente.

Proprietà

Una Surface Filling (classe Surface::Filling) è derivato dalla base Part Feature (classe Part::Feature, attraverso la sottoclasse Part::Spline), quindi condivide tutte le proprietà di quest'ultima.

Oltre alle proprietà descritte in Part Feature, Surface Filling ha le seguenti proprietà nell'editor delle proprietà.

Dati

Filling

  • DatiBoundary Edges (LinkSubList): bordi di confine; C0 è richiesto per i bordi senza una faccia corrispondente.
  • DatiBoundary Faces (StringList):
  • DatiBoundary Order (IntegerList): ordine di vincolo sulle facce del contorno; sono possibili 0, 1, e 2.
  • DatiUnbound Edges (LinkSubList): bordi di vincoli non legati; C0 è richiesto per i bordi senza una faccia corrispondente.
  • DatiUnbound Faces (StringList):
  • DatiUnbound Order (IntegerList): ordine di vincolo sulle facce non legate; sono possibili 0, 1, e 2.
  • DatiFree Faces (LinkSubList): vincolo su una faccia libera.
  • DatiFree Order (IntegerList): ordine di vincolo sulle facce libere.
  • DatiPoints (LinkSubList): punti di vincolo sulla superficie.
  • DatiInitial Face (LinkSub): superficie iniziale da utilizzare.
  • DatiDegree (Integer): grado iniziale, il valore predefinito è 3.
  • DatiPoints On Curve (Integer): numero di punti su un bordo per vincolarlo.
  • DatiIterations (Integer): numero di iterazioni, il valore predefinito è 2.
  • DatiAnisotropy (Bool): il valore predefinito è false.
  • DatiTolerance2d (Float): tolleranza 2D, il valore predefinito è 0.0.
  • DatiTolerance3d (Float): tolleranza 3D, il valore predefinito è 0.0.
  • DatiTol Angular (Float): tolleranza G1, il valore predefinito è 0.01.
  • DatiTol Curvature (Float): tolleranza G2, il valore predefinito è 0.10.
  • DatiMaximum Degree (Integer): grado massimo della curva, il valore predefinito è 8.
  • DatiMaximum Segments (Integer): numero massimo di segmenti, il valore predefinito è 9.

Vista

Base

  • VistaControl Points (Bool): il valore predefinito è false; se impostato su true, mostrerà una sovrapposizione con i punti di controllo della superficie.

Limitazioni

Il codice di surface dal kernel di modellazione interno OpenCASCADE è fragile e non può gestire correttamente l'input sbagliato. Le seguenti situazioni possono causare problemi e causare il crash del programma, quindi dovrebbero essere evitate:

  • Aggiungere dei DatiBoundary Edges che comporterebbe diverse facce chiuse. In questo caso, questi bordi dovrebbero essere aggiunti come DatiUnbound Edges per controllare solo la curvatura.
  • Utilizzare DatiBoundary Edges parametrici (ad esempio, delle BSplines) che quando ricalcolate non riescono a produrre una regione chiusa. Cioè, i bordi da usare come DatiBoundary Edges devono sempre formare una forma chiusa, anche se le loro proprietà interne cambiano.

Script

Vedere anche: Script di base per FreeCAD

Lo strumento Surface Filling può essere utilizzato nelle macro e dalla console Python aggiungendo l'oggetto Surface::Filling.

  • I bordi da utilizzare per definire la superficie devono essere assegnati come LinkSubList alla proprietà BoundaryEdges dell'oggetto.
  • Gli spigoli ausiliari e i vertici devono essere assegnati come LinkSubLists alle proprietà UnboundEdges e Points dell'oggetto.
  • Tutti gli oggetti con bordi devono essere calcolati prima di poter essere utilizzati come input per le proprietà dell'oggetto Filling.
import FreeCAD as App
import Draft

doc = App.newDocument()

a = App.Vector(-20, -20, 0)
b = App.Vector(-18, 25, 0)
c = App.Vector(60, 26, 0)
d = App.Vector(33, -20, 0)

points1 = [a, App.Vector(-20, -8, 0), App.Vector(-17, 7, 0), b]
obj1 = Draft.make_bspline(points1)

points2 = [b, App.Vector(0, 25, 0), c]
obj2 = Draft.make_bspline(points2)

points3 = [c, App.Vector(37, 4, 0), d]
obj3 = Draft.make_bspline(points3)

points4 = [d, App.Vector(-2, -18, 0), a]
obj4 = Draft.make_bspline(points4)
doc.recompute()

surf = doc.addObject("Surface::Filling", "Surface")
surf.BoundaryEdges = [(obj1, "Edge1"),
                      (obj2, "Edge1"),
                      (obj3, "Edge1"),
                      (obj4, "Edge1")]
doc.recompute()

# ---------------------------------------------------------
points_spl = [App.Vector(-10, 0, 2),
              App.Vector(4, 0, 7),
              App.Vector(18, 0, -5),
              App.Vector(25, 0, 0),
              App.Vector(30, 0, 0)]
aux_edge = Draft.make_bspline(points_spl)
doc.recompute()

surf.UnboundEdges = [(aux_edge, "Edge1")]
doc.recompute()

# ---------------------------------------------------------
aux_v1 = Draft.make_line(App.Vector(-13, -12, 5),
                         App.Vector(-13, -12, -5))
aux_v2 = Draft.make_line(App.Vector(-3, 18, 5),
                         App.Vector(-3, 18, -5))
doc.recompute()

surf.Points = [(aux_v1, "Vertex2"),
               (aux_v2, "Vertex1")]
doc.recompute()