FreeCAD Logo FreeCAD 1.0
  • English Afrikaans Arabo Bielorusso Catalano Czech German Greek Spanish Spanish Basco Finnish Filippino Français Galiziano Croatian Hungarian Indonesiano Italiano Japanese Kabyle Coreano Lituano Dutch Norvegese Bokmal Polish Portuguese Portuguese Romanian Russian Slovak Slovenian Serbo Swedish Turkish Ukrainian Valenziano Vietnamita Cinese Cinese
  • Funzioni
  • Download
  • Blog
  • Documentazione
    Indice di documentazione Per iniziare Documentazione utenti Il manuale FreeCAD Documentazione degli ambienti di lavoro Documentazione di scripting Python Documentazione codice C++ Tutorial Domande frequenti Politica sulla Privacy Informazioni Su FreeCAD
  • Contribuire
    Come aiutare Sponsor Segnala un bug Fai una richiesta Opportunità di lavoro e ricompense Linee guida per contribuire Manuale degli sviluppatori Traduzioni
  • Comunità
    Codice di condotta Forum The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Calendario
  • ♥ Donate

Donate

$
Informazioni SEPA
Si prega di intestare il bonifico SEPA a:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Agenzia bancaria: BNP Paribas Fortis
Indirizzo: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Creazione di uno SketchObject utilizzando Python

Creiamo uno SketchObject come questo:

import FreeCAD as App
import Part
import Sketcher

doc = App.newDocument()  

sketch = doc.addObject("Sketcher::SketchObject", "Sketch")
sketch.addGeometry(Part.LineSegment(App.Vector(1.2, 1.8, 0),
                                    App.Vector(5.2, 5.3, 0)), False)
sketch.addGeometry(Part.LineSegment(App.Vector(6.5, 1.5, 0),
                                    App.Vector(10.2, 5.0, 0)), False)
sketch.addGeometry(Part.LineSegment(App.Vector(12.2, 1.0, 0),
                                    App.Vector(15.4, 5.0, 0)), False)

doc.recompute()

Aggiunge inoltre tre linee nello Sketch appena creato.

Creare un vincolo usando Python

Un vincolo geometrico e può essere creato da una macro e dalla console Python utilizzando il seguente comando:

sketch.addConstraint(Sketcher.Constraint(ConstraintType, EdgeOrPartOfEdge…))

Un vincolo dimensionale e lo speciale refraction constraint può essere creato da macro e dalla console Python utilizzando il seguente comando:

sketch.addConstraint(Sketcher.Constraint(DimensionalConstraintType, EdgeOrPartOfEdge…, App.Units.Quantity("float_value unit")))

per esempio

sketch.addConstraint(Sketcher.Constraint(DimensionalConstraintType, EdgeOrPartOfEdge…, App.Units.Quantity("123.0 mm")))

Il primo argomento ConstraintType è descritto di seguito in Tipi di vincoli.

Un vincolo può accettare fino a sei argomenti, che sono spigoli o indicano quale sottoparte di uno spigolo viene utilizzata dal vincolo. Consultare la documentazione dei singoli vincoli per i dettagli sulle combinazioni di spigoli e sottoparti di spigoli che possono essere passate come argomenti. Il problema principale di questa funzione è identificare correttamente il numero di linea e il numero di vertice delle linee che si desidera elaborare. Le sezioni seguenti descrivono come identificare la numerazione di una linea e come identificare la numerazione delle sottoparti di una linea.

Tipi di vincoli

Per i vincoli geometrici, il primo argomento è uno dei seguenti. Consultare la pagina delle funzionalità corrispondente per le possibili combinazioni di argomenti consentite per ciascun vincolo.

Codice Icona Funzione
"Coincident" Vincolo Coincidente
"PointOnObject" Vincolo Punto-Su-Oggetto
"Vertical" Vincolo Verticale
"Horizontal" Vincolo Orizzontale
"Parallel" Vincolo Parallelo
"Perpendicular" Vincolo Perpendicolare
"Tangent" Vincolo Tangente/Collineare
"Equal" Vincolo Uguale
"Symmetric" Vincolo Simmetrico
"Block" Vincolo Blocco

Per i vincoli dimensionali, il primo argomento è uno dei seguenti. Consultare la pagina delle funzionalità corrispondente per le possibili combinazioni di argomenti consentite per ciascun vincolo.

Codice Icona Funzione
"DistanceX" Distanza Orizzontale
"DistanceY" Distanza Verticale
"Distance" Distanza
"Radius" Raggio
"Diameter" Diametro
"Angle" Angolo
"AngleViaPoint" Angolo

I vincoli di rifrazione si comportano come vincoli dimensionali ai fini della creazione di script. Anche in questo caso, consultare la pagina delle funzionalità corrispondente per le possibili combinazioni di argomenti consentite per ciascun vincolo.

Codice Icona Funzione
"SnellsLaw" Vincolo rifrazione

Il vincolo di blocco posizione è un comando GUI che crea un vincolo distanza orizzontale e un vincolo distanza verticale, non è un vincolo a sé stante.

Identificare la numerazione di una linea

Sono state disegnate tre linee come mostrato nella figura seguente.

Spostando il cursore del mouse sopra la linea è possibile vedere il numero della linea in basso a sinistra della finestra di FreeCAD, vedere la figura successiva.

Sfortunatamente la numerazione visualizzata nelle finestre di FreeCAD inizia da 1, mentre la numerazione delle linee utilizzate per lo script inizia da 0: questo significa che bisogna sottrarre uno ogni volta che si vuole fare riferimento a una linea.

I numeri positivi indicano i bordi dello schizzo (linee rette, cerchi, coniche, B-spline e così via). I seguenti valori possono essere utilizzati per indicare elementi che non sono bordi dello schizzo:

  • -1 indica l'asse orizzontale x
  • -2 indica l'asse verticale y
  • -n indica il numero dell'elemento geometrico esterno n-3 (ad esempio, l'elemento geometrico esterno con indice 0 nell'elenco appiattito sketch.ExternalGeometry sarebbe indicato da -3, l'elemento successivo nell'elenco svolto sarebbe -4 e così via).

Identificare la numerazione delle sottoparti di una linea

Per specificare quale parte di una linea è interessata da un vincolo, è possibile utilizzare i seguenti valori:

  • 0 per indicare che il vincolo interessa l'intero bordo.
  • 1 per indicare che il vincolo interessa il punto iniziale del bordo (un cerchio completo non ha un punto iniziale).
  • 2 per indicare che il vincolo interessa il punto finale del bordo.
  • 3 per indicare che il vincolo interessa il punto centrale del bordo. Può essere utilizzato solo per cerchi, archi circolari, ellissi e archi ellittici.
  • n per indicare che il vincolo interessa l'n-esimo polo di una B-spline.

I vertici indicati con 1 e 2 sono numerati in base al loro ordine di creazione. Per scoprire l'ordine della loro creazione (se hai molte linee, non puoi ricordare quale vertice hai creato per primo), devi semplicemente spostare il cursore del mouse sopra i due vertici di una linea, vedi figura seguente.

Se si leggono ad esempio 4 e 5, significa che il vertice con il numero più basso (4 in questo esempio) verrà referenziato utilizzando il numero 1 (primo nel comando script) e il vertice con il numero più alto (5 in questo esempio) verrà referenziato utilizzando il numero 2 nel comando script.

Esempio

Prendiamo l'esempio precedente delle tre linee. La figura successiva indica la numerazione di ciascuna linea e dei relativi vertici secondo la convenzione di scripting.

testo blu: numerazione delle linee, testo nero: numerazione dei vertici

Il comando sketch.addConstraint(Sketcher.Constraint("Coincident", 1, 2, 2, 1)) produce il seguente risultato:

Il codice completo per disegnare le tre linee e aggiungere un vincolo Coincidente su due punti da due linee è il seguente:

import FreeCAD as App
import Part
import Sketcher

doc = App.newDocument()  

sketch = doc.addObject("Sketcher::SketchObject", "Sketch")
sketch.addGeometry(Part.LineSegment(App.Vector(1.2, 1.8, 0),
                                    App.Vector(5.2, 5.3, 0)), False)
sketch.addGeometry(Part.LineSegment(App.Vector(6.5, 1.5, 0),
                                    App.Vector(10.2, 5.0, 0)), False)
sketch.addGeometry(Part.LineSegment(App.Vector(12.2, 1.0, 0),
                                    App.Vector(15.4, 5.0, 0)), False)
sketch.addConstraint(Sketcher.Constraint("Coincident", 1, 2, 2, 1))

doc.recompute()


Questa pagina è recuperata da https://wiki.freecad.org/Sketcher_scripting

Tieniti aggiornato!
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

© The FreeCAD Team. Homepage image credits (top to bottom): ppemawm, r-frank, epileftric, regis, rider_mortagnais, bejant.

Questo progetto è supportato da: , KiCad Services Corp. e altri sponsor

GitHubMigliora questa pagina su GitHub