Manual/ro

From FreeCAD Documentation
Jump to navigation Jump to search

Aceasta est o schiță de Manual de FreeCAD în limba română.

Cuprinde părțile esențiale Pagina principală a documentației wiki (Legăturile în roșu nu sunt valide). Aici este pagina principală a Help on-line. Acest manual este special destinat printării ca o carte. Conținutul poate să se schimbe, urmând mersul modificărilor aduse de către contributori pe wiki (Aceste pagini nu au link-uri directe).

Un salt de pagină este prevăzut după fiecare rubrică. Mascați sau nu Cuprinsul, înainte de printare puteți verifica afișarea prin "Previzualizare".


Freecadsplash017.png




Generalități despre FreeCAD

Freecad default.jpg

FreeCAD este un soft de modelare parametrică 3D și face parte din marea familie a software CAD . Dezvoltarea este în întregime Open Source Open Source (LGPL License)(licences GPL et LGPL). FreeCAD and este orientat spre inginerie mecanică mechanical engineering și proiectarea de produse product design, dar vizează de asemenea și alte domenii de activitate inginerească (ca arhitectura, construcțiile în general, navele, robotica, etc).

Caracteristicile instrumentelor FreeCAD sunt similare cu Catia, SolidWorks sau Solid Edge, și de aceea intră în categoria MCAD, PLM, CAx și CAE. Este un feature based parametric modeler cu o arhitectură software modulară care facilitează furnizarea de funcționalități suplimentare fără a modifica sistemul central.

Ca și multe alte modelatoare moderne 3D CAD modelers are multe componente 2D pentru a schița forme 2D sau pentru a extrage detaliile de proiectare de la modelul 3D pentru a crea desene de producție 2D, desen 2D direct.(like AutoCAD LT) nu este focalizat nici pe animație sau forma organice (ca de exemplu Maya, 3ds Max, Blender or Cinema 4D), în ciuda adaptabilității sale largi, FreeCAD poate fi mult mai util într-o paletă largă dea domenii decât în prezent.

FreeCAD utilizează din greu toate bibliotecile mari open source care există în domeniul Scientific Computing. Printre ele sunt OpenCascade, a powerful CAD kernel, Coin3D, o încarnare a Open Inventor, Qt, the world-famous UI framework, and Python, una dintre cele mai bune limbaje de scripting disponibile. FreeCAD în sine poate fi folosit ca o bibliotecă de alte programe.

FreeCAD este de asmenea plin de multi-platform, și rulează în mod curent fără probleme pe sistemele Windows și Linux / Mac OSX, având exact același aspect și funcționalitate pe toate platformele.

Pentru mai multe informații despre capabilitățile FreeCAD, aruncați o privire laFeature list, the latest release notes or the Getting started articles, or see more screenshots.

Despre proiectul FreeCAD

Proiectul FreeCAD a început tocmai din anul 2001, după cum se descrie pagina sa de istorie history .

FreeCAD este menținută și dezvoltată de o comunitate de dezvoltatori și utilizatori entuziaști (vezi pagina contributors). Ei lucrează pe FreeCAD în mod voluntar, în timpul lor liber. Ei nu pot garanta că FreeCAD va conține toți v-ați dori, dar de obicei ei vor face tot ce pot! Comunitatea se adună pe forumul FreeCAD, unde se discută majoritatea ideilor și deciziilor. Simțiți-vă liber să vă alăturați!

Aceasta pagina prezinta o mare parte dintre funcționalitățile FreeCAD. Daca doriti sa priviti in viitor vizitati pagina de planificare. Pagina de screenshot-uri va poate face o iede rapida despre capabilitati.

Descrierea versiunilor

Funcționalități importante

  • Feature1.jpg
    O tehnologie completă bazată pe nucleu geometric al Open CASCADE e care permite operații 3D complexe pe tipuri complexe de forme, cu suport nativ pentru concepte precum BRep, curbe Nurbs si suprafețe, o gama largă de entitățti geometrice, operatiuni logice, suport pentru integrat pentru formatele STEP și IGES.
  • Feature3.jpg
    Un model parametric complet. Toate obiectele FreeCAD sunt parametrizate, ceea ce inseamna ca forma lor poate depinde de proprietati sau de alte obiecte, cu modificarile calculate la cerere si inregistrate in stiva undo/redo. Tipuri noi de obiecte pot fi adaugate cu usurinta si sunt programabile in Python.
  • Feature4.jpg
    Arhitectura modulara ce permite modulelor sa adauge noi functionalitati la pachetul de baza. Extensiile pot fi complexe, precum intregi aplicatii programate in C++, sau simple, precum script-uri Python sau macroinstructiuni inregistrate automat. Utilizatorul are control complet asupra interpretorului Python continut, asupra macroinstructiunilor si script-urilor externe si asupra componentelor FreeCAD: crearea si transformarea geometriei, representarea in 2D sau 3D a geometriei sub forma de grafice sau chiar interfata grafica
  • Feature7.jpg
    Editarea schitelor cu constrangeri, permitand schitarea formelor 2D constranse ca si geometrie. E posibila crearea catorva tipuri de geometrii constranse precum si imbinarea lor.
  • Feature9.jpg
    Simulator de roboti ce permite studierea miscarilor robotilor. Modulul are deja o interfata grafica extinsa, permitand realizarea intregului flux in mod grafic.
  • Feature8.jpg
    Foi de desen ce permit crearea de vizualizari 2D ale desenului 3D pe o foaie. Acest modul produce foi SVG sau PDF gata de a fi exportate. Acest modul este in lucru, dar are deja implementata functionalitatea Python.
  • Feature-raytracing.jpg
    Modulul de Afisare poate exporta obiectele 3D pentru a fi folosite de programe externe. Singurul format suportat in prezent este povray, dar alte formate sunt planificate pentru viitor.
  • Feature-arch.jpg
    Modulul Arhitectural permite lucrul folosing pasii BIM compatibil cu IFC. Comunitatea a dezbatut aprins detaliile modlului in forum.

Funcționalități generale:

  • FreeCAD este Multi-platformă. Rulează și se comportă la fel pe platformele: Windows, Linux si MacOS.
  • FreeCAD este o aplicație grafică. FreeCAD are o interfață bazată pe librariile Qt, cu vizualizari 3D bazate pe Open Inventor, permițând viteze mari de randarea a scenelor 3D ți o prezentare accesibilă a componentelor scenelor.
  • FreeCAD e disponibil de asemena în modul linie de comandă, folosind foarte puține resurse de memorie. In modul linie de comandă FreeCAD rulează fără componentele de interfață grafică dar cu toate uneltele geometrice. In acest context, poate fi folosit ca si server pentru a produce conținut util altor aplicatii.
  • FreeCAD poate fi încorporat ca și modul Python in alte aplicatii capabile sa ruleze module Python, inclusiv in interpretorul Python implicit. Ca si în modul consolă, interfața grafică FreeCAD
este nedisponibilă, dar uneltele geometrice sunt accesibile.
  • Conceptul de Workbench: În interfața grafica FreeCAD uneltele sunt grupate în ateliere (workbench), ceea ce permite afișarea instrumentelor strict necesare la indeplinirea unui obiectiv, lăsând interfața ordonată și responsiva si permitand aplicației sa se încarce rapid.
  • Arhitectura modulara cu plug-in-uri pentru incarcarea intarziata a componentelor si tipurilor de date. FreeCAD este impartit in functionalitate centrala si module ce sunt incarcate in memorie doar la nevoie. Aproape toate uneltele si tipurile geometrice sunt localizate in module. Acestea se comporta precum plug-in-urile si pot fi adaugate sau indepartate dintr-un pachet FreeCAD instalat.
  • Asociativitatea obiectelor pe baza parametrilor: Toate obiectele dintr-un document FreeCAD pot fi definite de parametri. Acestia pot fi modificati si recalculati oricand. Relatiile dintre obiecte sunt de asemenea stocate, astfel ca modificare unui obiect atrage dupa sine modificarea obiectelor dependente.
  • Crearea de primitive (cutie, sfera, cilindru, etc), expandare (normal sau in mod Jung/Shin/Choi) sau operatiuni logice (adauga, intersecteaza, taie).
  • Operatii de modificare grafică precum translații, rotații, scalari, copiere in oglindă, expandare, (trivial or after Jung/Shin/Choi) convertirea formei în orice plan sau în spațiul 3D
  • Creare grafica pentru geometrie planară simplă precum linii, polilinii, dreptunghiuri, b-splines, circular or elliptic arce în orice plan sau în spațiul 3D.
  • Modelarea folosind extruziuni, sectiuni si panglici, in linie dreapta sau prin rotatie.
  • Componente topologice precum varfuri, margini, polilinii si planuri (folosind de asemenea script-uri Python).
  • Unelte de testare si reparare a retelelor: pentru solide, tools for meshes: solid test, test non-two-manifolds, autointersectie, umplere goluri si orientare uniforma.
  • Notatii precum text liber sau dimensiuni
  • Undo/Redo Toate operatiunile pot fi inlaturate sau redate individual sau in pasi multipli.
  • Managementul tranzactiilor: stiva undo/redo stocheaza tranzactii in document si nu actiuni individuale permitand fiecarui component sa aleaga ce trebuie sa fie modificat la undo/redo.
  • Script incorporat: FreeCAD contine un interpretor Python si API (functii) ce acopera aproape toate componentele aplicatiei, interfata, geometria si reprezentarea acesteia in vizualizarile 3D. Interpretorul poate rula atat comenzi simple cat si rutine complexe; exista module intregi ce au fost programate in intregime in Python.
  • Consola Python incorporata cu sintaxa evidentiata, completare automata si explorator de clase; comenzile Python pot fi adresate direct in FreeCAD si afiseaza rezultatul imediat, permitand celor ce utilizeaza scripturi sa testeze functiile, sa exploreze continutul modulelor si sa invete usor arhitectura FreeCAD.
  • Acțiunile utilizatorului sunt afișate în consolă: Tot ce face utilizatorul se traduce în cod Python, care poate fi printat la consolă sau înregistrat ca și macroinstrucțiuni.
  • Inregistrarea si editarea macroinstructiunilor: Comenzile Python issued when the user manipulates the interface pot fi inregistrate, editate dacă e nevoie, și salvate pentru a fi reproduse mai târziu.
  • Format de fisier modular bazat pe ZIP: Documentele salvate cu extensia .fcstd pot contine un mare numar de informatii diferite precum: geometrie, script-uri sau previzualizari. The .fcstd file is itself a zip container, so a saved FreeCAD file has already been compressed.
  • Interfata grafica pe de-a-ntregul configurabila. Interfata bazata pe Qt este accesibila interpretorului Python. Pe langa functii simple furnizate de modulul FreeCAD central, intreaga interfata este si ea accesibila, permitand orice operatii asupra aparentei: creare, adaugare, andocare, modificare si indepartare a ferestrelor si barelor de instrumetne.
  • Thumbnailer (doar pentru sisteme Linux în acest moment): iconițele pentru documentele FreeeCAD prezintă conținutul fișierului în majoritatea programelor de management, precum Nautilus in Gnome.
  • Instalare MSI modulara permite instalarea flexibila pe sisteme Windows. Pentru Ubuntu au fost pregatite de asemenea pachete de instalare.

In lucru

  • Feature-assembly.jpg
    Un modul de asamblare ce permite lucrul cu mai multe proiecte, forme, documente, fisiere, relatii... This module is currently in planning state.

Extra Workbenches

Power users have created various custom external workbenches.


Instalarea

Instalarea sub Windows


Cea mai usoară cale de instalare sub Windows este de a descărca unul dintre programele de instalare de mai jos.

Windows.png Windows 32 bit (sha256)

Windows.png Windows 64 bit (sha256)


Dupa ce fișierul .msi (Microsoft Installer) a fost descarcat, doar faceți dublu-click pe el pentru a începe instalarea.

Mai jos sunt descrise opțiunile de instalare. Daca pare complicat nu va ingrijorați! Cei mai mulți utilizatori nu vor avea nevoie de nimic mai mult decat fișierul de mai sus .msi și articolul Primii pasi!

Instalare Simpla Folosind Microsoft Installer

Cea mai ușoară cale de instalare a FreeCAD sub Windows este de a folosi programul descărcabil de instalare de mai sus. Aceasta pagina descrie modul de folosire și funcționalitățile programului Microsoft Installer pentru a accesa mai multe opțiuni de instalare.

The easiest way to install FreeCAD on Windows is by using the downloadable installer bundle above. This page describes the usage and features of the NSIS Installer for more installation options.

Daca doriți sa descărcați versiunea pe 64 de biți sau versiunea aflată acum în dezvoltare (care ar putea fi instabilă) vizitați pagina de descărcări.

Chocolatey

However, it is highly recommended that you use a package manager such as Chocolatey to keep your software updated. You can installed Chocolatey following these instructions and then open a PowerShell terminal as admin and run:

choco install freecad

every once in a while you can update your software with

choco upgrade freecad

to get the latest version available on Chocolatey repository. If there are any issues with the chocolatey package, you may contact maintainers on this page.

Instalare de la Consola de Comandă

Cu ajutorul utilitarului linie de comandă "msiexec.exe", sunt disponibile funcții suplimentare, cum ar fi instalarea non-interactivă și instalarea ca administrator. Vedeți exemplele de mai jos.

With the msiexec.exe command line utility, additional features such as non-interactive installation and administrative installation are available. See examples below.

Instalarea Automată

Folosind comanda:

With the command line

msiexec /i FreeCAD<version>.msi

instalarea poate fi inițiată programat. Parametrii suplimentari pot fi transmiși la sfârșitul liniei de comandă, de exemplu:

msiexec /i FreeCAD-2.5.msi TARGETDIR=R:\FreeCAD25

Interfața Limitată

Numărul de ferestre de dialog permise utilizatorului poate fi controlat cu grupul de optiuni /q, astfel:

The amount of user control permitted by the installer can be controlled with /q options:

  • /qn - fără interfață
  • /qb - interfață minimală - o fereastră ce indica doar progresul având butonul Cancel
  • /qb! - precum/qb, dar fără butonul "renunță" (Cancel)
  • /qr - interfață redusă - prezintă toate ferestrele dar nu solicită intervenția utilizatorului

(sare peste toate dialogurile modale)

  • /qn+ - precum /qn, dar afișează mesajul "Completed" la sfârșit
  • /qb+ - precum /qb, dar afișează mesajul "Completed" la sfârșit

Directorul Țintă

Proprietatea TARGETDIR determină locația de instalare a FreeCAD. De exemplu o locație se specifică folosind

The property TARGETDIR determines the root directory of the FreeCAD installation. For example, a different installation drive can be specified with

TARGETDIR=R:\FreeCAD25

Implicit TARGETDIR este [WindowsVolume\Programm Files\]FreeCAD<versiune>.

Instalarea Pentru Toti Utilizatorii

Adaugand

Adding

ALLUSERS=1

determină o instalare utilizabilă de către toți utilizatorii. În mod implicit, o instalare non-interactivă (/ i) face ca pachetul să poată fi utilizat numai de utilizatorul curent (cel care efectuează instalarea); o instalare interactivă prezintă un dialog care implică "toți utilizatorii" dacă utilizatorul care realizează instalarea are suficiente drepturi de administrare.

Selectarea Caracteristicilor

Un numar de caracteristici pot fi alese pentru instalare, reinstalate sau indepartate. Cracteristicile ce pot fi selectate pentru FreeCAD sunt:

A number of properties allow selection of features to be installed, reinstalled, or removed. The set of features for the FreeCAD installer is

  • DefaultFeature - instaleaza pachetul software propriu-zis și nucleul de librării utilizate
  • Documentation - instalează documentația
  • Source code - instalează codul sursă
  • ... ToDo

In plus, optiunea ALL activeaza toate caracteristicile. Toate componentele depind de DefaultFeature, astfel ca instalarea oricarei alteia va instala si caracteristicile implicite. Urmatoarele variabile controleaza caracteristicile instalate sau inlaturate:

  • ADDLOCAL - lista componentelor ce vor fi instalate în sistem
  • REMOVE - lista componentelor ce vor fi înlaturate din calculatorul local
  • ADDDEFAULT - lista componentelor adăugate în configurare implicită (local pentru toate funcționalitățile FreeCAD)
  • REINSTALL - lista componentelor ce vor fi reinstalate/reparate
  • ADVERTISE - lista funcționalităților care se instalează public

Pentru restul de proprietati disponibile consultati documentatia MSDN disponibila on-line.

Pe baza celor spuse mai sus, adaugand

ADDLOCAL=Extensions

programul va instala interpretatorul si va inregistra extensiile dar nu instaleaza nimic altceva.

Dezinstalarea

Folosind

With

msiexec /x FreeCAD<version>.msi

FreeCAD poate fi dezinstalat. Daca fisierul .msi nu este disponibil pachetul poate fi dezinstalat folosind codul prodsului sau pachetului. Codul produsului poate fi aflat exminand proprietatile scurtaturii Uninstall pe care FreeCAD o instaleaza in meniul Start.

Instalare în rețea

Folosind

With

msiexec /a FreeCAD<version>.msi

o instalare "administrativa" (in retea) poate fi realizata. Fisierele sunt extrase in directorul tinta (care trebuie sa fie un director de retea), dat nici o alta modificare nu este adusa calculatorului local. In plus, un fisier .msi (de dimensiuni reduse) este generat in directorul tinta. Utilizatorii calculatorului tinta pot folosi apoi fisierul .msi generat pentru instalare (e posibil ca versiunile viitoare sa ofere posibilitatea stocarii unor fisiere in directorul de retea (comun)).

Pentru instalarea administrativa nu exista interfata grafica, astfel ca directorul de retea trebuie specificat la linia de comanda.

Nu există nici o procedură de dezinstalare specifică pentru o instalare de administrator - doar ștergeți directorul țintă în cazul în care nici un client nu-l mai folosește.

Publicitate

Folosind

With

msiexec /jm FreeCAD<version>.msi

ar fi posibil, în principiu, sa "publicam" FreeCAD la un calculator (cu /ju la un utilizator). Acest lucru ar face pictogramele să apară în meniul de start și extensiile să fie înregistrate, fără ca software-ului sa fie instalat. Prima utilizare a unei funcționalități ar conduce la instalarea sa.

Instalatorul FreeCAD acceptă în prezent doar "publicitate" pentru intrări in meniul Start, nu și pentru comenzi rapide.

Instalare Automata pe un Grup de Calculatoare

Folosind Windows Group Policy este posibil sa se instaleze FreeCAD automat pe un grup de calculatoare. Pentru a face asta urmați următorii pași:

  1. Autentificați-vă în controlller-ul de domeniu
  2. Copiați fișierul MSI intr-un director partajat la care au acces toate calculatoarele
  3. Deschideți "Active Directory users and computers"
  4. Navigați la grupul de calculatoare pe care se instalează FreeCAD
  5. Deschideți Proprietăț
  6. Deschideți Politici de Grup
  7. Adaugati o noua politica și editați-o
  8. In Configurări Calculator/Instalare soft selectați Nou/Pachet
  9. Selectați fișierul MSI folosind calea de rețea
  10. Puteți opta ca FreeCAD să fie dezinstalat dacă părăsește rețeaua

With Windows Group Policy, it is possible to automatically install FreeCAD on a group of machines. To do so, perform the following steps:

  1. Log on to the domain controller
  2. Copy the MSI file into a folder that is shared with access granted to all target machines.
  3. Open the MMC snapin "Active Directory users and computers"
  4. Navigate to the group of computers that need FreeCAD
  5. Open Properties
  6. Open Group Policies
  7. Add a new policy, and edit it
  8. In Computer Configuration/Software Installation, choose New/Package
  9. Select the MSI file through the network path
  10. Optionally, select that you want FreeCAD to be de-installed if the computer leaves the scope of the policy.

Acest mod de instalare durează ceva timp, de obicei. Pentru finalizarea instalării toate calculatoarele trebuiesc repornite.

Instalarea in Linux folosind Crossover Office

Versiunea de FreeCAD pentru Windows poate fi instalată pe un sistem Linux folosind CXOffice 5.0.1. Rulați comanda msiexec de la linia de comandă CXOffice. Presupunând că pachetul de instalare se află în directorul "soft" pe discul "Y:":

msiexec /i Y:\\software\\FreeCAD<version>.msi
msiexec /i Y:\\software\\FreeCAD<version>.msi

FreeCAD rulează dar s-a raportat că interfața OpenGL nu funcționează, la fel ca și în cazul altor programe rulate sub Wine, de exemplu Google SketchUp.

Instalarea sub Unix/Linux

Instalarea FreeCAD pe cel mai binecunoscut sistem linux este sustinuta de comunitate si FreeCAD ar trebui sa fie accesibil direct folosind managerul de pachete disponibil in fiecare distributie. Echipa FreeCAD furnizeaza si un numar de pachete "oficiale" cand sunt produse versiuni noi si un numar de locatii (PPA repository) pentru testarea celor mai noi modificari/functionalitati.

Odata FreeCAD instalat este timpul pentru primii pasi!

Ubuntu și sistemele bazate pe Ubuntu

Multe distribuții Linux se bazează pe Ubuntu și partajează depozitele sale. Pe lângă variantele oficiale (Kubuntu, Lubuntu și Xubuntu), există distribuții non-oficiale, cum ar fi Linux Mint, Voyager și altele. Opțiunile de instalare de mai jos trebuie să fie compatibile cu aceste sisteme.

Depozite oficiale de Ubuntu

FreeCAD este disponibil din depozitele Ubuntu și poate fi instalat prin intermediul Centrului de software sau cu această comandă într-un terminal:

sudo apt install freecad

Dar există șanse ca această versiune stabilă să fie depășită și să nu aibă cele mai recente caracteristici. Pentru a obține ultima versiune, vă rugăm să folosiți PPA.

Stable PPA with GUI

Pentru a instala FreeCAD utilizând PPA, din interfața grafică, urmați acele instrucțiuni. Comunitatea FreeCAD oferă o

Trebuie să adăugați la sursele software ale sistemului următoarele PPA. Pentru aceasta, navigați la Centrul de software Ubuntu> Edit> Software sources> Other software. Faceți clic pe adăugați, copiați și urmați codul de mai jos:

ppa:freecad-maintainers/freecad-stable
  • Add the source, close the dialog, and reload your software sources, if asked.

Actualizați sursele de software, dacă vi se solicită acest lucru. Acum puteți găsi și instala ultima versiune FreeCAD stabilă în Centrul de software Ubuntu.

Stable PPA with console

Tastați sau copy-paste aceste comenzi într-o consolă pentru a adăuga PPA:

sudo add-apt-repository ppa:freecad-maintainers/freecad-stable

Nu uitați să preluați actualizările listelor de pachete:

sudo apt update

Apoi, instalați FreeCAD împreună cu documentația:

sudo apt install freecad freecad-doc

Note: due to packaging problems, in certain versions of Ubuntu the freecad-doc package has collided with the installation of FreeCAD or one of its dependencies; if this is the case, remove the freecad-doc package, and only install the freecad package. If the freecad-doc package doesn't exist, then ignore it.

Once you have the stable PPA added to your sources, the freecad package will install this PPA version over the one provided by the Ubuntu Universe repository. You can see the available versions with apt-cache.

apt-cache policy freecad
freecad:
  Installed: (none)
  Candidate: 2:0.18.4+dfsg1~201911060029~ubuntu18.04.1
  Version table:
     2:0.18.4+dfsg1~201911060029~ubuntu18.04.1 500
        500 http://ppa.launchpad.net/freecad-maintainers/freecad-stable/ubuntu bionic/main amd64 Packages
     0.16.6712+dfsg1-1ubuntu2 500
        500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
ubuntu@ubuntu:~$ apt-cache policy freecad-doc

Executați această comandă pentru a deschide versiunea stabilă a FreeCAD:

freecad

Daily PPA with console

Dacă doriți să instalați ultima versiune instabilă a FreeCAD, utilizați PPA numit"freecad-daily" PPA repository on Launchpad. Astfel puteți accesa ultimile ameliorări ale dezvoltării FreeCAD. Acest PPA este compilat automat zilnic de la depozitul oficial al FreeCAD. Acesta va conține, de obicei, numeroase corecții de erori și actualizări ale funcțiilor.

This version is compiled daily from the official master repository. Please beware that although it will contain new features and bug fixes, it may also have newer bugs, and be unstable.

Pentru PPA zilnic:

sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
sudo apt-get update
sudo apt-get install freecad-daily

Every day you can update to the latest daily:

sudo apt-get update
sudo apt-get install freecad-daily

Note: in some cases new code or dependencies added to FreeCAD will cause packaging errors; if this happens, a daily package may not be generated until the maintainers manually fix the problems. If you wish to continue testing the latest code, you should get the source code and compile FreeCAD directly; for instructions see compiling.

Executați această comandă pentru a deschide versiunea zilnică a FreeCAD:

freecad-daily

Note: it is possible to install both the -stable and -daily packages in the same system. This is useful if you wish to work with a stable version, and still be able to test the latest features in development. Notice that the executable for the daily version is freecad-daily, but for the stable version it is just freecad.

Debian și alte sisteme înrudite

Începând cu Debian Lenny, FreeCAD este disponibil direct din depozitele de software Debian și poate fi instalat în mod sinaptic sau pur și simplu cu:

sudo apt-get install freecad

OpenSUSE

FreeCAD se poate instala folosind comanda:

For installing of stable releases, please visit for a survey:

Survey of stable repositories on openSUSE


Generally for selecting the correct openSUSE distribution needed it is necessary to click on the particular view button.

The stable package version of FreeCAD could be found under:

Stable repositories on openSUSE

The correct openSUSE distribution version must be selected in the lower part of the web page.

FreeCAD is typically installed with YAST (abbr. Yet another Setup Tool) the Linux operating system setup and configuration tool, or in any terminal (root rights required) with:

zypper install FreeCAD

This procedure only covers the installation of officially released stable FreeCAD program versions, depending on the installed links to the program package repositories of your OS.

To check out the latest development releases (unstable) you have to visit:

Unstable repositories on openSUSE

It is recommended to grab the binary packages directly. Then select the correct distribution for your installed openSUSE OS.

Gentoo

FreeCAD se construieste si instaleaza folosind comanda:

emerge freecad

Fedora

FreeCAD a fost inclus în pachetul oficial al Fedora packages începând cu Fedora 20. Acesta paote fi instlat de la linia de comandă cu:

sudo dnf install freecad

În edițiile mai vechi ale Fedora, acesta era:

sudo yum install freecad

Managerul vizual al pachetului poate fi cde asemenea utilizat. Căutați pentru "

"freecad".

Versiunea oficială a pachetului de lansare Fedora tinde să fie mult în urma versiunilor FreeCAD.Package: freecad arată versiunile incluse în depozitele Fedora în decursul timpului și al versiunilor.

Versiuni mai actuale pot fi obținute prin descărcarea unuia dintre .AppImage ediții din depozitul github. Acestea funcționează bine sub Fedora.

Dacă doriți să țineți cont de cele mai recente realizări zilnice, FreeCAD este, de asemenea, disponibil copr. Pentru a instala build-ul de acolo, într-o sesiune pe terminal, introduceți:

sudo dnf copr enable @freecad/nightly
sudo dnf install freecad

Asta pleacă din copr depozit activ, deci

sudo dnf upgrade

sau echivalent, se va actualiza la cea mai recentă construcție FreeCAD, împreună cu actualizările de la oricare dintre celelalte repo-uri active. Dacă vrei ceva mai stabil, poți dezactiva @freecad/nightly după instalarea inițială. copr repozitoriul se bazează numai pe cele din ultimele 2 săptămâni. Aceasta nu este o soluție dacă doriți să alegeți o versiune mai veche.

Instrucțiunile sunt de asemenea disponibile pe compile FreeCAD yourself, inclusiv un script specific pentru Fedora. Cu o schimbare minoră, pentru a finaliza comiterea specifică de la git, orice versiune din moment ce despre FreeCAD 0.15 poate fi construită pe orice distribuție de la Fedora 21.

Arch

Installing FreeCAD on Arch Linux and derivatives (ex. Manjaro):

pacman -S freecad

Altele

Daca sistemul pe care lucrați are FreeCAD dar nu este listat aici informati-ne folosind forumul!

Numeroase pachete alternative, neoficiale sunt disponibile pe net, de exemplu pentru sisteme precum slackware sau fedora. O căutare pe net relevă numeroase rezultate.

Instalare manuală pe sisteme bazate pe Debian

Daca, dintr-un oarecare motiv, nu puteti folosi una dintre metodele listate mai sus puteți oricând descărca unul dintre pachetele .deb packages disponibile in pagina de descarcari. Linux.png Ubuntu 32/64bit AppImage-logo.png AppImage 64bit

Odată pachetul .deb descărcat, daca aveți pachetul Gdebi instalat (de obicei este), tot ce trebuie să faceți este să navigați la locul descarcării și sa faceți dublu-click. Dependențele vor fi rezolvate automat de pachetul de management al softurilor. Alternativ pachetul poate fi instalat folosind linia de comandă, folosind :

sudo dpkg -i Name_of_your_FreeCAD_package.deb

Desigur Numele_pachetului_FreeCAD trebuie inlocuit cu numele fișierului descărcat.

După instalarea FreeCAD o iconiță va apărea în secțiunea "Grafica" din meniul de start.

Instalarea pe alte sisteme Linux/Unix

Multe distribuții comune Linux includ acum un FreeCAD precompilat ca parte a pachetelor standard. Acest lucru este deseori depășit, dar este un loc pentru a începe. Verificați administratorii standard de pachete pentru sistemul dvs. Una din lista următoare (parțială) a comenzilor ar putea instala versiunea oficială a FreeCAD pentru distro dvs. de la terminal. Acestea probabil au nevoie de privilegii de administrator.

apt-get install freecad
dnf install freecad
emerge freecad
slackpkg install freecad
yum install freecad
zypper install freecad

Numele pachetului este sensibil la minuscule, deci încercați `FreeCAD`, precum și` freecad`. Dacă aceasta nu funcționează pentru dvs., fie pentru că managerul de pachete nu are disponibilă o versiune FreeCAD precompilată, fie pentru că versiunea disponibilă este prea veche pentru nevoile dvs., puteți încerca să descărcați una dintre .AppImage

eliberări din depozitul github. Acestea tind să lucreze la cele mai multe distribuții linux de 64 biți, fără o instalare specială. Doar asigurați-vă că fișierul descărcat este marcat ca executabil, apoi executați-l.

Dacă aceasta încă nu este suficient de bună și nu puteți localiza o altă sursă a unui pachet precompilat pentru situația dvs., va trebui să compilați compile FreeCAD yourself.

Instalarea versiunii pentru Windows in Linux

A se vedea pagina Instalarea in Windows.

Instalarea sub Mac

FreeCAD poate fi instalat in Mac OS X intr-un singur pas folosind programul de instalare.

Stable.pngMac.png MacOS 10.11 El Capitan 64-bit (sha256)


and the nightly build can be downloaded from

Nightly.pngNightly 19_pre (sha256)

However, it is highly recommended to use a package manager such as HomeBrew to keep your software updated. Instructions to install HomeBrew can be seen here. When HomeBrew installed you can simply install FreeCAD through your bash terminal with

brew cask install freecad

and to upgrade the software to the latest version available on HomBrew Cask you may run

brew cask upgrade freecad

If there are any issues with the HomeBrew Cask formula you may report here.

Această pagină descrie utilizarea și caracteristicile instalatorului FreeCAD. De asemenea, include instrucțiuni de dezinstalare. După ce ați instalat, puteți get started!

Instalarea simpla

Programul de instalare FreeCAD este furnizat ca pachet app (.app) inclus în fișierul imagine

a disk ului.

The FreeCAD installer is provided as a app package (.app) enclosed in a disk image file.

Cea mai recenta versiune se poate descarca din pagina de Download. Odata descarcat fisierul imagine al disk ului, apoi glisați-l în Application folder sau orice alt folder doriți

Mac installer 1.png

Et voila! Faceți doar click pe app pentru a lansa FreeCAD. Dacă întâlniți acest mesaj "FreeCAD can't be open as it is from unidentified developer. " Deschideți folderul (Application) și click dreapta pe app apoi click deschideți și acceptați deschiderea applicației.

Dezinstalarea

Încă nu există un program de dezinstalare pentru FreeCAD. Pentru a înlătura complet programul și toate componentele instalate trageți următoarele fișiere și directoare în coșul de Gunoi:

  • In /Applications:
    • FreeCAD

Asta-i tot.

Introducere în FreeCAD

Arrow-left.svg Previous: Install on Mac

Cuvânt înainte

FreeCAD este o aplicaţie parametrică de modelare CAD/CAE. A fost creată în principal pentru desen tehnic, dar de asemenea serveşte tuturor nevoilor de modelare a unor obiecte 3D, cu precizie maximă şi control asupra etapelor de modelare.


FreeCAD se află încă în stadii incipiente de dezvoltare, și oferă o listă largă (și în dezvoltare) de features. Unele capabilități lipsesc încă comparativ cu soluțiile comerciale și le puteți găsi insuficient dezvoltate pentru a le utiliza în mediul industrial. Cu toate acestea, există o comunitate de utilizatori etuziaști community , și puteți găsi deja many examples de proiecte de calitate dezvoltate cu FreeCAD.

Ca toate proiectele open source, proiectul FreeCAD nu este doar o modalitate de a lucra pentru dezvoltatorii săi. Depinde mult de comunitatea sa să crească, să câștige experiență și să se stabilizeze (să se fixeze bug-urile). Nu uitați acest lucru când începeți să utilizați FreeCAD, dacă vă place, puteți influența direct proiectul help!

Instalare

Mai întâi de toate, descărcați și instalați FreeCAD. Consultați pagina Download pentru informații despre versiunile și actualizările curente și pagina Installing pentru instrucțiuni de instalare. Există pachete de instalare gata pentru Windows (.msi), Debian și Ubuntu (.deb), openSUSE (.rpm) și Mac OSX. FreeCAD este disponibil la administratorii pachetelor de la mai multe distribuții Linux. Este disponibil și un executabil standalone AppImage, care va funcționa pe cele mai recente sisteme Linux pe 64 de biți. Deoarece FreeCAD este open-source, poți descărca și codul sursă și compila pe tine însuți.

Explorarea aplicației FreeCAD

FreeCAD interface.png
  1. Vederea 3D, afișează conținutul documentului
  2. Vizualizarea arborescentă, care prezintă ierarhia și istoricul construcțiilor tuturor obiectelor din document
  3. properties editor, care vă permite să vizualizați și să modificați proprietățile obiectelor selectate,
  4. Vizualizarea raportului (sau fereastra de ieșire), în care FreeCAD imprimă mesaje, avertismente și erori
  5. Consola python, în care sunt tipărite toate comenzile executate de FreeCAD și unde puteți introduce codul python
  6. workbench selector, unde selectați atelierul de lucru activ

Conceptul principal din spatele interfeței FreeCAD este că este separat în ateliere. Un Atelier de lucru este o colecție de instrumente pentru o anumită sarcină, cum ar fi plase/rețele de discretizare meshes, sau desen 2D objects, sau constrained sketches. Puteți schimba atelierul de lucru curent cu selectorul de bibliotecă de lucru (6). Poți customize Instrumentele incluse în fiecare atelier de lucru, adăugați unelte de la alte ateliere de lucru sau chiar unelte create de noi, pe care le numim macros. Punctele de pornire utilizate pe scară largă sunt PartDesign Workbench and Part Workbench.

Când porniți FreeCAD pentru prima dată, vi se prezintă centrul de pornire. Iată cum arată acesta pentru versiunea 0.16

Startcenter0.16 screenshot.jpg

Pentru FreeCAD 0.17 vedeți asceasta start center screenshot.

Pagina de Start vă permite să vă îndreptaţi rapid către unul atelierele obişnuite, să deschideţi fişierele folosite recent sau să citiţi cele mai noi ştiri din lumea FreeCAD. Puteţi schimba atelierul implicit cu opţiunea Preferinţe din meniul "Editare".

Navigarea în spatiul 3D

FreeCAD vă oferă mai multe moduri de navigare cu mouse-ul diferite, ceea ce schimbă felul în care mouse-ul Dvs. interacţionează cu obiectele reprezentate 3D şi cu însuşi felul de vizualizare. Unul dintre ele este făcut anume pentru touchpads, unde nu se foloseşte butonul din mijloc. Următorul tabel descrie modul implicit, numit Navigare CAD (puteţi schimba rapid modul de navigare curent prin clic cu butonul drept pe un o porţiune goală din spaţiul 3D):

Selectare Translatie Zoom Rotire
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
pentru selectie pentru translatie pentru a mari sau micsora pentru a roti vizualizarea
Apasati butonul stanga al mouse-ului deasupra obiectului de selectat. Apasarea tastei CTRL permite selectarea mai multor obiecte. Apasati butonul din mijloc si miscati mouse-ul pentru a translata vizualizarea. Folositi rotita mouse-ului pentru a mari sau micsora. Apasati mai intai butonul din mijloc al mouse-ului, tineti-l apasat si apasati butonul stanga al mouse-ului si mutati-l in directia dorita. Functioneaza ca o bila ce se roteste in jurul centrului. Daca eliberati butoanele inainte de a inceta miscarea vizualizarea va continua sa se roteascain jurul centrului, daca aceasta caracteristica e activata. Dublu-click folosind butonul mijlociu pe oricare parte a unui obiect seteaza noul centru de rotatie si panorameaza pe acest punct.


Select Pan Zoom Rotate view
First method
Rotate view
Alternate method
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse MMB+RMB hold.svg
Press the left mouse button over an object you want to select.

Holding down Ctrl allows the selection of multiple objects.

Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor.

Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation.

Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method.

Ctrl+Mouse RMB.svg Ctrl+Shift+Mouse RMB.svg Shift+Mouse RMB.svg
Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17

Holding down Ctrl allows the selection of multiple objects. |Pan_text=Hold the middle mouse button, then move the pointer. |Pan_mode_text=Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 |Zoom_text=Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor. |Zoom_mode_text=Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 |Rotate_view_text=Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation. |Rotate_view_mode_text=Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17 |Rotate_view_alt_text=Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method. }}

Exista moduri de vizualizare predefinite (de sus, din fata, etc) ce se schimba folosind meniul Vizualizare, comenzile din bara de unelte Vizualizare sau scurtaturile numerice (1, 2, etc...) . Făcând clic dreapta pe un obiect sau pe o zonă goală a vizualizării 3D, aveți acces rapid la unele operații comune, cum ar fi setarea unei anumite vizualizări sau localizarea unui obiect în vizualizarea tip Arbore.

Primii paşi în FreeCAD

Aplicația FreeCAD este de a vă permite să realizați modele 3D de înaltă precizie, să păstrați controlul strict al acestor modele (să reveniți la istoricul de modelare și să modificați parametrii) și să construiți aceste modele (prin imprimare 3D, prelucrare CNC sau chiar în construcții civile). Prin urmare, este foarte diferit de alte aplicații 3D realizate în alte scopuri, cum ar fi filmul de animație sau jocurile de noroc. Curba de învățare poate fi abruptă, mai ales dacă acesta este primul dvs. contact cu modelarea 3D. Dacă vă înpotmoliți într-un anumit moment, nu uitați că există o comunitate prietenoasă a utilizatorilor de pe forumul FreeCAD care ar putea să vă aducă în cel mai scurt timp pe linia de plutire.

Atelierul pe care îl veți utiliza în FreeCAD depinde de tipul de lucru pe care trebuie să-l faceți: Dacă intenționați să lucrați pe modele mecanice sau, mai general, la orice obiecte la scară redusă, probabil veți dori să încercați PartDesign Workbench. Dacă veți lucra în 2D, atunci veți comuta pe Draft Workbench, sau pe Sketcher Workbench dacă aveți nevoie de constrângeri. Dacă veți dori să faceți construcții civile, atunci lansați Arch Workbench. Dacă lucrați cu proiectarea navelor , există un atelier specializat pentru dvs Ship Workbench. Iar dacă veniți din lumea OpenSCAD, încercați atelierul OpenSCAD Workbench..

Puteți comuta atelirele în orice moment, și de asemenea customize atelierul favorit pentru a adăuga scule de la alte atelire.

Folosirea panourilor Proiectare componente (PartDesign) şi Schiţă

Atelierul PartDesign Workbench a fost creat special pentru a făuri obiecte complexe, pornind de la forme simple, prin adăugarea sau înlăturarea unor piese (pe care le numim "funcţii"), până la obţinerea obiectului în final. Toate funcţiile aplicate pe parcursul procesului de modelare sunt păstrate într-o mică fereastră numită Vizualizare Combo, care conţine şi celelalte obiecte din documentul Dvs. Practic, un obiect realizat cu "Proiectare componente" reprezintă o succesiune de operaţii, fiecare aplicată la lucrul produs în faza precedentă, astfel încât ele formează un lanţ prelung. În "Vizualizare Combo", vedeţi obiectul finalizat, dar el poate fi expandat astfel încât să-i regăsiţi toate stările precedente, să le modificaţi parametrii, schimbări care vor actualiza în mod automat aspectul final al obiectului.

Atelierul PartDesign utilizează intens un alt atelier de lucru, Sketcher Workbench. vă permite să desenați figuri 2D, care sunt definite prin aplicarea Constrângerilor la forma 2D. De exemplu, puteți trage un dreptunghi și puteți seta dimensiunea unei părți aplicând o constrângere de lungime pe una din laturi. Această parte nu mai poate fi redimensionată (cu excepția cazului în care constrângerea este modificată).

Aceste forme 2D realizate cu sketcher-ul sunt folosite foarte mult în bara de lucru PartDesign, de exemplu pentru a crea volume 3D sau pentru a desena zone pe fețele obiectului dvs. care vor fi apoi scoase din volumul principal. Acesta este un flux de lucru tipic PartDesign:

  1. Creați o schiță nouă
  2. Desenați o formă închisă (asigurați-vă că toate punctele sunt legate)
  3. Închideți schița
  4. Extindeți schița într-un solid 3D utilizând instrumentul de blocare
  5. Selectați o față a solidului
  6. Creați o a doua schiță (de data aceasta va fi desenată pe fața selectată)
  7. Desenați o formă închisă
  8. Închideți schița
  9. Creați un buzunar din a doua schiță, pe primul obiect

Care vă dă un obiect ca acesta:

Partdesign example.jpg

În orice moment, puteți selecta schițele originale și le puteți modifica sau puteți schimba parametrii de extrudare ai operațiilor de blocare sau buzunar, care vor actualiza obiectul final.

Lucrând cu atelierele Desen 2D și Arhitectură

Atelierele Draft Workbench și Arch Workbench se comporta un pic diferit fata de celelalte ateliere de mai sus, deși urmează aceleași reguli, care sunt comune tuturor FreeCAD-urilor. Pe scurt, în timp ce Sketcher și PartDesign sunt create în primul rând pentru a proiecta piese unice, Draft și Arch sunt făcute pentru a vă ușura munca atunci când lucrați cu mai multe obiecte mai simple.

Atelierul Draft Workbench vă oferă instrumente 2D cumva similare cu ceea ce puteți găsi în aplicațiile tradiționale 2D CAD cum ar fiAutoCAD. Totuși, desenarea 2D fiind departe de domeniul FreeCAD, nu vă așteptați să găsiți acolo o gamă completă de instrumente care oferă aceste aplicații dedicate. Majoritatea instrumentelor de proiectare funcționează nu numai într-un plan 2D, ci și în întreg spațiul 3D și beneficiază de sisteme speciale de ajutor, cum ar fi Work planes și object snapping.

Atelierul Arch Workbench adaugă BIM tools to FreeCAD, permițându-vă să construiți modele arhitecturale cu obiecte parametrice. Baza de lucru Arch se bazează extensiv pe alte module cum ar fi Draft și Sketcher. Toate instrumentele de proiectare sunt de asemenea prezente în Atelierul de lucru Arch și majoritatea instrumentelor Arch utilizează sistemele Helper desen 2D (Draft).

Un flux de lucru tipic cu atelierele de lucru Arch și Draft ar putea fi:

  1. Desenați câteva linii cu ajutorul instrumentului Draft Line
  2. Selectați fiecare linie și apăsați instrumentul Perete pentru a construi un perete pe fiecare dintre ele
  3. Alăturați pereții selectând-i și apăsând instrumentul Arch Add
  4. Creați un obiect tip pardoseală și mutați pereții în el din vizualizarea Arbore
  5. Creați un obiect construit și mutați podeaua în el din vizualizarea Arbore
  6. Creați o fereastră făcând clic pe instrumentul Fereastră, selectați o presetare în panoul său, apoi faceți clic pe o față a unui perete
  7. Adăugați cotele prin setarea inițială a planului de lucru, dacă este necesar, apoi utilizând instrumentul Draft Dimension

Ceea ce vă va aduce asta:

Arch workflow example.jpg

Mai mult în pagina Tutorials.

Script

Freecad, as an open source software, offers the possibility to supplement its workbenches with addons.

The Addon principle is based on the development of a workbench complement. Any user can develop a function that he or she deems to be missing for her/his own needs or, ultimately, for the community. With the forum, the user can request an opinion, help on the forum. It can share, or not, the object of its development according to copyright rules to define. Free to her/him. To develop, the user has available scripting functions.

There are two types of addons:

  1. Macros: short snippets of Python code that provide a new tool or functionality. Macros usually start as a way to simplify or automate the task of drawing or editing a particular object. If many of these macros are collected inside a directory, the entire directory may be distributed as a new workbench.
  2. External workbenches: collections of tools programmed in Python or C++ that extend FreeCAD in an important way. If a workbench is sufficiently developed and is well documented, it may be included as one of the base workbenches in FreeCAD. Under External workbenches, you'll find the principle and a list of existing library.

Scripting

Iar, la sfârşit, să remarcăm că una dintre cele mai puternice caracteristici ale FreeCAD este mediul creat de script-programare. De la consola integrata Python (sau oricare alt script extern Python) se poate controla aproape orice parte a programului, se pot crea si modifica geometrii, se poate modifica reprezentarea obiectelor in scena 3D sau accesa si modifica interfata FreeCAD. Script-urile Python pot fi folosite si in macroinstructiuni, ceea ce furnizeaza o metoda usoara de creare a comenzilor personalizate.

Ce e nou

Lucrul cu FreeCAD

Navigarea 3D

Contents

Modelul mouse-ului in FreeCAD este constituit din comenzi folosite la navigarea spațiului 3D și interacțiunea cu obiectele afișate. In versiunea actuală există trei moduri diferite de navigare. Modul implicit este numit "Navigare CAD" și este foarte simplu și practic, dar FreeCAD are două stiluri alternative modelate dupa navigarea în Inventor si Blender.

Navigarea

Modul de lucru cu obiecte este comun pentru toate paletele. Urmatoarele acțiuni cu mouse-ul pot fi folosite pentru controlul poziției si modului de vizualizare, în functie de stilul de navigare selectat.

Exista două moduri de a schimba stilul de navigare:

  • In dialogul pentru preferinte, secțiunea Afișare, tab-ul Vizualizare 3D;
  • Click-dreapta în spațiul liber în zona de vizualizare 3D, selectând Stil de navigare în meniul contextual.

Navigare CAD (implicita)

Acesta este modul de navigare implicit și permite utilizatorului un control simplu al vizualizării; nu este nevoie de folosirea tastaturii decât pentru selecție multiplă.

Selectare Translatie Zoom Rotire
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
pentru selectie pentru translatie pentru a mari sau micsora pentru a roti vizualizarea
Apasati butonul stanga al mouse-ului deasupra obiectului de selectat. Apasarea tastei CTRL permite selectarea mai multor obiecte. Apasati butonul din mijloc si miscati mouse-ul pentru a translata vizualizarea. Folositi rotita mouse-ului pentru a mari sau micsora. Apasati mai intai butonul din mijloc al mouse-ului, tineti-l apasat si apasati butonul stanga al mouse-ului si mutati-l in directia dorita. Functioneaza ca o bila ce se roteste in jurul centrului. Daca eliberati butoanele inainte de a inceta miscarea vizualizarea va continua sa se roteascain jurul centrului, daca aceasta caracteristica e activata. Dublu-click folosind butonul mijlociu pe oricare parte a unui obiect seteaza noul centru de rotatie si panorameaza pe acest punct.


Select Pan Zoom Rotate view
First method
Rotate view
Alternate method
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse MMB+RMB hold.svg
Press the left mouse button over an object you want to select.

Holding down Ctrl allows the selection of multiple objects.

Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor.

Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation.

Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method.

Ctrl+Mouse RMB.svg Ctrl+Shift+Mouse RMB.svg Shift+Mouse RMB.svg
Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17
Select Pan Zoom Rotate view
First method
Rotate view
Alternate method
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse MMB+RMB hold.svg
Press the left mouse button over an object you want to select.

Holding down Ctrl allows the selection of multiple objects.

Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor.

Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation.

Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method.

Ctrl+Mouse RMB.svg Ctrl+Shift+Mouse RMB.svg Shift+Mouse RMB.svg
Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17


Navigare Tip Inventor

In acest tip de navigare modelată după Open Inventor (a nu se confunda cu Autodesk Inventor) nu exista selectie cu mouse-ul. Pentru selectare trebuie apasată tasta CTRL.

Selectare Translatie Zoom Rotire
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
ctrl +pentru selectare pentru translatie pentru marire sau micsorare sau pentru marire sau micsorare pentru a roti
Tineti CTRL apasat si apasati butonul stanga al mouse-ului deasupra unui obiect ce doriti sa fie selectat. Faceti click cu butonul stanga al mouse-ului si miscati obiectul. Folositi rotita mouse-ului pentru marire si micsorare sau apasati si tinei butonul din mijloc si apasati butonul din stnga. Faceti click si trageti folosind butonul stanga al mouse-ului pentru a roti


Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Ctrl+Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse LMB hold.svg
Hold Ctrl, then press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Alternatively, hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

Hold the left mouse button, then move the pointer.

This mode is not based on Autodesk Inventor.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Ctrl+Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse LMB hold.svg
Hold Ctrl, then press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Alternatively, hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

Hold the left mouse button, then move the pointer.


Navigare Tip Blender

Blender Navigation a fost modelat după Blender. Anterior nu a existat o panoramare cu mouse-ul și a fost necesară utilizarea tastei SHIFT pentru a panorama vederea. Acest lucru s-a schimbat în 2016, cu o adăugare de caracteristici. Pentru a panorama vizualizarea, puteți apăsa acum butoanele mouse-ului stânga și dreapta și trageți în vizualizare.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Shift+Mouse MMB hold.svg Mouse LMB+RMB hold.svg Mouse MMB rotate.svg Mouse MMB hold.svg
Press the left mouse button over an object you want to select. Hold Shift and the middle mouse button, then move the pointer.

Alternatively, hold both left and right mouse buttons, and then move the pointer.

Use the mouse wheel to zoom in and out. Hold the middle mouse button, then move the pointer.

Alternatively, hold both left and right mouse buttons, and then move the pointer. |Zoom_text=Use the mouse wheel to zoom in and out. |Rotate_view_text=Hold the middle mouse button, then move the pointer. }}

Navigarea cu Touchpad-ul

În Navigatorul cu touchpad, nici panningul, nici zoom-ul, nici rotirea vizualizării nu sunt operații numai pentru mouse (sau doar touchpad).

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Touchpad LB.svg Shift+Touchpad.svg PageUp, PageDown Alt+Touchpad.svg
Press the left mouse button over an object you want to select. Hold Shift, then move the pointer. Use PageUp and PageDown to zoom in and out. Hold Alt, then move the pointer.
Shift+Ctrl+Touchpad.svg Shift+Touchpad LB hold.svg
Alternatively, hold Shift and Ctrl, then move the pointer. Alternatively, hold Shift and the left button, then move the pointer.

Navigarea prin Gesturi(v0.16)

Acest stil de navigare a fost adaptat pentru utilizarea cu touchscreen și stiloul, dar este foarte ușor de utilizat cu mouse-ul.

Select Pan Zoom Rotate view Tilt view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse RMB hold.svg Mouse MMB rotate.svg Mouse LMB hold.svg Mouse LMB+RMB hold.svg
Press the left mouse button over an object you want to select. Hold the right mouse button, then move the pointer. Use the mouse wheel to zoom in and out. Hold the left mouse button, then move the pointer.

In Sketcher and other edit modes, this behavior is disabled. Hold Alt when pressing the mouse button to enter rotation mode.

To set the camera's focus point for rotation, click a point with the middle mouse button. Alternatively, aim the cursor at a point and press H on the keyboard.

Hold both left and right mouse buttons, and then move the pointer sideways.
Touch Tap.svg Touch Two-Finger-Drag.svg Touch Tap-Hold-Drag.svg Touch Pinch.svg Touch One-Finger-Drag.svg Touch Rotate.svg
Tap to select. Drag with two fingers.

Alternatively, tap and hold, then drag. This simulates the pan with the right mouse button.

Drag two fingers (pinch) closer or farther apart. Drag with one finger to rotate.

Hold Alt when in the Sketcher.

Rotate the imaginary line formed by two touch points.

On v0.18 this method is disabled by default. To enable, go to Edit → Preferences → Display, and untick "Disable touchscreen tilt gesture" checkbox.

Alternatively, tap and hold, then drag. This simulates the pan with the right mouse button. |Zoom_text=Use the mouse wheel to zoom in and out. |Zoom_gesture_text=Drag two fingers (pinch) closer or farther apart. |Rotate_view_text=Hold the left mouse button, then move the pointer. In Sketcher and other edit modes, this behavior is disabled. Hold Alt when pressing the mouse button to enter rotation mode.

To set the camera's focus point for rotation, click a point with the middle mouse button. Alternatively, aim the cursor at a point and press H on the keyboard. |Rotate_view_gesture_text=Drag with one finger to rotate.

Hold Alt when in the Sketcher. |Tilt_view_text=Hold both left and right mouse buttons, then move the pointer sideways. |Tilt_view_gesture_text=Rotate the imaginary line formed by two touch points.

On v0.18 this method is disabled by default. To enable, go to Edit → Preferences → Display, and untick "Disable touchscreen tilt gesture" checkbox. }}

Navigare tip Maya

În navigația Maya-Gesture, toate mișcările de vizualizare sunt activate prin apăsarea butonului ALT și a butonului mouse-ului, astfel încât să fie necesar un mouse cu 3 butoane pentru a utiliza corect acest mod de navigare. Alternativ, este posibil să utilizați gesturi, deoarece acest mod a fost dezvoltat în modul normal de navigare prin gesturi.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Alt+Mouse MMB hold.svg Alt+Mouse RMB hold.svg Mouse MMB rotate.svg Alt+Mouse LMB hold.svg
Press the left mouse button over an object you want to select. Hold Alt and the middle mouse button, then move the pointer. Hold Alt and the right mouse button, then move the pointer.

Alternatively, use the mouse wheel to zoom in and out.

Hold Alt and the left mouse button, then move the pointer.

Alternatively, use the mouse wheel to zoom in and out. |Rotate_view_text=Hold Alt and the left mouse button, then move the pointer. }}


Revit Navigation

This style was introduced in version 0.18.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse LMB+RMB hold.svg Mouse MMB rotate.svg Shift+Mouse MMB hold.svg Mouse MMB+RMB hold.svg


Press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer.

Alternatively, hold both left and right mouse buttons, then move the pointer.

Use the mouse wheel to zoom in and out. Hold Shift and the middle mouse button, then move the pointer.

Alternatively, hold the middle mouse button, then press and hold the right mouse button, then move the pointer.


OpenCascade

This style was introduced in version 0.18.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Ctrl+Mouse MMB hold.svg Mouse MMB hold.svg Mouse MMB rotate.svg Ctrl+Mouse LMB hold.svg Ctrl+Mouse RMB hold.svg


Press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Alternatively, hold Ctrl and the left mouse button, then move the pointer.

Hold Ctrl and the right mouse button, then move the pointer.


Selectarea Obiectelor

Selecția Simplă

Obiectele se selectează cu click-stânga în vizualizarea 3D sau selectare în vizualizarea arborescentă.

Preselecție

Există, de asemenea, și un mecanism de preselecție care evidențiază obiectele și prezintă informații despre ele înainte de a fi selectate, doar prin mișcarea mouse-ului deasupra lor. Dacă nu agreați acest comportament sau calculatorul este lent puteți să-l suprimați din dialogul pentru preferințe.

Manipularea Obiectelor

FreeCAD oferă manipulatori ce pot fi folosiți pentru a schimba aparența sau proprietățile obiectului.

Suport Hardware

FreeCAD suportă și un număr de dispozitive 3D.

Probleme la Mac OS X

Recent am primit rapoarte pe forum de la utilizatorii de Mac la care acele combinații de taste și butoane de mouse nu funcționează conform așteptărilor. Din păcate, niciunul dintre dezvoltatori nu deține un Mac, nici ceilalți contributori obișnuiți. Avem nevoie de ajutorul tău pentru a determina ce butoane și combinații de taste ale mouse-ului funcționează astfel încât să putem actualiza acest

Documentul în FreeCAD

Screenshot treeview.jpg

Un document FreeCAD conține toate obiectele din scenă. Poate conține grupuri și obiecte realizate cu oricare atelier.Ca urmare atelierele pot fi schimbate fără a părăsi documentul. Conținutul documentului este cel salvat pe disc. Mai multe documente pot fi deschise în acelasi timp și mai multe vizualizări al aceluiași document pot fi deschise în același timp.

In ineriorul documentului obiectele pot fi mutate in grupuri si au un nume unic. Administrarea obiectelor, a grupurilor de obiecte si a numelor obiectelor se face in primul rand dn vizualizarea arborescenta. Toate acestea pot fi realizate ca orice altceva in FreeCAD, folosind script-uri Python. In vizualizarea arborescenta se pot crea grupuri, muta obiecte in grupuri, sterge obiecte sau grupuri folosind meniul contextual (click dreapta cu mouse-ul). Redenumirea obiectelor se face cu dublu-click pe obiect. Este posibil sa existe si alte actiuni permise in functie de tipul obiectului si paleta curenta.

Obiectele din documentul FreeCAD pot avea diferite tipuri. Fiecare atelier poate crea propriile tipuri de obiecte, de exemplu Atelierul Plase creează obiecte plasă, atelierul |atelierul Piese poate crea piese, Atelierul desen2D poate crea și el piese, etc.

Daca este cel putin un document deschis in FreeCAD, atunci exact un document este activ. Acesta este documentul care apare in vizualizarea 3D curenta, documentul cu care lucrati in mod curent.

Aplicatia si Interfata cu Utilizatorul

Ca orice altceva in FreeCAD, partea de interfața grafică a utilizatorului (GUI) este separată de partea de aplicație (App). Acest lucru este adevărat și pentru documente. Acestea sunt și ele alcătuite din două părți: partea de aplicație, ce conține obiecte, și partea de vizualizare, ce conține reprezentarea grafica a obiectelor.

Gândiți-vă la aceasta arhitectură ca la două spații unde obiectele sunt definite. Parametrii constructivi (este un cub? un con? ce dimensiuni are?) sunt stocați in partea de App, pe când reprezentarea grafică (liniile au culoarea neagră? fațetele sunt albastre?) este stocată în partea GUI. De ce aceasta separare? Pentru că FreeCAD poate fi folosit și without

fără interfața grafică, de exemplu în interiorul altor programe, și trebuie să putem manipula obiectele chiar dacă nimic nu este desenat pe ecran.

O alta parte ce este stocată în partea de grafică sunt vizualizările 3D. Un document poate avea mai multe vizualizări deschise în același timp astfel ca să puteți examina conținutul documentului din mai multe puncte de vedere în același timp. Poate doriți să vedeți în același timp imaginea de sus și din față în același timp? In acest caz trebuie să folosiți două vizualizări stocate în partea grafică ce pot fi create în meniul Vizualizare sau prin click-dreapta pe un tab de vizualizare.

Scripturi

Documentele pot fi ușor create, accesate și modificate de la interpretorul Python . De exemplu:

FreeCAD.ActiveDocument

O sa dea documentul curent

FreeCAD.ActiveDocument.Blob

O sa acceseze un document numit "Blob" inauntrul documentului activ

FreeCADGui.ActiveDocument

O sa dea partea grafica asociata cu documentul activ

FreeCADGui.ActiveDocument.Blob

O sa acceseze partea grafica a obiectului "Blob"

FreeCADGui.ActiveDocument.ActiveView

O sa dea vizualizarea activa

Arrow-left.svg Mouse Model Anteriorul:

Definirea preferințelor utilizatorului

Introduction

Dialogul de editare a preferintelor se poate activa folosind meniul Edit menu → Preferences.

Functionalitatea FreeCAD este impartita in diverse module, fiecare modul fiind responsabil pentru functionarea unei anumite palete. Aplicatia foloseste o tehnica numita incarcare intarziata, ceea ce inseamna ca incarcarea componentelor are loc doar atuni cand e nevoie efectiv de ele. Poate ati observat ca atunci cand selectati o paleta din bara de unelte, acea paleta si toate componentele asociate cu ea sunt incarcate in acel moment. Aceasta include si preferintele in dialogul de editare.

Fără nici un modul încărcat veți avea acces la secțiunile de configurare responsabile pentru setări generale ale aplicației și ale afișării.

Dacă faceți clic pe butonul Reset din colțul din stânga jos al oricărui afișaj de preferințe, setați all din preferințele FreeCAD la valorile lor implicite.

Preferințe generale

Cand porniți FreeCAD fără nici un atelier încărcat veți avea un numar minim de preferințe de editat. Pe măsura ce încărcați module adiționale, secțiuni noi apar în fereastra de dialog, permițând configurarea parametrilor atelierelor încărcate.

General

In the General tab you can specify the following:

Name Description
Change language Select the language of FreeCAD's user interface
Size of recent file list Specification how many files should be listed in the recent files list
Enable tiled background If checked, the background of FreeCAD's main window will by default consist of tiles of this image: Background.png

This option only has an effect if in Style sheet/No style sheet is selected.

The image can be changed by adding the folders Gui/Images in the folder

%APPDATA%/FreeCAD (on Windows),

$HOME/.FreeCAD (on Linux) or

$HOME/Library/Preferences/FreeCAD (on MacOS).

Put there a file named background.png and uncheck/check this option to see the changed file.

Style sheet Selection of a style sheet. The style sheets define how the user interface of FreeCAD looks.
Size of toolbar icons Selection of the size for the toolbar icons
Tree view mode Customization how the tree view is shown in the panel (restart required). The options are:
  • Combo View: combine tree view and property view into one panel.
  • TreeView and PropertyView: split tree view and property view into separate panel.
  • Both: keep all three panels, and you can have two sets of tree view and property view.
Auto load module after start up Selection what workbench will be used directly after starting FreeCAD
Enable splash screen at start up If checked, the splash screen of FreeCAD is shown when starting.

The splash screen image can be changed by adding the folders Gui/Images in the folder %APPDATA%/FreeCAD (where %APPDATA% is the the user-specific application folder of FreeCAD of your operating system). Put there a file named splash_image.png and restart FreeCAD to see the changed splash screen.

Enable word wrap Words will be wrapped when they exceed the available horizontal space in the Python console. This console is shown using the menu View → Panels → Python console.
Preference General Tab 01.png

Document

In the Document tab you can specify the following:

Name Description
Create new document at start up If checked, FreeCAD will create a new document when started
Document save compression level Specification of the compression level for FCStd files. FCStd files are ZIP-compressed files. Therefore you can rename their suffix .FCStd to .zip and open them with a ZIP archive program.
Using Undo/Redo on documents If checked, all changes in documents are stored so that they can be undone/redone
Maximum Undo/Redo steps Specification how many Undo/Redo steps should be recorded
Allow aborting recomputation Allow to aborting the document recomputation by pressing Esc. This may slightly increase the recomputation time.
Run AutoRecovery at startup If there is a recovery file available FreeCAD will automatically run a file recovery when it is started. This way files can be restored if a crash occurred.
Save AutoRecovery information every Specification how often a recovery file is written.
Save thumbnail into project file when saving document If checked, also a thumbnail will be stored when the document is saved. The thumbnail will for example be shown in the list of recent files in the Start workbench. It is possible to select a Size between 128×128 and 512×512 pixels for the thumbnail. Common sizes are the powers of two: 128, 256, 512.
Add the program logo to the generated thumbnail If checked, the FreeCAD program logo FreeCAD-logo.svg will be added to the thumbnail. This option only has an effect if Save thumbnail into project file when saving document is used.
Maximum number of backup files to keep when resaving document If checked, backup files will be kept when saving the document. You can specify how many backup files will be kept. They contain the previously saved document version. The first backup file will have the file suffix .FCStd1, the second .FCStd2 and so on.
Use date and FCBak extension If checked, backup files will get the extension .FCbak and their file names get a date suffix according to the specified date format. For a description of the date format see this site.

With the default settings the backup file will get for example this name TD-Cube.20200315-215654.FCBak (original filename is TD-Cube.FCStd).

Allow duplicate object labels in one document If checked, objects can have the same label/name. For example different parts or features can then have the same name in the same document.
Disable partial loading of external linked objects Enable partial loading of external linked document. When enabled, only the referenced objects and their dependencies will be loaded when a linked document is auto opened together with the main document. A partially loaded document cannot be edited. Double click the document icon in the tree view to reload it in full. A more detailed explanation of the feature can be found on the Assembly3 documentation page
Author name All documents that will be created will get the specified author name. Keep the author field blank for an anonymous author. If the option Set on save is checked, the field Last modified by will be set to the specified author when saving the file. This field can be viewed using the menu File → Project information.
Company All documents that will be created will get the specified company name
Default license Selection of a default license for new documents. For predefined license the License URL will automatically be set accordingly. Select 'Other' for an own or special license.
License URL Specification of an URL describing the license selected in Default license
Preference General Tab 02.png

Editor

The editor preferences settings affect the behavior of the macro editor. This editor can be opened using the menu Macro → Macros... → Edit/Create.

The color and font settings also affect the Python console. This console is shown using the menu View → Panels → Python console.

In the Editor tab you can specify the following:

Name Description
Display Items Selection of the code type. The color and font settings will be applied to the selected type. The result can be seen in the Preview field.
Family Specification of the font family that should be used for the selected code type
Size Specification of the font size that should be used for the selected code type
Color Specification of the color that should be used for the selected code type
Enable line numbers If checked, the code lines will be numbered
Tab size Specification of the tabulator raster (how many spaces). If it is for example set to '6', pressing Tab will jump to character 7 or 13 or 19 etc., depending the current cursor position. This setting is only used if Keep tabs is selected.
Indent size Specification of how many spaces will be inserted when pressing Tab. This setting is only used if Insert spaces is selected.
Keep tabs If selected, pressing Tab will insert a tabulator with the raster defined by Tab size
Insert spaces If selected, pressing Tab will insert the amount of spaces defined by Indent size
Preference General Tab 03.png

Fereastra de ieșire

The output preferences affect the behavior of the Report view.

In the Output tab you can specify the following:

Name Description
Record log messages If checked, also log messages will be recorded. They will be output in the Report view panel with the color set in Log messages. This panel is shown using the menu View → Panels → Report view.
Record warnings If checked, warnings will be recorded. They will be output in the Report view panel with the color set in Warnings.
Record error messages If checked, error messages will be recorded. They will be output in the Report view panel with the color set in Errors
Show report view on error or warning If checked, the report view panel will show up automatically when an error or warning is logged.
Normal messages Specification of the font color for normal messages in the Report view panel.
Log messages Specification of the font color for log messages in the Report view panel.
Warnings Specification of the font color for warning messages in the Report view panel.
Errors Specification of the font color for error messages in the Report view panel.
Redirect internal Python output to report view If checked, internal Python output will be redirected from the Python console to the Report view panel. The Python console is shown using the menu View → Panels → Python console
Redirect internal Python errors to report view If checked, internal Python error messages will be redirected from the Python console to the Report view panel.
Preference General Tab 04.png

Macro

These options control certain aspects of running macros.

In the Macro tab you can specify the following:

Name Description
Run macros in local environment If checked, variables defined by macros are created as local variables, otherwise as global Python variable
Macro path Specification of a path to macro files
Recording GUI commands If checked, recorded macros will also contain user interface commands
Record as comment If checked, recorded macros will also contain user interface commands but as comments. This is useful if you don't want to execute visible actions when running the macro but to see what could be done visibly.
Show script commands in python console If checked, the commands executed by the macro scripts are shown in the Python console. This console is shown using the menu View → Panels → Python console.
Preference General Tab 05.png

Unități

This tab configures how Units are shown.

In the Units tab you can specify the following:

Name Description
User system Selection of a unit system that should be used for all parts of FreeCAD
Number of decimals The number of decimals that should be shown for numbers and dimensions in FreeCAD
Minimum fractional inch Minimum fractional inch that should be displayed. This setting is only available if the unit system Building US (ft-in/sqft/cuft) is used.
Preference General Tab 06.png

Setările afișajului

This preferences section has two general tabs, 3D View and Colors, and further tabs depending in the used workbenches.

3D View

This tab is always available, and controls certain characteristics of the 3D view.

In the 3D View tab you can specify the following:

Name Description
Show coordinate system in the corner If checked, the main coordinate system will always be shown at the lower right in opened files
Show axis cross by default introduced in version 0.19 If checked, the axis cross will be shown by default at file opening or creation
Show counter of frames per second If checked, the time needed for the last operation and the resulting frame rate will always be shown at the lower left in opened files
Remember active workbench by tab introduced in version 0.19 If checked, the application will remember what is the active workbench for each tab independently. This way, the active workbench will be automatically restored when changing tab in the multiple-document interface (MDI) view.
Use OpenGL Vertex Buffer Object If checked, Vertex Buffer Objects (VBO) will be used. A VBO is an OpenGL feature that provides methods for uploading vertex data (position, normal vector, color, etc.) to the graphics card. VBOs offer substantial performance gains because the data resides in the graphics memory rather than the system memory and so it can be rendered directly by GPU. For more background info see this webpage.
Render Cache introduced in version 0.19 "Render Cache" or "Render Acceleration" is explained in more detail in Link#render-caching. There are 3 options:
  • Auto (default), let Coin3D decide where to cache.
  • Distributed, manually turn on cache for all view provider root nodes.
  • Centralized, manually turn off cache in all nodes of all view providers, and only cache at the scene graph root node. This offers the fastest rendering speed, but slower response to any scene changes.
Anti-Aliasing Selection if and what kind of multisample anti-aliasing is used
Transparent objects introduced in version 0.19 Render type of transparent objects. The types are:
  • One pass (default), rendering is done in one pass. For non-solid objects like faces or meshes this can lead to artifacts. This image shows such an artifact (black triangle) and that the type Backface pass avoids this.
  • Backface pass, has only an effect for non-solid objects. They are then rendered in two passes: Back-facing polygons are rendered in the first pass and the front-facing in the second pass.
Marker size Selection of the size of vertices (points) in the Sketcher workbench. The clickable area of points can be additionally enlarged by increasing Pick radius (on Colors tab).
Eye to eye distance for stereo modes Specification of the eye-to-eye distance used for stereo projections. The specified value is a factor that will be multiplied with the bounding box size of the 3D object that is currently displayed.
Backlight color If checked, backlight is enabled with the defined color. Backlight is used for rendering back sides of faces (usually, you don't see them in solids, unless you slice one with a clipping plane, or if the faces aren't oriented correctly). It is only active for objects whose Lighting property (on View tab) is set to "One side". If disabled, back sides of faces of objects in "One side" lighting mode will be black.

The related Intensity setting specifies the intensity of the backlight.

Camera type Selection of the camera projection type.


Preference Display Tab 01.png

Navigation

This tab is always available, and controls the behavior of the navigation tools.


In the Navigation tab you can specify the following:

Name Description
Navigation cube If checked, the navigation cube will always be shown. Related Steps by turn defines how many steps (notches) will be applied when using the Navigation cube rotation arrows. Related Corner defines where the Navigation cube is displayed on the screen when creating/opening a document
3D Navigation Selection of a navigation settings set. To see what each set defines, select a set and press the button Mouse....
Orbit style Selection of the rotation orbit style. When viewing a part in the x-y plane an being in the rotation mode of the 3D navigation, the difference is: If Trackball is selected, moving the mouse horizontally will rotate the part around the y-axis, if Turntable is selected the part will be rotated around the z-axis.
New Document Camera Orientation Selection of the camera orientation for new documents
New Document Scale Affects the initial "zoom level" of camera for new documents. The value you set is the diameter of a sphere that fits in 3D view. Default is 100 mm, convenient for objects like boxes for Arduino. It also sets initial size of origin features (base planes in a new PartDesign Body).
Enable animation If checked, rotations can be animated. If for example the 3D Navigation set CAD is used and the mouse is moved while the scroll wheel and the right mouse button is pressed, parts are rotated. If one keeps the mouse moving while releasing e.g. the right mouse button, the rotation will continue as animation. To end the animation left-click with the mouse.
Zoom at cursor If checked, zoom operations will be performed at the position of the mouse pointer. Otherwise zoom operations will be performed at the center of the current view. The Zoom step defines how much will be zoomed. A zoom step of '1' means a factor of 7.5 for every zoom step.
Invert zoom If checked, the direction of zoom operations will be inverted.
Disable touchscreen tilt gesture If checked, the tilting gesture will be disabled for pinch-zooming (two-finger zooming). This only affects the 3D Navigation set Gesture.
Rotate at cursor If checked, rotations in 3D will use the current cursor position as center for the rotation. Otherwise always the center of the screen will be used.
Preference Display Tab 01.png

Colorate

This tab is always available.

In the Colors tab you can specify the following:

Name Description
Enable preselection highlighting If checked, preselection is turned on and will be highlighted by the specified color. Preselection means that for example edges in parts will be highlighted while hovering with the mouse over them to indicate that they can be selected.
Enable selection highlighting If checked, selection highlighting is turned on and the specified color will be used for it
Pick radius Sets the area for picking elements in 3D view. Larger value makes it easier to pick things, but can make some small features impossible to select.
Simple color If selected, the background for parts will have the selected color
Color gradient If selected, the background for parts will have a vertical color gradient. The first color is the color at the top of the background, the second one the color at the bottom.
Middle color Is only enabled if Color gradient is selected. If checked, the color gradient will get the selected color as middle color.
Object being edited Selection of the background color for objects in the tree view that are currently edited
Active container Selection of the background color for active containers in the tree view. For example if there are several parts in the tree view and one part is toggled as active body, it will get the selected background color in the tree view.
Preference Display Tab 02.png

Culoare parte

This tab is only shown if you are in the Part or PartDesign Workbench or if you have been in these workbenches before.

In the Part colors tab you can specify the following:

Name Description
Shape color Color for new shapes. If the option Random is set, a random color is used instead.
Line color Line color for new shapes
Line width Line thickness for new shapes
Vertex color Color for new vertices
Vertex size Size for new vertices
Bounding box color Color of bounding boxes in the 3D view
Two-side rendering If checked, the bottom side of the surface will be rendered the same way than the top side. If not checked, it depends on the option Backlight color; either the backlight color will be used or black.
Text color Text color for document annotations. There is currently no dialog to add annotations to documents. Annotations can only be added using the Python console with this command:

obj=App.ActiveDocument.addObject("App::Annotation", "Label")

This console is shown using the menu View → Panels → Python console.

Preference Display Tab 03.png

Mesh view

This tab is only shown if you are in the Mesh Workbench or if you have been in this workbench before.

In the Mesh view tab you can specify the following:

Name Description
Default mesh color Selection of the default color for new meshes
Default line color Selection of the default line color for new meshes
Mesh transparency Specification of the default mesh transparency for new meshes
Line transparency Specification of the default line transparency for new meshes
Two-side rendering If checked, the bottom side of the surface will be rendered the same way than the top side. If not checked, it depends on the option Enable backlight color (see section 3D view). Either the backlight color will be used or black.
Show bounding-box for highlighted or selected meshes If checked, a yellow bounding box will be displayed for highlighted or selected meshes.
Define normal per vertex If checked, Phong shading is used, otherwise flat shading. Shading defines the appearance of surfaces.

With flat shading the surface normals are not defined per vertex that leads to a unreal appearance for curved surfaces while using Phong shading leads to a smoother appearance.

Crease angle The crease angle is a threshold angle between two faces. It can only be set if the option Define normal per vertex is used.
If face angle ≥ crease angle, facet shading is used
If face angle < crease angle, smooth shading is used

Mesh View Preferences.png

Import-Export Settings

The Import-Export settings affect how files are imported and exported to and from FreeCAD. They are described in the page Import Export Preference.

Workbench preferences

This section is incomplete and requires mentioning the preference pages of each core workbench


Preferences for the more common workbenches are linked below. Some workbenches have no preferences. Other optional workbenches may not be listed. These links are also listed in Category:Preferences

Modulul de schiță are ecranul său preferințe

External workbenches

This section is incomplete and requires mentioning the preference pages of each External workbench


Personalizarea interfeței

Introduction

Deoarece interfaţa FreeCAD se bazează pe setul de unelte moderne din bibliotecile Qt, ea beneficiază de o structurare avansată. Ferestrele, meniurile, barele de unelte şi alte instrumente pot fi modificate, mutate, distribuite intre panouri, scurtaturile pot fi personalizate si macroinstructiunile pot fi inregistrate si redate. Fereastra de personalizare se acceseaza din meniul Tools -> Customize

Std DlgCustomize tab Toolbars.png

Screenshot-customize.jpg

Usage

  1. The commands available in the Customize dialog box depend on the workbenches that have been loaded in the current FreeCAD session. So you should first load all workbenches whose commands you want to have access to.
  2. There are several ways to invoke the Std DlgCustomize.svg Std DlgCustomize command:
    • Select the Tools → Std DlgCustomize.svg Customize... option from the menu.
    • Right-click a toolbar area and choose Std DlgCustomize.svg Customize... from the context menu.
  3. The Customize dialog box opens. For more information see Options.
  4. The Help button does not work at this time.
  5. Press the Close button to close the dialog box.

Options

In the Customize dialog box the following tabs are available:

Commands

Std DlgCustomize tab Commands.png

The Commands tab


On this tab you can browse the available commands.

Browse commands

  1. Select a command category in the Category panel on the left. Some categories match menu entries.
  2. The tools available in the selected category are shown in the panel on the right.
  3. Hover a command: its tooltip appears.
  4. Select a command: its status bar text is displayed below the two panels.

top

Keyboard

Std DlgCustomize tab Keyboard.png

The Keyboard tab


On this tab custom keyboard shortcuts can be defined. Shortcuts for macro commands can be defined on the Macros tab.

Add a custom shortcut

  1. Select a command category from the Category dropdown list.
  2. Select a command from the Commands panel.
  3. The Current shortcut box displays the current short cut, if available.
  4. Enter a new shortcut in the Press new shortcut input box. Shortcuts can be up to 4 inputs long. Each input is either a single character, a combination of one or more special keys or a combination of one or more special keys and a character. Use Backspace to correct mistakes.
  5. If the shortcut is already in use, a dialog box will ask you if you want to override it, and the command the shortcut is assigned to will appear in the Currently assigned to panel.
  6. Press the Assign button to assign the new shortcut.
  7. Press the Clear button to remove the entered shortcut. This will also remove the content of the Current shortcut box. Note that default shortcuts are not permanently removed. They will be restored upon restarting FreeCAD.

Remove a custom shortcut

  1. Select a command category from the Category dropdown list.
  2. Select a command from the Commands panel.
  3. Press the Reset button.

Remove all custom shortcuts

  1. Press the Reset All button.

Notes (Keyboard)

  • Shortcuts only work if their commands appear in the standard menu or in the menu of a workbench that has been loaded in the current FreeCAD session, or if their commands appear on a visible toolbar.
  • In V0.19 there is an issue with some Draft commands. Their default shortcuts do not work and/or custom shortcuts cannot be assigned to them.

top

Workbenches

Std DlgCustomize tab Workbenches.png

The Workbenches tab


On this tab the Workbench selector list can be changed. The Enabled workbenches list shows the workbenches as they will appear in the Workbench selector.

Disable a workbench

  1. Select a workbench in the Enabled workbenches list.
  2. Press the Button left.svg button.
  3. The workbench will be moved to the Disabled workbenches list

Re-enable a workbench

  1. Select a workbench in the Disabled workbenches list.
  2. Press the Button right.svg button.
  3. The workbench will be moved to the Enabled workbenches list

Re-enable all workbenches

  1. Press the Button add all.svg button.

Change a workbench position

  1. Select a workbench in the Enabled workbenches list.
  2. Press the Button up.svg button or the Button down.svg button.
  3. Optionally repeat this until the workbench is in the correct position.

Sort workbenches alphabetically

  1. Press the Button sort.svg button.

top

Toolbars

Std DlgCustomize tab Toolbars.png

The Toolbars tab


On this tab custom toolbars can be created and modified.

Select the workbench

  1. In the dropdown list on the right select the workbench whose custom toolbars you want to modify. The Global option is there for custom toolbars that should be available in all workbenches.

Create a toolbar

  1. Press the New... button.
  2. Enter a name in the dialog box that opens.
  3. Press the OK button.
  4. The new toolbar will appear in the panel on the right.

Rename a toolbar

  1. Select a toolbar in the panel on the right.
  2. Press the Rename... button.
  3. Enter a new name in the dialog box that opens.
  4. Press the OK button.

Delete a toolbar

  1. Select a toolbar in the panel on the right.
  2. Press the Delete button.

Disable a toolbar

  1. Uncheck the checkbox in front of the toolbar name in the panel on the right.
  2. A disabled toolbar will be invisible in the FreeCAD interface.

Add a command

  1. Select the correct toolbar in the panel on the right. If no toolbar is selected, the command will be added to the first toolbar in the list.
  2. Select a category from the dropdown list on the left. Macro commands that have been set up on the Macros tab appear in the 'Macros' category.
  3. Select a command from the panel on the left.
  4. Or select '<Separator>' to add a separator (a line between two toolbar buttons).
  5. Press Button right.svg button.

Remove a command

  1. If required, expand the toolbar in the panel on the right.
  2. Select a command.
  3. Press Button left.svg button.

Change a command position

  1. If required, expand the toolbar in the panel on the right.
  2. Select a command.
  3. Press the Button up.svg button or the Button down.svg button.
  4. Optionally repeat this until the command is in the correct position.

Notes (Toolbars)

  • Toolbars belonging to the current workbench are updated immediately, but after disabling/re-enabling a toolbar a workbench change is required (switch to a different workbench and then switch back).
  • To update global toolbars a workbench change (if commands have been added or removed) or a restart (if the order of a toolbar has changed or a toolbar was renamed) is required.
  • In V0.19 there is an issue with some Draft commands. After adding them to a custom toolbar and exiting the FreeCAD application the user.cfg file must be manually edited for these commands. Search for the name of the custom toolbar and in that section change the content of the FCText items that start with gui_ to DraftTools.

top

Macros

Std DlgCustomize tab Macros.png

The Macros tab


On this tab user macro commands can be set up. Once set up, they can be added to custom toolbars. FreeCAD uses a dedicated folder for user macros and only macros in that folder can be set up. Use the Std DlgMacroExecute.svg Std DlgMacroExecute command to find this folder on your system.

If you download a macro with the Std AddonMgr.svg Addon Manager then make sure that you also download its icon image file. Most macros have an image link on the information page that appears in the Addon Manager. You can for example put this image file in the user macros folder.

Add a macro command

  1. In the Macro dropdown list select a macro.
  2. Enter a Menu text. This will be the name used to identify the macro command and will also appear in the toolbar if there is no icon.
  3. Optionally enter a Tool tip. This text will appear near the location of the mouse when you hover the toolbar icon.
  4. Optionally enter a Status text. This text will appear in the status bar when you hover the toolbar icon.
  5. Optionally enter the wiki page for the macro, if available, in the What's this input box. Enter the page name, not the full URL.
  6. Optionally enter a shortcut in the Accelerator input box. See Keyboard for more information.
  7. To add an icon:
    1. Press the Pixmap ... button.
    2. The Choose Icon dialog box opens.
    3. If required press the Icon folders... button to add an icon folder.
    4. Select an icon from the panel. The Choose Icon dialog box closes automatically.
  8. Press the Add button.
  9. The macro command appears in the panel on the left.
  10. The macro command can now be selected on the Toolbars tab.

Remove a macro command

  1. Select the macro command in the panel on the left.
  2. Press the Remove button.

Change a macro command

  1. Double-click the macro command in the panel on the left.
  2. Make the required changes. Note that you cannot remove the icon, you can only replace it.
  3. Press the Replace button.

top

Spaceball Motion

This is tab is blank if no Spaceball is detected. See: 3Dconnexion input devices.

top

Spaceball Buttons

This is tab is blank if no Spaceball is detected. See: 3Dconnexion input devices.

top

Addons

Addons offer yet another way to customize the use interface. Below are some addons created by users in the FreeCAD community. They can be downloaded through the Std AddonMgr.svg Addon Manager (note: they are listed on the Workbenches tab).

CubeMenu

Glass

IconThemes

Launcher

PieMenu

RemBench

ShortCut

top

Template:Std Base navi/ro Template:Interface navi/ro

Proprietățile obiectelor

A property is a piece of information like a number or a text string that is attached to a FreeCAD document or an object in a document. Properties can be viewed and modified with the Property editor.

Properties play a very important part in FreeCAD, since it has been designed to work with parametric objects, which are objects defined only by their properties.

Custom scripted objects in FreeCAD can have properties of the following types:

Boolean
 Float
 FloatList
 FloatConstraint
 Angle
 Distance
 Integer
 IntegerConstraint
 Percent
 Enumeration
 IntegerList
 String
 StringList
 Link
 LinkList
 Matrix
 Vector
 VectorList
 Placement
 PlacementLink
 Color
 ColorList
 Material
 Path
 File
 FileIncluded
 PartShape
 FilletContour
 Circle

Lucrul cu ateliere

FreeCAD, la fel ca multe aplicații de design moderne, precum Revit sau CATIA, se bazează pe conceptul de Workbench. Un atelier poate fi considerat un set de instrumente special grupate pentru o anumită sarcină. Într-un atelier de mobilier tradițional, veți avea o masă de lucru pentru persoana care lucrează cu lemn, un altul pentru cel care lucrează cu piese de metal și poate un al treilea pentru tipul care montează toate piesele împreună.

În FreeCAD, se aplică același concept. Instrumentele sunt grupate în ateliere în funcție de sarcinile cu care sunt legate.

Când treceți de la un atelier la altul, se schimbă instrumentele disponibile pe interfață. Barele de instrumente, barele de comandă și, eventual, alte părți ale interfeței comută la noul tabel de lucru, dar conținutul scenei dvs. nu se schimbă. Ați putea, de exemplu, să începeți desenarea unor forme 2D cu Workbench Draft, apoi să lucrați mai departe pe ele cu Workbench Part.

Rețineți că uneori un Workbench este denumit "Modul". Cu toate acestea, atelierele de lucru și modulele sunt entități diferite. Un modul este orice extensie a FreeCAD, în timp ce un Workbench este o configurație GUI specială care grupează câteva bare de instrumente și meniuri. De obicei, fiecare modul conține propriul său Workbench, de unde și utilizarea încrucișată a numelui.

Ateliere încorporate

Următoarele ateliere sunt disponibile pentru fiecare instalare FreeCAD:

  • Freecad16.svg Std Base. This is not really a workbench, but this category serves to collect all "standard" commands and tools of the system which can be used in all workbenches.
  • Workbench Arch.svg Arch Workbench pentru lucrul cu elementele arhitecturale.
  • Workbench Complete.svg Complete Workbench deține toate comenzile și caracteristicile din toate modulele și atelierele care au îndeplinit anumite criterii de calitate. Deprecated in v0.17
  • Workbench Draft.svg Draft Workbench conține instrumente 2D și operații CAD 2D și 3D de bază.
  • Workbench Drawing.svg Modul Desen de lucru pentru afișarea lucrării dvs. 3D pe o foaie 2D.
  • Workbench FEM.svg FEM Workbench/ro oferă fluxul de lucru FEA (Analiza Elementului Finit).
  • Workbench Reverse Engineering.svg Reverse Engineering Workbench este destinat să vă ofere instrumente specifice pentru a transforma forme / solide / plase în parametrii compatibili cu FreeCAD. Este încă în dezvoltare.
  • Workbench Robot.svg Robot Workbench pentru a studia mișcările robotului.
  • Workbench Ship.svg Navele FreeCAD Ship Workbench lucrează peste entitățile navei, care trebuie să fie create peste geometria furnizată.
  • Workbench Sketcher.svg Sketcher Workbench pentru a lucra cu schițe constrânse prin geometrie.
  • Workbench Spreadsheet.svg Foile de calcul tabelar pentru crearea și manipularea datelor din foaia de calcul.

Deprecated

The following workbenches are still included in the base installation for compatibility purposes, but they should no longer be used.

Ateliere externe

Atelierele de lucru FreeCAD sunt ușor de programat în Python, prin urmare, mulți oameni dezvoltă ateliere suplimentare în afara grupului principal de dezvoltatori FreeCAD.

Pagina external workbenches conține câteva informații și tutoriale despre unele dintre ele, iar proiectul FreeCAD Addons are ca scop colectarea acestora și facilitarea instalării acestora în cadrul FreeCAD .

Noi ateliere sunt în curs de dezvoltare, fiți pe recepție!


Lucrul cu ochiuri de plasă de discretizare

Mesh workbench icon

Introduction

Introducere

Atelierul Plase Mesh Workbench se ocupă de mesh triangle. Plasele/Mesh-urile sunt un tip special de obiect 3D, compuse din fațete triunghiulare legate de marginile lor și de colțurile lor (numite și vârfuri).

Multe aplicații 3D utilizează ochiurile de plasă ca tip principal de obiect 3D, cum ar fi sketchup, Blender , Maya sau 3D Studio Max, utilizează plase ca primă alegere de elecție. Deoarece plasele sunt obiecte foarte simple, conținând numai vârfuri (puncte), muchii și fațete (triunghiulare), ele sunt foarte ușor de creat, modificat, subdivizat, întins și ușor de trecut de la o aplicație la alta fără nici o pierdere. În plus, deoarece conțin date foarte simple, aplicațiile 3D pot gestiona, de obicei, cantități foarte mari din acestea fără nici o problemă. Din aceste motive, plasele sunt adesea tipul de obiect 3D preferat pentru aplicații care se ocupă cu filmele, animația și crearea imaginilor.

Cu toate acestea, în domeniul rețelelor de inginerie există o mare limitare: ele sunt doar realizate din suprafețe și nu au informații despre masă, deci nu se comportă ca solide. Aceasta înseamnă că toate operațiunile de bază pentru solide, cum ar fi adunarea sau scăderea, sunt dificil de realizat pe ochiuri de plasă. Mesh Workbench este util să importați date 3D în format de plase, să le analizați, să detectați erorile și, în final, să le convertiți într-un solid, pentru a fi utilizate cu Part Workbench.

Mesh example.jpg

Instrumente

Modulul de plase are în prezent o interfață foarte simplă, toate funcțiile sale fiind grupate în intrarea din meniul Mesh

Instrumente Generale

Analiza

Regular solid

  • Mesh Regular Solid.png Regular solid... Creează plase din primitive geometrice ca de ex:cuburi, cylindri, conuri, sau sfere:
    • Mesh Cube.png Create a mesh cube
    • Mesh Cylinder.png Create a mesh cylinder
    • Mesh Cone.png Create a mesh cone
    • Mesh Sphere.png Create a mesh sphere
    • Mesh Ellipsoid.png Create a mesh ellipsoid
    • Mesh Torus.png Create a mesh torus

Boolean

  • Union: Realizează o uniune/fuziun e cu plase
  • Intersection: Realizează o intersecție/common de plase
    • Difference: Realizează o diferență/cut de plase

Cutting

Altele

Preferences

Mai multe instrumente pentru plase sunt disponibile în Atelierul OpenSCAD Workbench.

Plasele pot fi de asemenea manipulate cu Mesh Scripting.

Legături


Lucrul cu Atelierul Piesa

Part workbench icon

Introducere

Capacitățile de modelare a solidelor ale FreeCAD se bazează pe kernelul Open Cascade Technology (OCCT), un sistem CAD de calitate profesionistă, care oferă crearea și manipularea geometriei avansate 3D.

Atelierul Piese permite utilizatorului să acceseze și să utilizeze obiectele și funcțiile OCCT. Obiectele piese, spre deosebire de Mesh objects, sunt mai complexe și, prin urmare, permit operații mai avansate cum ar fi operațiile booleene coerente, istoricul modificărilor și comportamentul parametric.

Part objects are more complex than mesh objects created with the Mesh Workbench, as they permit more advanced operations like coherent boolean operations, modifications history, and parametric behaviour.

Part Workbench relationships.svg

The Part Workbench is the basic layer that exposes the OCCT drawing functions to all workbenches in FreeCAD


Instrumente

Instrumentele sunt toate amplasate în meniul Part

Primitive

Acestea sunt instrumente pentru crearea de obiecte primitive grafice.

  • Part Box.png Caseta: Deseneaza o caseta prin specificarea dimensiunile sale
  • Part Cylinder.png Cilindru: Deseneaza un cilindru prin specificarea dimensiunile sale
  • Part Sphere.png Sfera: Deseneaza o sfera prin specificarea dimensiunile sale
  • Part Cone.png Con: Deseneaza un con prin specificarea dimensiunile sale
  • Part Torus.png Tor: Deseneaza un tor (inel) prin specificarea dimensiunile sale
  • Part CreatePrimitives.png Creaza primitive: Unealta pentru crearea primitivelor geometrice bazate pe parametrii
  • Part Shapebuilder.png Creaza forme: Unealta pentru crearea formelor complexe din primitive geometrice bazate pe parametrii

Modificarea obiectelor

Acestea sunt unelte pentru modificarea obiectelor existente. Ele permit alegerea obiectelor cu care se lucrează.

  • Part Extrude.png Extrudare: Extrudeaza fetele plane ale unui obiect
  • Part Revolve.png Rotatie: Creaza un obiect prin rotirea altui obiect in jurul unei axe
  • Part Mirror.png Simetrizare: Simetrizează obiectul selectat fata de un plan
  • Part Fillet.png Panglica: Rotunjeste marginile unui obiect
  • Part Chamfer.png Tesire: Teseste marginile unui obiect
  • Part RuledSurface.png Ruled Surface:
  • Part Loft.png Mansardare: Uneste un profil de altul
  • Part Sweep.png Baleiere: Baleiază unul sau mai multe profile de-a lungul unei cai
  • Part CompOffsetTools.png Offset tools:
    • Part Offset.png 3D Offset: Construiește o formă paralelă la o anumită distanță față de original.
    • Part Offset2D.png 2D Offset: Construiește o polilinie paralelă la o anumită distanță față de original, sau enlarges/shrinks o fațetă plană. (v0.17)
  • Part Thickness.png Thickness: Golește un solid, lăsând deschideri lângă fațetele selectate.
  • Part Booleans.png Logice: Efectueaza operatii logice asupra obiectelor
  • Part Union.png Fuziune: Uneste doua obiecte
  • Part Common.png Comun: Extrage partea comuna a doua obiecte
  • Part Cut.png Decupare: Substrage on obiect din celalalt
  • Part CompJoinFeatures.png Join features: funcții booleene inteligente pentru obiecte de pus în perete (de ex țevi) (v0.16)
    • Part JoinConnect.png Connect: Conectează interiorul obiectelor (v0.16)
    • Part JoinEmbed.png Embed: Include un obiect din perete într-un alt obiect din perete(v0.16)
    • Part JoinCutout.png Cutout: Crează o tăietură într-un peretele unui obiect pentru un alt obiect de pus în perete (v0.16)
  • Part CompSplittingTools.png Splitting tools: (v0.17)
    • Part BooleanFragments.png Boolean fragments: face toate piesele care pot fi obținute prin operații booleene între obiecte (v0.17)
    • Part SliceApart.svg Slice a part: instrument pentru a separa forme prin intersecția cu alte forme
    • Part Slice.png Slice: Separă un obiect în piese prin intersecții cu un alt obiect(v0.17)
    • Part XOR.png XOR:

elimină spațiul partajat de un număr par de obiecte (versiunea simetrică a Cut) (v0.17)

Measure

Std Measure Menu.png Measure: Allows linear and angular measurement between points, edges, and faces.

Alte Instrumente

  • Part ImportCAD.png Import CAD: Acest insrument vă permite să adăugați un fișier tip *.IGES, *.STEP, *.BREP în documentul curent.
  • Part ExportCAD.png Export CAD: Acest instrument vă permite să ecportați un obiect piesă într-un fișier tip *.IGES, *.STEP, *.BREP .
  • Part ShapeFromMesh.png Shape from Mesh: Crează un obiect formă dintr-un obiect tip plasă.
  • Convert to solid: Convertește un obeict formă într-un obeict tip solid.
  • Reverse shapes: Îndepărtează normalele tuturor fețelor obiectului selectat.
  • Part CreateSimpleCopy.svg Create simple copy: Creează o simplă copie a obeictului selectat.
  • Part RefineShape.png Refine shape: Curăță fațetele prin ștergerea liniilor nenecesare.
  • Part CheckGeometry.png Check geometry: Verifică de erori geometria obiectelor selectate.
  • Measure: Permite măsurări liniare și unghiulare între points/edges/faces.
  • Part Attachment.svg Attachment: Atașamentul este o utilitatea de atașare a unui obiect la un altul .

Preferințe

Conceptele geometrice OCCT

În terminologia OpenCascade, facem distincția între primitivele geometrice și formele (topologice). O primitivă geometrică poate fi un punct, o linie, un cerc, un plan etc. sau chiar unele tipuri mai complexe, cum ar fi o curbă sau o suprafață B-Spline. O formă poate fi un vârf, o margine, un fir, o fațetă, un solid sau un compus de alte forme. Primitivele geometrice nu sunt făcute pentru a fi afișate direct pe scena 3D, ci mai degrabă pentru a fi utilizate ca geometrie a clădirilor pentru forme. De exemplu, o muchie poate fi construită dintr-o linie sau dintr-o porțiune dintr-un cerc.

În rezumat, primitivele geometrice sunt blocuri "fără formă", în timp ce formele topologice sunt obiectele reale construite pe ele.

O listă completă a tuturor primitevelor și formelor se referă la OCC documentation (Alternative: sourcearchive.com) și căutați pentru Geom_* (for geometric primitives) and TopoDS_* (for shapes). Acolo puteți citi mai multe despre diferențele dintre obiectele și formele geometrice. Rețineți că, din păcate, documentația oficială OCC nu este disponibilă online (trebuie să descărcați o arhivă) și se adresează în principal programatorilor, nu utilizatorilor finali. Dar sperăm că veți găsi suficiente informații pentru a începe aici.

At a very high level, topology tells what pieces an object is made of, and the logical relationships between them. A shape is made of a certain set of faces. A face is bounded by a certain set of edges. Two faces are adjacent if they share a common edge.

Topology alone does not tell you the size, curvature, or 3D locations of any of those pieces. However, each piece of topology does knows about it's underlying geometry. A face knows what surface it lies on. An edge knows what curve it lies on. The geometry knows about curvature and location in space. - Source


Thus, Topology defines the relationship between simple geometric entities, which can be linked together to represent complex shapes. - Modeling Data User's Guide

ClassTopoDS Shape inherit graph.png

Tipurile geometrice pot fi împărțite în două grupe majore: curbe și suprafețe. Din curbe (linie, cerc, ...) puteți construi direct o margine, din suprafețe (plan, cilindru, ...) se poate construi o fațetă. De exemplu, linia primitivă geometrică este nelimitată, adică ea este definită de un vector de bază și de un vector de direcție, în timp ce reprezentarea formei sale trebuie să fie ceva limitat de un început și un punct final. Și o cutie - un solid - poate fi creată din doar șase planuri .

De la o margine sau o fațetă se poate reveni la omologul său geometric primitiv.

Astfel, din forme puteți construi piese foarte complexe sau, invers, extrageți toate sub-formele dintr-o formă mai complexă.


Thus, out of shapes you can build very complex parts or, the other way round, extract all sub-shapes a more complex shape is made of.

Part TopoShape relationships.svg

The Part::TopoShape class is the geometrical object that is seen on screen. Essentially all workbenches use these TopoShapes internally to build and display edges, faces, and solids.


Scripting

See also: Part scripting

Structura principală de date folosită în atelierul Piese este tipul de date BRep din OpenCascade. Aproape toate tipurile de conținut și obiecte ale modulului Piese sunt acum disponibile pentru scripting Python. Acestea includ primitive geometrice, cum ar fi linia și cercul (sau arcul de cerc) și întreaga gamă de topo-forme, cum ar fi vârfuri, margini, fire/polilinii, fațete, solide și compuși. Pentru fiecare din aceste obiecte există mai multe metode de creare, iar pentru unele dintre ele, în special pentru TopoShapes, sunt disponibile și operații avansate precum unirea booleană/diferența/intersecția. Explorați conținutul modulului Part, așa cum este descris în pagina FreeCAD Scripting Basics, pentru a afla mai multe.

The most basic object that can be created is a Part Feature, which has a simple DataPlacement property, and basic properties to define its color and appearance.

Another simple object used in 2D geometrical objects is Part Part2DObject, which is the base of Sketcher SketchObject (Sketcher), and most Draft elements.

Test script

Test the creation of Part Primitives with a script. introduced in version 0.19

import parttests.part_test_objects as pto
pto.create_test_file("example_file")

This script is located in the installation directory of the program, and can be examined to see how the basic primitives are built.

$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py

Exemple

Pentru a crea un element tip linie comutați la consola Python și tastați:

import Part,PartGui 
doc=App.newDocument()  
l=Part.LineSegment()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)
doc.addObject("Part::Feature","Line").Shape=l.toShape() 
doc.recompute()

Să trecem pas cu pas prin exemplul python de mai sus:

import Part,PartGui
doc=App.newDocument()

încarcă modulul Parte și creează un document nou

l=Part.LineSegment()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)

Linia este, de fapt, un segment de linie, prin urmare, este definită prin punctul de început și punctul final.

doc.addObject("Part::Feature","Line").Shape=l.toShape()

Această comandă adaugă un tip de obiect Part la document și atribuie reprezentarea de formă a segmentului de linie la proprietarea "Shape" a obiectului adăugat. Este important să înțelegem aici că am folosit o primitivă geometrică (Part.LineSegment) pentru a crea o TopoShape din ea (the toShape ()method). Doar formele pot fi adăugate în document. În FreeCAD, primitivele geometrice sunt folosite ca "structuri de bază" pentru construirea formelor(Shapes).

doc.recompute()

Actualizează documentul. Aceasta pregătește, de asemenea, reprezentarea vizuală a obiectului nou parte.

Rețineți că un segment poate fi creat prin specificarea punctului de start și a punctului final direct în constructor, de exemplu Part.LineSegment(point1,point2), sau putem crea o linie implicită și apoi să-i stabilim proprietățile după cum am făcut aici.

A Line can be created also using:

import FreeCAD
import Part
DOC = FreeCAD.newDocument()

def mycreateLine(pt1, pt2, objName):
    obj = DOC.addObject("Part::Line", objName)
    obj.X1 = pt1[0]
    obj.Y1 = pt1[2]
    obj.Z1 = pt1[2]

    obj.X2 = pt2[0]
    obj.Y2 = pt2[1]
    obj.Z2 = pt2[2]

    DOC.recompute()
    return obj

line = mycreateLine((0,0,0), (0,10,0), "LineName")


Un cerc poate fi creat în mod similar:

import Part
doc = App.activeDocument()
c = Part.Circle() 
c.Radius=10.0  
f = doc.addObject("Part::Feature", "Circle")
f.Shape = c.toShape()
doc.recompute()

or using:

import FreeCAD
import Part
DOC = FreeCAD.newDocument()

def mycreateCircle(rad, objName):
    obj = DOC.addObject("Part::Circle", objName)
    obj.Radius = rad

    DOC.recompute()
    return obj

circle = mycreateCircle(5.0, "CircleName")


Notați din nou, că am folosit cercul (primitivă geometrică) pentru a construi o formă din ea. Desigur, putem avea acces la geometria constructivă după aceea, făcând:

s = f.Shape
e = s.Edges[0]
c = e.Curve

Aici luăm forma obiectului nostru f, apoi luăm lista sa de muchii. În acest caz, va exista doar unul pentru că am făcut întreaga formă dintr-un singur cerc, așa că luăm doar primul element din lista Edges și luăm curba sa. Fiecare Edge are o curbă, care este o primitivă geometrică pe care se bazează.

Îndreptați-vă spre pagina Topological data scripting dacă doriți să cunoașteți mai multe.

Tutorials

Lucrul cu Atelierul Desen 3 D

Development of the Drawing Workbench Elaborarea modulului de desenare a fost oprită și un nou modul TechDraw Workbench care intenționează să-l înlocuiască va fi introdus în versiunea 0.17. Ambele module vor fi furnizate în v0.17, dar modulul Desenare poate fi eliminat în versiunile viitoare.


Drawing workbench icon

Introducere

Modulul de desenare vă permite să puneți lucrul 3D pe hârtie. Adică, pentru a afișa vizualizările modelelor dvs. într-o fereastră 2D și pentru a insera acea fereastră într-un desen, de exemplu o foaie cu graniță, un titlu și logo-ul dvs. și, în final, să tipăriți această foaie.

Drawing extraction.png

Instrumente

Unelte pentru crearea, configurarea si exportul foilor de desen 2D

  • Drawing Annotation.png Annotation: Adaugă o adnotare în foaia de desen curent
  • Drawing Clip.png Clip: Adaugă un grup de clipuri în foaia de desen curent
  • Drawing Openbrowser.png Open Browser: Deschide o previzualizare a foii curente din browser
  • Drawing Orthoviews.png Ortho Views: Creează automat vederi ortografice ale unui obiect
  • Drawing Symbol.png Symbol: Adaugă conținutul unui fișier SVG ca simbol în foaie de desen curentă
  • Drawing DraftView.png Draft View: Inserează o vizualizare specială a unui obiect selectat în foaia de desen curent
  • Drawing SpreadsheetView.png Spreadsheet View: Inserts a view of a selected spreadsheet in the current drawing sheet
  • Project Shape: Creează o proiecție a obiectului selectat (Sursă) în vizualizarea 3D.
  • Notă Note:

Instrumentul Draft View este utilizat în special pentru a plasa obiecte 2D Draft pe hârtie. Acesta are câteva capabilități adiționale și suportă obiecte specifice ca de ex: Draft dimensions.

Flux de lucru

Documentul conține un obiect 3D (Schenkel) din care dorim să realizăm un desen. Prin urmare, este creată o "pagină". O pagină este instanțiată dintr-un șablon, de exemplu șablonul "A3_Landscape". Șablonul este un document SVG care poate conține un cadru de pagină, un logo și alte elemente.

În această pagină putem introduce una sau mai multe vizualizări. Fiecare vizualizare are o poziție pe pagină (Proprietăți X, Y), un factor de scară (Scala proprietății) și proprietăți suplimentare. De fiecare dată când pagina sau vizualizarea sau obiectul referință se modifică, pagina este regenerată și actualizarea paginii este actualizată.

Scrip-Programare

În prezent, fluxul de lucru al interfeței grafice cu utilizatorul este foarte limitat, astfel încât API-ul de scripting este mai interesant.

Consultați pagina Drawing API example pentru o descriere a funcțiilor utilizate pentru a crea pagini de desen și vizualizări.

Macrocomanda CartoucheFC vă permite să creați o casetă informativă personalizată pe o pagină A3 landscape.

Șabloane

FreeCAD este livrat împreună cu un set de șabloane implicite, dar puteți găsi mai multe în pagina Drawing templates .

Extensii la Atelierul de Desen 3D

Unele note despre partea de programare a modulului de desen vor fi adăugate la pagina Drawing Documentation . Acest lucru va ajuta să intelegeți rapid modul în care funcționează modulul de desen, permițând programatorilor sa înceapă rapid programarea pentru aceasta.

Tutoriale

legături Externe

Lucrul cu Atelierul de Rrandare

The Raytracing workbench is essentially obsolete. New development is happening in the Render Workbench, which is intended as its replacement. This workbench is fully programmed in Python so it is much easier to extend.

Nevertheless, the information in this page is generally useful for the new workbench, as both modules work basically in the same way.


Raytracing workbench icon

Introducere

Atelierul de Randare Raytracing Workbench

este folosit pentru a genera imagini fotorealiste ale modelelor dvs., făcându-le  o randare exterioară.

The Workbench Raytracing.svg Raytracing Workbench is used to generate photorealistic images of your models by processing them with an external renderer.

Atelierul de Randare funcționează împreună cu modulele templates, care sunt fișiere de proiect care definesc o scenă pentru modelul dvs. 3D. Puteți localiza luminile și geometria, cum ar fi avioanele de la sol și conține, de asemenea, suporturi pentru poziția camerei și pentru informațiile materiale ale obiectelor din scenă. Proiectul poate fi apoi exportat într-un fișier gata de redare sau poate fi redat direct în cadrul FreeCAD.

În mod obișnuit, sunt susținute două tipuri de randare: povray și luxrender. Pentru a putea randa direct din FreeCAD, cel puțin unul dintre aceste programe trebuiesc instalate pe sistemul dvs., iar calea trebuie să fie configurată în preferințele FreeCAD Raytracing. Totuși dacă nici un program de randare nu este instalat, veți putea să exportați un fișier scenă care poate fi folosit ulterior.

În prezent, există un nou Atelier Renderer în dezvoltare pentru a sprijini multiple back-end-uri precum Lux Renderer și Yafaray. Informațiile pentru utilizarea versiunii în dezvoltare pot fi vizualizate laRender_project. Pentru a afla starea de dezvoltare a modulului Render căutați în proiectul Raytracing project..

Raytracing example.jpg

Flux de lucru tipic

  1. Creați sau deschideți un proiect FreeCAD, adăugați unele obiecte Part-based (mesh-urile nu sunt acceptate în prezent)
  2. Creați un proiect Raytracing (cu luxrender sau povray)
  3. Selectați obiectele pe care doriți să le adăugați la proiectul raytracing și adăugați-le la proiect cu instrumentul "Inserați o piesă"
  4. Exportați sau afișați direct


Raytracing Workbench workflow.svg


Workflow of the Raytracing Workbench; atelierul de lucru pregătește un fișier de proiect dintr-un șablon dat și apoi apelează un program extern pentru a produce randarea reală a scenei. Programul de randare extern poate fi folosit independent de FreeCAD.


Instrumente

Instrumente de Proiect

Acestea sunt instrumentele principale pentru exportul lucrării dvs. 3D la programe de randare externe.

  • Raytracing New.png New PovRay project: Inserează un nou proiect PovRay project în document
  • Raytracing Lux.png New LuxRender project: Inserează un nou proiect LuxRender în document
  • Raytracing InsertPart.png Insert part: Introduceți o imagine a unei părți într-un proiect de proiectare
  • Raytracing ResetCamera.png Reset camera: Potrivește poziția camerei unui proiect de proiectare la vizualizarea curentă
  • Raytracing ExportProject.png Export project: Exportă un proiect raytracing unui fișier de scenă pentru randarea într-un renderer extern
  • Raytracing Render.png Render: Proiectarea unui proiect de raytracing cu un renderer extern

Utilități

Acestea sunt instrumente de ajutor pentru a efectua sarcini specifice în mod manual.

Preferințe

  • Std DlgParameter.png Preferences: Preferințele disponibile pentru instrumentele Raytracing.

Tutorials

Crearea manuală a unui fișier povray

Instrumentele utilitare descrise mai sus vă permit să exportați vizualizarea 3D curentă și întregul conținut al acestuia într-un fișier Povray. În primul rând, trebuie să încărcați sau să creați datele CAD și să poziționați orientarea 3D în orientarea dorită. Apoi alegeți "Utilities-> Export View ..." din meniul raytracing.

FreeCAD Raytracing.jpg

Vi se va solicita o locație pentru salvarea fișierului * .pov rezultat. După asta, poți să o deschizi Povray and render:

Povray.jpg

Ca de obicei, prin randare poți face poze mari și frumoase:

Scharniergreifer render.jpg

Script-Programare

A se vedea Raytracing API example pentru informații asupra scrierii programelor de scene.

Legături

POVRay

Luxrender

Viitoare posibile randări de implementat

Export către Kerkythea

Deși exportul direct către fișierul Kerkythea XML-File-Format nu este încă acceptat, puteți să exportați Obiectele ca Fișiere Mesh (.obj) și apoi să le importați în Kerkythea.

  • dacă folosiți Kerkythea pentru Linux, nu uitați să instalați pachetul WINE (necesar pentru Kerkythea pentru Linux)
  • puteți să vă transformați modelele cu ajutorul Atelierul Plase în plase și apoi să le exportați ca fișiere .obj
  • Dacă plasa dvs. la exportare a dus la erori (modificări de normale, găuri ...), vă puteți încerca norocul cu studio netfabb studio
Gratuit pentru uz personal, disponibil pentru Windows, Linux și Mac OSX.
Dispune de instrumente de reparații standard care vă vor repara modelul în majoritatea cazurilor.
  • un alt program bun pentru analiza / repararea ochiului este Meshlab
Open Source, disponibil pentru Windows, Linux și Mac OSX.
Dispune de instrumente de reparații standard care vă vor repara modelul în majoritatea cazurilor (găuri de umplere, re-orientare de normale etc.)
  • puteți utiliza "make compound" și apoi "face o singură copie" sau puteți fuziona solide pentru a le grupa înainte de a converti în plase cu ochiuri
  • nu uitați să setați în Kerkythea un factor de import de 0.001 pentru obj-modeler, deoarece Kerkythea se așteaptă ca fișierul obj să fie în m (dar unitățile standard-scheme în FreeCAD sunt mm)
În cadrul ferestrelor Windows 7 Kerkythea pe 64 de biți nu pare să poată salva aceste setări.
Așa că nu uitați să faceți acest lucru de fiecare dată când porniți Kerkythea
  • dacă importați mai multe obiecte în Kerkythea, puteți folosi comanda "File>Merge" în Kerkythea

Sugestii de legături

These pages refer to the new workbench, programmed in Python, meant to replace the current Raytracing Workbench.

Outdated

These pages refer to a replacement workbench, programmed in C++, proposed around 2012, which was never completed.

Lucrul cu Atelierul Imagine

Image workbench icon

Introducere

Atelierul Imagine Image Workbench gestionează diferite tipuri de bitmap images și vă permite să le deschideți în FreeCAD.

În prezent, modulul vă permite să deschideți ”open format” de fișiere tip .bmp, .jpg, .png și .xpm .

Instrumente

  • Image-import.svg Open: open an image on a new viewport.
  • Image-import-to-plane.svg Import to plane: import an image to a plane in the 3D view.
  • Image-scale.svg Scaling: scale an image imported to a plane.

Funcționalități

  • Atelierul Imagine vă permite de asemenea să importați o imagine într-un plan spațial 3D al FreeCAD cu Image Import, cu al doilea buton al atelierului Imagine.
  • Imaginea importată poate fi atașată la o schiță a uneia dintre cele trei planuri (XY / XZ / YZ) cu ​​offset pozitiv sau negativ.
  • Această funcție este disponibilă numai dacă ați deschis un document FreeCAD.
  • The image can be moved in 3D-space by editing the placement in the Property editor.
  • The major use is tracing over the image, in order to generate a new part while using the image as a template.
  • The image is imported with 1 pixel = 1mm.
 * The recommendation is to have the imported image at a reasonable resolution.
  • Imaginea poate fi scalată prin editarea valorilor "XSize" și "YSize" înProperty editor.
  • Imaginea poate fi mutată prin editarea valorilor X/Y/Z-în Property editor.
  • Imaginea poate fi rotită în jurul unei axe utilizând Property editor.

Flux de lucru

O utilizare importantă a acestui atelier de lucru este urmărirea imaginii, cu ajutorul instrumentelor Draft sau Sketcher, pentru a genera un corp solid bazat pe contururile imaginii.

Tip:
Urmărirea cu elemente de schiță peste o imagine funcționează cel mai bine dacă imaginea are o mică (negativă) decalare față de planul de schiță.
Puteți seta o decalare de -0,1 mm la import sau mai târziu, prin editarea destinației de plasare a imaginii.

Decalajul imaginii poate fi setat în timpul importului sau poate fi modificat mai târziu prin proprietățile sale.



Lucrul cu modul Desen 2 D

Draft workbench icon

Introducere

Atelierul Draft vă permite desenarea rapidă a unor obiecte bidimensionale în documentul curent şi oferă mai multe unelte pentru modificarea lor ulterioară. De asemenea, oferă instrumente pentru a defini un plan de lucru, o rețea și un sistem de ancorare pentru a controla precis poziția geometriei dvs.

Obiectele create 2D pot fi folosite pentru redactarea generală într-un mod similar cu Inkscape sau Autocad. Aceste forme 2D pot fi de asemenea utilizate ca componente de bază ale obiectelor 3D create cu alte ateliere de lucru, de exemplu, Part și Arch Workbench. Este, de asemenea, posibilă transformarea de obiecte Draft în Sketches, ceea ce înseamnă că formele pot fi de asemenea utilizate cu PartDesign Workbench pentru crearea de corpuri solide.

FreeCAD este în primul rând o aplicație de modelare 3D și, prin urmare, instrumentele sale 2D nu sunt la fel de avansate ca în cazul altor programe de desenare. Dacă obiectivul dvs. principal este producerea de desene complexe 2D și fișiere DXF și nu aveți nevoie de modelare 3D, vă recomandăm să luați în considerare un program software dedicat pentru redactarea tehnică, cum ar fi LibreCAD, QCad, TurboCad, ș.a.m.d.

Draft Workbench Example

Desenarea obiectelor

Aceste unelte se folosesc la crearea obiectelor.

  • Draft Line.png Linie din 2 puncte: Trasează un segment de linie definit prin 2 puncte.
  • Draft Wire.png Fir/Poliline: Desenează o linie formată din mai multe segmente.
  • Draft Circle.png Cerc: Trasează un cerc definit prin centru şi rază.
  • Draft Arc.png Arc: Desenează un arc cu definit prin centru, rază, unghiul iniţial şi cel final.
  • Draft Ellipse.png Ellipse: Desenează o elipsă definită prin două puncte, definind colțuri diagonale ale unei casete rectangulare în care se va încadra elipsa
  • Draft Polygon.png Poligon: Desenează un poligon regulat definit prin centrul, rază și numărul de laturi.
  • Draft Rectangle.png Rectangle: Trasează un dreptunghi folosind ca repere capetele diagonalei.
  • Draft Text.png Text: Adaugă o casetă text cu mai multe linii de scriere.
  • Draft Dimension.png Dimensiuni: Introduce o dimensiune de cotare.
  • Draft BSpline.png BSpline: Trasează o curbă (B-Spline) folosind o serie de puncte.
  • Draft Point.png Punct: Inserează un punct.
  • Draft ShapeString.png ShapeString: Instrumentul ShapeString introduce o formă compusă reprezentând un șir de text într-un punct dat în documentul curent
  • Draft Facebinder.png Facebinder:Creează un obiect nou din fațetele selectate pe obiectele existente
  • Draft BezCurve.png Bezier Curve: Desenează o curbă Bezier definită printr-o serie de puncte
  • Draft Label.png Label: Plasează o etichetă cu o săgeată care indică un element selectat Disponibil în versiune 0.17

Annotation objects

Modificarea obiectelor

Aceste unelte modifică obiectele existente. Ţinta lor sunt obiectele selectate, iar dacă nu exista nici un obiect selectat veţi fi invitat să selectaţi unul.

Multe instrumente de operare (mutare, rotire, matrice etc.) lucrează și pe obiecte solide (Part, PartDesign, Arch, etc.).

  • Draft Move.png Muta: Mută obiectele dintr-o locaţie în alta.
  • Draft Rotate.png Rotire: Roteşte obiectele de la un unghi iniţial la un unghi final.
  • Draft Offset.png Expandare: Mută segmentele unui obiect la o anumită distanţă constantă.
  • Draft Trimex.png Taie/Extinde (Trimex): Taie sau extinde un obiect.
  • Draft Upgrade.png Unire: Uneşte obiectele intr-un singur obiect mai complex.
  • Draft Downgrade.png Explodare: Sparge un obiect complex în părţi (obiecte mai simple).
  • Draft Scale.png Scalare: Scalează obiectele selectate în jurul punctului de bază.
  • Draft PutOnSheet.png Desenare: Transferă şi transcrie obiectele selectate pe o foaie de desen.
  • Draft Edit.png Editare: Editează obiectul selectat.
  • Draft WireToBSpline.png Polilinie in BSpline: Converteşte o polilinie într-o curbă (BSpline) şi viceversa.
  • Draft AddPoint.png Adauga punct: Inserează un punct intr-o polilinie sau curbă (BSpline).
  • Draft DelPoint.png Sterge point: Şterge un punct dintr-o polilinie sau curbă (BSpline).
  • Draft Shape2DView.png Vizualizare 2D a formei: Creează un obiect 2D care reprezintă proiecţia unui obiect 3D.
  • Draft Draft2Sketch.png Ciorna in schita: Converteşte un obiect 2D (Draft) în schiţă şi viceversa.
  • Draft Array.png Multimi: Creează o matrice de simetrie polară sau rectangulară multiplicând obiectele selectate.
  • Draft PathArray.png Path Array: Creează o serie de obiecte prin plasarea copiilor de-a lungul unei traiectorii
  • Draft Clone.png Clonare: Clonează obiectele selectate.
  • Draft Mirror.png Mirror: Simetrizează obiectele selectate
  • Draft Stretch.png Stretch: Extinde obiectele selectateDisponibil în versiune 0.17
  • Draft Shape2DView.svg Shape 2D View: creates a 2D object which is a flattened 2D view of a 3D object.

Obsolete

This command is considered obsolete because the Drawing Workbench is obsolete. However, the command itself is still available.

These commands have been removed from the interface.

Draft Tray toolbar

The Draft tray toolbar appears when the workbench is started, and allows selecting the working plane, together with some visual properties like the line color, shape color, text size, line width, and automatic group.

Draft Snap toolbar

The Draft Snap toolbar allows selecting the currently snapping mode. Its button keep depressed when a mode is active.

  • Draft ToggleSnap.svg Toggle snap: toggles object snapping globally on or off.
  • Snap Endpoint.svg Endpoint: snaps to the endpoints of line, arc and spline segments.
  • Snap Midpoint.svg Midpoint: snaps to the middle point of line and arc segments.
  • Snap Center.svg Center: snaps to the center point of arcs and circles.
  • Snap Angle.svg Angle: snaps to the special cardinal points of circles and arcs, at 45° and 90°.
  • Snap Intersection.svg Intersection: snaps to the intersection of two line or arc segments. Hover the mouse over the two desired objects to activate their intersection snaps.
  • Snap Perpendicular.svg Perpendicular: on line and arc segments, snaps perpendicularly to the latest point.
  • Snap Extension.svg Extension: snaps on an imaginary line that extends beyond the endpoints of line segments. Hover the mouse over the desired object to activate its extension snap.
  • Snap Parallel.svg Parallel: snaps on an imaginary line parallel to a line segment. Hover the mouse over the desired object to activate its parallel snap.
  • Snap Special.svg Special: snaps on special points defined by the object. introduced in version 0.17
  • Snap Near.svg Near: snaps to the closest point or edge on the nearest object.
  • Snap Ortho.svg Ortho: snaps on imaginary lines that cross the last point, and extend at 0°, 45° and 90°.
  • Snap Grid.svg Grid: snaps to the intersections of the grid lines, if the grid is visible.
  • Snap WorkingPlane.svg Working plane: always places the snapped point on the current working plane, even if you snap to a point outside that working plane.
  • Snap Dimensions.svg Dimensions: shows temporary X and Y dimensions while snapping.
  • Draft ToggleGrid.svg Toggle grid: toggles the visibility of the grid on or off.

Utilitare

Utility menu

O serie de instrumente suplimentare sunt oferite de un meniu Draft → Utilities, sau cu clic-dreapta în meniul contextual, în funcţie de obiectele selectate:

Obsolete

These tools were removed from the interface in v0.19 because they no longer had any purpose.

Preferințe

  • Preferences-draft.svg Preferences: Preferințe disponibile în Atelierul Draft Workbench.
  • Preferences-import-export.svg Import-Export Preferences: preferințele disponibile pentru importul și exportul în diferite formate de fișiere.

Formate de fişiere

Atelierul Desen 2D (Draft) înzestrează FreeCAD cu importul şi exportul următoarele formate de fişiere:

Install importers

Caracteristici suplimentare

introduceți coordonatele în loc să faceți clic pe vizualizarea 3D pentru a defini un nou punct.

limitați pointerul la mișcări orizontale sau verticale în raport cu un punct anterior.

plasați noi puncte pe locuri speciale pe obiecte existente sau pe grilă.

Unit tests

See also: Test Workbench.

To run the unit tests of the workbench execute the following from the operating system terminal.

freecad -t TestDraft

Script

Instrumentele de proiectare pot fi utilizate în macros și din consola Python utilizând API-ul de proiect.

The workbench includes a module to create samples of all objects in a new document. introduced in version 0.19

Use this to test that all objects are produced correctly.

import drafttests.draft_test_objects as dto
doc = dto.create_test_file()

Inspecting the code of this module is useful to understand how to use the programming interface.

$INSTALLDIR/Mod/Draft/drafttests/draft_test_objects.py

Where $INSTALLDIR is the toplevel directory where the software was installed; for example, in Linux it may be /usr/share/freecad.

Draft test objects.png

Test objects for the Draft Workbench.


Îndrumătoare

Biblioteci de Fișiere și Macrocomenzi

Macros

Introduction

Macrocomenzile reprezintă o modalitate convenabilă de a crea acțiuni complexe în FreeCAD. Pur și simplu înregistrați acțiunile, salvați-le sub un nume și repetați-le ori de câte ori doriți. Deoarece macrocomenzile sunt în realitate o listă de comenzi python, puteți să le editați și să creați scripturi foarte complexe.

While Python scripts normally have the .py extension, FreeCAD macros should have the .FCMacro extension. A collection of macros written by experienced users is found in the macros recipes page.

See the Power users hub to learn more about the Python programming language, and about writing macros. In particular, you should start with these pages:

Cum funcționează

Dacă activați consola de ieșire (Meniu Editare -> Preferences -> General -> Macros -> Afișează comenzi script în consola python), veți vedea că în FreeCAD, fiecare acțiune pe care o faceți, de exemplu apăsând un buton generează o comandă python. Aceste comenzi sunt ceea ce poate fi înregistrat într-o macrocomandă. Instrumentul principal pentru realizarea macrocomenzilor este bara de scule a macroco-urilor: Macros toolbar.jpg. Pe bara aveți 4 butoane: Înregistrare, oprire înregistrarea, editare și rularea macro-ul curent.

Enable the console output in the menu Edit → Preferences → General → Macro → Show scripts commands in python console. You will see that in FreeCAD, every action you do, such as pressing a button, outputs a Python command. Those commands are what can be recorded in a macro. The main tool for making macros is the macros toolbar: Macros toolbar.jpg. On it you have 4 buttons: Record, stop recording, edit and play the current macro.

Este foarte simplu de utilizat: Apăsați butonul de înregistrare, vi se va cere să dați un nume macro, apoi efectuați unele acțiuni. Când ați terminat, faceți clic pe butonul de oprire și acțiunile dvs. vor fi salvate. Acum puteți accesa dialogul macro cu butonul de editare:

Macros.png

Acolo puteți gestiona macrocomenzile, puteți șterge, edita, duplica, instala sau crea altele noi de la zero. Dacă editați o macrocomandă, aceasta va fi deschisă într-o fereastră de editor unde puteți modifica codul acesteia. Noile macrocomenzi pot fi instalate folosind butonul Addons ... care se leagă de AddonManager.

Exemplu

Apăsați butonul de înregistrare, dați un nume, să zicem "cilindru 10x10", apoi, în Part Workbench, creați un cilindru cu raza = 10 și înălțimea = 10. Apoi apăsați butonul "stop recording". În dialogul de editare a macrocomenzilor, puteți vedea codul python care a fost înregistrat și, dacă doriți, modificați-l. Pentru a executa macrocomanda, apăsați butonul de execuție din bara de instrumente în timp ce macro-ul dvs. este în editor. Sunt întotdeauna salvate pe disc, astfel încât orice schimbare pe care o faceți sau orice macro nouă pe care o creați, va fi întotdeauna disponibilă data viitoare când porniți FreeCAD.

Press the record button, give a name, let's say "cylinder 10x10", then, in the Part Workbench, create a cylinder with radius = 10 and height = 10. Then, press the "stop recording" button. In the edit macros dialog, you can see the python code that has been recorded, and, if you want, make alterations to it. To execute your macro, simply press the execute button on the toolbar while your macro is in the editor. You macro is always saved to disk, so any change you make, or any new macro you create, will always be available next time you start FreeCAD.

Personalizare

Desigur, nu este practic să încărcați o macrocomandă în editor pentru a o folosi. FreeCAD oferă o modalitate mai bună de a utiliza macrocomanda, cum ar fi atribuirea unei comenzi rapide de la tastatură sau introducerea unei intrări în meniu. Odată ce ați creat macrocomanda, puteți face acest lucru prin meniul Instrumente -> Personalizare:

Of course it is not practical to load a macro in the editor in order to use it. FreeCAD provides much better ways to use your macro, such as assigning a keyboard shortcut to it or putting an entry in the menu. Once your macro is created, all this can be done via the Tools → Customize menu.

Macros config.jpg

Customize ToolbarsÎn acest fel, puteți face ca macrocomanda să devină un instrument real, la fel ca orice instrument standard FreeCAD. Acest lucru, adăugat la puterea scripting-ului Python în cadrul FreeCAD, face posibilă adăugarea ușoară a propriilor instrumente la interfață. Citiți pagina Scripting dacă doriți să aflați mai multe despre scrierea Python ...

See Customize Toolbars for a more detailed description.

Crearea de macrocomenzi fără înregistrare

How to install macros De asemenea, puteți copia / lipi direct codul python într-o macrocomandă, fără a înregistra acțiunea GUI. Pur și simplu creați o macrocomandă nouă, editați-o și inserați-vă codul. Apoi puteți salva macro-ul dvs. în același mod în care salvați un document FreeCAD. Data viitoare când porniți FreeCAD, macroul va apărea sub elementul "Macro instalat" din meniul Macro.

You can also directly copy/paste python code into a macro, without recording GUI action. Simply create a new macro, edit it, and paste your code. You can then save your macro the same way as you save a FreeCAD document. Next time you start FreeCAD, the macro will appear under the "Installed Macros" item of the Macro menu.

See How to install macros for a more detailed description.

Depozitul de Macrocomenzi

Vizitați pagina Macros recipes pentru a alege unele macrocomenzi utile pentru a adăuga instalarea FreeCAD.

Visit the Macros recipes page to pick some useful macros to add to your FreeCAD installation.

You can manually install extensions, however, it is much simpler to just use the Addon Manager.

Template:Powerdocnavi/ro


Introducere în Python


Introduction

Acesta este un scurt tutorial pentru cei nou veniți în Python. Python is an open-source, multiplatform programming language. Python are mai multe caracteristici care o fac foarte diferită de alte limbaje și este foarte accesibil utilizatorilor noi ca tine:

  • A fost special conceput pentru a fi ușor de citit de ființe umane, și de aceea este foarte ușor de învățat și de înțeles.
  • Este un limbaj interpretat, este faptul că, spre deosebire de limbajele compilate cum ar fi C, programul nu trebuie să fie compilate înainte de a fi executat. Codul pe care îl scrieți, dacă doriți. Pentru că puteți merge încet, pas cu pas, este extrem de ușor de a învăța și de a găsi erori în cod.
  • Poate fi încorporat în alte programe pentru a fi folosit ca limbaj de scripting. FreeCAD are un interpretor Python încorporat; puteți scrie cod Python în freecad, Aceasta va Manipulează părți ale freecad, de exemplu, pentru a crea geometrie. Acest lucru este extrem de puternic, în loc de doar clic pe butonul închidere a Etichetat „creați sferă“ pe care unii ARE program de coduri; tu ai libertatea de a construi cu ușurință propriul instrument, care crează exact geometria dorită, într-o formă de și manieră pe care programatorul nu o putea prevedea.
  • Este extensibil, vă puteți conecta cu ușurință la funcționalitatea dvs. De exemplu,sunt modulele care permit Python-ului să citească și să scrie imagini jpg pentru a comunica cu Twitter, pentru a programa sarcinile care trebuie efectuate de sistemul de operare, etc.

Vă recomandăm cu tărie să introduceți fragmentele de cod de mai jos într-un interpret Python. Pentru multe dintre exemplele noastre, punctul important este linia după execuția codului, rezultatul. Și acum la muncă! Rețineți că următoarea este o introducere simplificată și, în nici un caz, un tutorial complet. Dar sperăm că după această lectură ați dobândit bazele necesare pentru a cunoaște și exploata mai profund mecanismele FreeCad.

Interpretorul

De obicei, când scrieți programe de calculator, deschideți pur și simplu un editor de text sau mediul de programare special (care este, de obicei, un editor de text cu mai multe instrumente suplimentare), scrieți programul, apoi compilați și executați. În mod obișnuit, au fost făcute una sau mai multe erori la intrare, astfel încât programul dvs. nu va funcționa. S-ar putea să primiți chiar și un mesaj de eroare care să vă spună ce sa întâmplat. Apoi, reveniți la editorul de text, corectați greșelile, executați din nou, repetând până când programul dvs. funcționează așa cum doriți.

Întregul proces, în Python, poate fi făcut transparent în interiorul interpretrului Python. Interpretorul este o fereastră Python cu un prompt de comandă, unde puteți introduce pur și simplu codul Python. Dacă instalați Python pe computerul dvs. (descărcați-l din Python website dacă sunteți pe Windows sau Mac, instalați-l din depozitul de pachete dacă sunteți pe GNU / Linux), veți avea un interpretor Python în meniul de pornire. Însă FreeCAD are și un interpretor Python în fereastra inferioară:

FreeCAD Python console.png

Screenshot pythoninterpreter.jpg

(Dacă nu o aveți, click pe View --> Panels --> Python console.)

Interpretorul arată versiune Python, apoi un simbol >>> , care este promptul comenzii, chiar așa, unde introduceți codul Python. Scrierea unui cod în interpretor este simplă: o linie este o instrucțiune. Când apăsați Enter, linia de cod va fi executată (după ce a fost compilată instant și netransparent pentru user). De exemplu, încercați să scrieți acest lucru:

print("hello")

print este un cuvânt cheie în Python care înseamnă ca, bineînțeles, că printezi ceva pe ecran. Când apeși Enter, operația este executată , și mesajul "hello" este afișat. Dacă faci o greșeală, să scriem de exemplu:

print(hello)

Python îți va spune că nu știe ce este hello . Ghilimelele " spun despre conținut că este un șir de caractere, care pur și simplu în jargonul informatic înseamnă o bucată de test. Fără ghilimele ", comanda de afișare a lui hello, acesta nu este recunoscut ca fiind un text , ci ca un cuvânt comandă special rezervat în Python.Important este că obțineți imediat o notificare de eroare. Apăsând săgeata sus (sau, în interpretorul FreeCAD CTRL+Săgeată sus), puteți merge înapoi la ultima comandă și să o scrieți corect.

Interpretorul Python dispune de asemenea de un sistem integrat de help. Încercați să tastați:

help("print")

Veți obține o descriere lungă și completă a tot ceea ce poate face comanda ”print”.

Acum că stăpânim total interpretorul nostru , putem începe lucrurile serioase.

top

Varibile

Desigur, tipărirea lui "hello" nu este foarte interesantă. Mai interesant este să imprimați lucruri pe care nu le cunoșteați înainte sau să lăsați Python să le găsească pentru dvs. Aici vine conceptul de variabilă. O variabilă este pur și simplu o valoare pe care o stocați sub un nume. De exemplu, tastați:

a = "hello"
print(a)

Presupun că ați înțeles ce sa întâmplat, am "salvat" șirul "hello" într-o variabilă care poartă numele "a". Acum, "a" nu mai este un nume necunoscut! Putem să o folosim oriunde, de exemplu în comanda de afișare pe ecran. Putem folosi orice nume dorim, trebuie doar să urmați câteva reguli simple, cum ar fi nu folosiți spații sau punctuație. De exemplu, am putea scrie:

hello = "my own version of hello"
print(hello)

Vedeți? acum hello nu mai este un cuvânt nedefinit. Dacă, printr-un ghinion teribil, alegem un nume care există deja în Python? Să presupunem că dorim să stocăm șirul nostru sub numele "print":

myVariable = "hello"
print(myVariable)
myVariable = "good bye"
print(myVariable)

Noi am schimbat valoarea myVariable. Putem copia de asemenea variabile:

var1 = "hello"
var2 = var1
print(var2)

Rețineți că este important să oferiți nume descriptive variabilelor dvs. După un timp, nu vă veți aminti ce reprezintă variabila numită "a". Dar dacă l-ați numit, de exemplu, myWelcomeMessage, îți vei aminti cu ușurință scopul. Plus codul dvs. este un pas mai aproape de a fi auto-documentare.

Cazul este foarte important. myVariable nu este aceeași cu myvariable, diferența dintre majuscule / minuscule 'v' . Dacă trebuia să introduceți "print myvariable", s-ar întoarce cu o eroare pentru că nu a fost definită.

top

Numere

Desigur, trebuie să știți că programarea este utilă pentru a trata toate tipurile de date, și mai ales numere, nu numai șiruri de text. Un lucru este important, Python trebuie să știe cu ce fel de date are de-a face. Am văzut în exemplul nostru de afișarea a lui ”hello”, că comanda de afișare a recunoscut șirul de caractere "hello". Acest lucru se datorează faptului că prin utilizarea ghilimelelor " ", am spus în mod specific că această comanda de afișare va trata un șir de caractere alfabetice (text).

Întotdeauna putem verifica tipul de date al unei variabile folosind cuvântul cheie special Python type():

myVar = "hello"
type(myVar)

Aceasta ne va spune că conținutul lui myVar este 'str', scurt pentru șir în jargonul Python. De asemenea, avem și alte tipuri de date de bază, cum ar fi numere întregi (integer) și cu virgulă flotantă (float)

firstNumber = 10
secondNumber = 20
print(firstNumber + secondNumber)
type(firstNumber)

Acest lucru este mult mai interesant, nu-i așa? Acum avem un calculator puternic! Uită-te la cât de bine funcționează, Python știe că 10 și 20 sunt numere întregi. Deci, ele sunt stocate ca "int", iar Python poate face cu ele tot ce poate face cu numere întregi. Uită-te la rezultatele de acest lucru:

firstNumber = "10"
secondNumber = "20"
print(firstNumber + secondNumber)

Vedeți? L-am forțat pe Python să considere că cele două variabile nu sunt numere, ci simple piese de text. Python poate adăuga două bucăți de text împreună, dar nu va încerca să afle nici o sumă. Dar am vorbit despre numere întregi. Există și numere cu virgulă. Diferența este că numerele întregi nu au o parte zecimală, în timp ce numerele cu virgulă flotantă pot avea o parte zecimală:

var1 = 13
var2 = 15.65
print("var1 is of type ", type(var1))
print("var2 is of type ", type(var2))

Int și Floats pot fi amestecate fără probleme:

total = var1 + var2
print(total)
print(type(total))

Desigur, totalul are zecimale, nu? Apoi, Python a decis automat că rezultatul este un număr cuzecimale. În mai multe cazuri, cum ar fi acesta, Python decide automat ce tip este de utilizat. În alte cazuri, nu. De exemplu:

varA = "hello 123"
varB = 456
print(varA + varB)

Acest lucru ne va da o eroare, varA este un șir și varB este un int, iar Python nu știe ce să facă. Cu toate acestea, putem forța Python să convertească între tipuri:

varA = "hello"
varB = 123
print(varA + str(varB))

Acum, ambele sunt șiruri, operația funcționează! Rețineți că am "convetit" varB în șir la momentul afișării, dar nu am schimbat varB în sine. Dacă vrem să transformăm varB permanent într-un șir, ar trebui să o facem așa:

varB = str(varB)

Putem de asemenea să utilizăm int() și float() pentru a converti în întreg și cu virgulă mobilă dacă dorim:

varA = "123"
print(int(varA))
print(float(varA))

Probabil că ați observat că în această secțiune am folosit comanda de afișare în mai multe moduri. Am tipărit variabile, sume, mai multe lucruri separate prin virgule și chiar rezultatul altor comenzi Python, cum ar fi type(). Poate că ați văzut de asemenea că făcând aceste două comenzi,

type(varA)
print(type(varA))

avem exact același rezultat. Asta pentru că suntem în interpretor și totul este afișat automat. Când scriem programe mai complexe care rulează în afara interpretorului, nu se vor imprima automat, deci va trebui să folosim comanda de afișare. De acum încolo, haideți să-l oprim aici, va merge mai repede. Deci putem scrie pur și simplu:

myVar = "hello friends"
myVar

top

Liste/matrici

Un alt tip de date interesant este formată de către liste. O listă este pur și simplu o colecție de alte date. În același mod în care definim un șir de text folosind "", definim o listă folosind []:

myList = [1, 2, 3]
type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["hello", 345, 34.567]

Vedeți că poate conține orice tip de date. Listele sunt foarte utile deoarece puteți grupa împreună variabilele. Puteți face apoi tot felul de lucruri din cadrul grupului, de exemplu, numărarea acestora:

len(myOtherList)

sau recuperarea unui articol dintr-o listă:

myName = myOtherList[0]
myFriendsName = myOtherList[1]

Veți vedea că în timp ce comanda len () returnează numărul total de elemente dintr-o listă, poziția lor din listă începe cu 0. Primul element dintr-o listă este întotdeauna la poziția 0, așa că în "myOtherList", "Bob" va fi în poziția 2. Putem face mult mai mult cu listele, puteți citi here, ca de exemplu sortarea conținutului, ștergerea sau adăugarea elementelor.

Un lucru amuzant și interesant este acela că: un șir de text este foarte asemănător cu o listă de caractere! Încercați să faceți acest lucru:

myvar = "hello"
len(myvar)
myvar[2]

De obicei, ceea ce puteți face cu listele se poate face și cu șiruri de caractere. De fapt, atât listele cât și șirurile sunt secvențe pe care Python le vede în aceeași manieră.

Outside strings, ints, floats and lists, există mai multe tipuri de date încorporate, cum ar fi dictionaries, sau care le puteți crea ca pe propriile tipuri de date cu classes.

top

Indentation

O mare utilizare rece a listelor este, de asemenea, navigarea prin ele și să facă ceva cu fiecare element. De exemplu, uitați-vă la acest lucru:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for dalton in alldaltons:
    print(dalton + " Dalton")

Am iterat(jargonul informatic) prin lista noastră cu comanda "for ... in ..." și am făcut ceva cu fiecare dintre ele. Rețineți sintaxa specială: comanda for se termină cu : indicând că următorul lucru va fi un bloc al uneia sau mai multor comenzi. În interpretor, imediat după ce ați introdus linia de comandă care se termină cu:, promptul de comandă se va schimba la ... Notați sintaxa particulară a buclei , comanda se termină cu un " : " ceea ce indică lui Python că urmarea va fi un bloc de una sau mai multe comenzi.

Cum va ști Python câte linii vor fi executate în interiorul buclei FOR ... IN ? Pentru asta, Python utilizează indentare. Adică liniile următoare nu vor începe imediat. Veți începe cu un spațiu gol sau mai multe spații goale sau un tab sau câteva tabs. Alte limbaje de programare utilizează alte metode, cum ar fi punerea totul în paranteză etc. Atâta timp cât scrieți liniile următoare cu aceeași indentare same , ele vor fi considerate parte a blocului for-in. Dacă începeți o linie cu 2 spații și următoarea cu 4, va exista o eroare. Când ați terminat, scrieți o altă linie fără indentare sau apăsați pe Enter pentru a reveni din blocul for-in.

Indentarea este cool, deoarece ajută la lizibilitatea programului. Dacă utilizați indentări mari (de exemplu, utilizați tabs în loc de spații deoarece este mai mare), atunci când scrieți un program mare, veți avea o imagine clară a ceea ce este executat în interiorul a buclei for-in. Vom vedea că comenzile, altele decât cele for-in, pot avea și blocuri de cod.

Comenzile for-in pot fi folosite pentru mai multe lucruri care trebuie efectuate mai mult decât o dată. Acesta poate fi, de exemplu, combinat cu comanda range():

serie = range(1, 11)
total = 0
print("sum")
for number in serie:
    print(number)
    total = total + number
print("----")
print(total)

(Dacă ați executat exemplele de cod într-un interpretor prin copy and paste, veți găsi că blocul anterior de text vă va arunca o eroare în față. În schimb, copiați la sfârșitul blocului indentat, adică sfârșitul liniei "" total = total + number "și apoi lipiți la interpretor păsați pe <enter> până până la dispariția promptului cu trei puncte și codul se execută Apoi, copiați ultimele două linii în interpretor urmate de una sau mai multe <enter> ar trebui să apară răspunsul final.)

Dacă veți tasta în interpretor help(range) veți vedea:

range(...)
    range(stop) -> list of integers
    range(start, stop[, step]) -> list of integers

Aici parantezele pătrate denotă un parametru opțional. Totuși tot ce se așteptă este să fie numere întregi. Mai jos vom forța parametrii domeniului să fie un număr întreg folosind int()

range(...)
    range(stop) -> list of integers
    range(start, stop[, step]) -> list of integers

Here the square brackets denote an optional parameter. However all are expected to be integers. Below we will force the step parameter to be an integer using int():

number = 1000
for i in range(0, 180 * number, int(0.5 * number)):
    print(float(i) / number)

Sau lucruri mai complexe ca de exemplu:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for n in range(4):
    print(alldaltons[n], " is Dalton number ", n)

Vedeți că și comanda range () are acea particularitate ciudată că începe cu 0 (dacă nu specificați numărul de început) și că ultimul său număr va fi unul mai mic decât numărul de sfârșit pe care îl specificați. Aceasta este, bineînțeles, așa pentru că funcționează bine cu alte comenzi Python. De exemplu:

alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
for n in range(total):
    print(alldaltons[n])

O altă utilizare interesantă a blocurilor indentate este cu comanda if. IF execută un bloc de cod numai dacă o anumită condiție este îndeplinită, de exemplu:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Joe" in alldaltons:
    print("We found that Dalton!!!")

Desigur, aceasta va imprima întotdeauna prima propoziție, dar încercați să înlocuiți a doua linie prin:

if "Lucky" in alldaltons:

Apoi nimic nu este afișat. De asemenea, putem specifica o altă afirmație

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Lucky" in alldaltons:
    print("We found that Dalton!!!")
else:
    print("Such Dalton doesn't exist!")

top

Funcții

Sunt câteva comenzi standard standard Python commands. În versiunea actuală a Python, există aproximativ 30, iar noi deja știm mai multe dintre ele. Dar imaginați-vă dacă am putea să ne inventăm propriile comenzi? Ei bine, putem, și este extrem de ușor. De fapt, majoritatea modulelor suplimentare pe care le puteți conecta la instalarea dvs. Python faceți exact acest lucru, adăugând comenzi pe care le puteți utiliza. O comandă personalizată în Python se numește o funcție și se face astfel:

def printsqm(myValue):
    print(str(myValue) + " square meters")

printsqm(45)

Extrem de simplu: comanda def () definește o nouă funcție. Dă-i un nume, iar în paranteză definiți argumente pe care le vom folosi în funcția noastră. Argumentele sunt date care vor fi transmise funcției. De exemplu, uitați-vă la comanda len (). Dacă scrieți len () singur, Python vă va spune că are nevoie de un argument. Asta este, vrei len () ceva, nu? Apoi, de exemplu, veți scrie len (myList) și veți obține lungimea myList. Ei bine, lista mea este un argument să-l treci la funcția len (). Funcția len () este definită astfel încât să știe ce să facă cu ceea ce este transmis acesteia. La fel cum am făcut aici.

Numele "myValue" poate fi orice, și va fi utilizat numai în interiorul funcției rexpective. Este doar un nume pe care îl oferiți argumentului, astfel încât să puteți face ceva cu el, dar servește și pentru a spune funcției câte argumente să așteptați. De exemplu, dacă faceți acest lucru:

printsqm(45, 34)

Va exista o eroare. Funcția noastră a fost programată să primească un singur argument, dar a primit două, 45 și 34. Am putea să facem ceva în felul următor:

def sum(val1, val2):
    total = val1 + val2
    return total

myTotal = sum(45, 34)

Am făcut o funcție care primește două argumente, le însumează și returnează acea valoare. Returnarea a ceva este foarte utilă, deoarece putem face ceva cu rezultatul, cum ar fi stocarea în variabila myTotal. Bineînțeles, din moment ce suntem în interpretor și totul este afișat, faci:

top

Module

Acum că avem o idee completă de cum lucrează Python, vom avea nevoie de un ultim lucru: Cum să lucrăm cu fișiere și cu module.

Până acum, am scris linii de instrucțiuni Python în linie în interpretor, nu-i așa? Dacă am putea scrie câteva rânduri împreună și le-am fi executat imediat? Cu siguranță ar fi mai ușor să facem lucruri mai complexe. Și ne-am putea salva munca. Și asta este extrem de ușor. Pur și simplu deschideți un editor de text (cum ar fi notepad-ul din Windows, sub Linux: gedit, emacs sau vi) și scrieți toate liniile dvs. Python, la fel cum le scrieți în interpretor, cu indentări etc. , Apoi salvați fișierul undeva, de preferință cu o extensie .py. Asta e, aveți un program Python complet. Desigur, există editori mult mai buni decât notepad-ul, dar aceasta este doar să vă arătăm că un program Python nu este altceva decât un fișier text.

Pentru a face Python să execute acel program, există sute de moduri. În Windows, pur și simplu faceți clic dreapta pe fișierul dvs., deschideți-l cu Python și executați-l. Dar o puteți executa și din interpretorul Python. Pentru aceasta, interpretorul trebuie să știe unde este programul dvs. .py. În FreeCAD, cel mai simplu mod este să plasați programul într-un loc în care interpretul Python al FreeCAD îl cunoaște în mod implicit, ca de exemplu FreeCAD's bin folder, sau orice folder Mod. (In Linux, aveți probabil un director /home/<username>/.FreeCAD/Mod, haideți să-i adăugăm un subdirector to that called scripts unde vom pune fișierul text.) Presupunem că scriem fișierul de maniera:

def sum(a,b):
    return a + b

print("myTest.py succesfully loaded")

Și noi salvăm asta ca pe myTest.py în direcotrul nostru FreeCAD/bin directory (sau în Linux la /home/<username>/.FreeCAD/Mod/scripts.) Acum , hai să pornim FreeCAD, și în fereastra interpretorului, scrie :

import myTest

fără extensia .py . Aceasta va executa pur și simplu conținutul fișierului, linie cu linie, ca și cum l-am fi scris în interpret. Se va crea funcția sumă, iar mesajul va fi imprimat. Există o mare diferență: comanda de import este făcută nu numai pentru a executa programe scrise în fișiere, ca și pentru ale noastre, dar și pentru a încărca funcțiile din interior, astfel încât acestea să devină disponibile în interpretor. Fișierele care conțin funcții, precum cele ale noastre, sunt numite module.

În mod normal când scrii o funcție sum() in interpreter, noi o executăm simplu ca:

sum(14, 45)

La el am făcut și noi. Atunci când importăm un modul care conține funcția sum(), sintaxa este puțin diferită. Noi facem:

myTest.sum(14, 45)

Asta e, modulul este importat ca un "container", și cu toate funcțiile sale în interior. Acest lucru este extrem de util, deoarece putem importa o mulțime de module și să păstrăm totul bine organizat. Deci, practic, oriunde vedeți something.somethingElse, cu punct între, asta înseamnă că somethingElse este în interiorul lui something.

De asemenea, putem importa funcția sum() direct în spațiul principal al interpretorului, astfel:

from myTest import *
sum(12, 54)

Practic, toate modulele se comportă așa. Importați un modul, apoi puteți utiliza funcțiile sale: module.function(argument). Aproape toate modulele fac acest lucru: definesc funcții, noi tipuri de date și clase pe care le puteți utiliza în interpretor sau în propriile module Python, deoarece nimic nu vă împiedică să importați alte module în modulul dvs.!

Un ultim lucru extrem de util. Cum știm ce module avem, ce funcții există și cum să le folosim (adică, ce argumente au nevoie)? Am văzut deja că Python are o funcție help(). Face:

help("modules")

Ne va da o lista cu toate modulele disponibile. Acum putem introduce q pentru a ieși din ajutorul interactiv și pentru a importa oricare dintre ele. Putem chiar să răsfoim conținutul lor cu comanda dir()

import math
dir(math)

Vom vedea toate funcțiile conținute în modulul de matematică, precum și lucruri ciudate named __doc__, __file__, __name__. The __doc__ is extrem de utili, este un text de comentariu. Orice funcție a unui modul binefăcut are a __doc__ that care explică cum se folosește. De exemplu, vedem că este o funcție sin în interiorul modului de matematică. Vreți să știți cum se folosește?

print(math.sin.__doc__)

(Este posibil să nu fie evident, dar din ambele părți ale docului există două caractere subliniate.)

Și în cele din urmă o bombonică: Când lucrăm la un modul nou sau existent, este mai bine să înlocuiți extensia de fișier cu py cum ar fi: myModule.FCMacro => myModule.py. Vrem adesea să o testeze astfel încât să o încărcăm ca mai sus.

import importlib
importlib.reload(myTest)

Cu toate acestea, există două alternative: în cadrul macro-ului se utilizează funcțiile exec sau execfile ale lui Python.

exec(open("C:/PathToMyMacro/myMacro.FCMacro").read())

top

Începeți cu FreeCAD

Ei bine, cred că acum aveți o idee bună despre modul în care funcționează Python și puteți începe să explorați ce oferă FreeCAD. Funcțiile Python ale FreeCAD sunt bine organizate în diferite module. Unele dintre ele sunt deja încărcate (importate) când porniți FreeCAD. Deci, pur și simplu

dir()

top

Notes

  • FreeCAD was originally designed to work with Python 2. Since Python 2 reached the end of its life in 2020, future development of FreeCAD will be done exclusively with Python 3, and backwards compatibility will not be supported.
  • Much more information about Python can be found in the official Python tutorial and the official Python reference.

top

Template:Powerdocnavi/ro


Programarea script Python in FreeCAD

FreeCAD este construit de la zero pentru a fi controlat total de scripturile Python. Aproape toate componentele FreeCAD, cum ar fi interfața, conținutul scenelor și chiar reprezentarea acestui conținut în vizualizările 3D, sunt accesibile din interpretorul Python încorporat sau din propriile dvs. scripturi. Drept urmare, FreeCAD este probabil una dintre aplicațiile de inginerie cele mai profunde disponibile astăzi.

FreeCAD is built from scratch to be totally controlled by Python scripts. Almost all parts of FreeCAD, such as the interface, the scene contents, and even the representation of this content in the 3D views, are accessible from the built-in Python interpreter or from your own scripts. As a result, FreeCAD is probably one of the most deeply customizable engineering applications available today.

Dacă nu sunteți familiarizat cu Python, vă recomandăm să căutați tutoriale pe internet și să vă aruncați o privire rapidă asupra structurii sale. Python este un limbaj de programare foarte ușor de învățat, mai ales pentru că poate fi rulat în interiorul unui interpretor, unde comenzile simple, chiar până la finalizarea programelor, pot fi executate în zbor fără a fi nevoie să compilați nimic. FreeCAD are un interpretor Python încorporat. Dacă nu vedeți fereastra etichetată "Consola Python" așa cum se arată mai jos, o puteți activa sub consola View -> Panels -> Python pentru a deschide interpretorul.

Interpretorul

Din interpretor, puteți accesa toate modulele Python instalate de sistem, precum și modulele FreeCAD încorporate și toate modulele FreeCAD suplimentare instalate ulterior. Imaginea de mai jos prezintă interpretorul Python:

From the interpreter, you can access all your system-installed Python modules, as well as the built-in FreeCAD modules, and all additional FreeCAD modules you installed later. The screenshot below shows the Python interpreter:

The FreeCAD Python interpreter

Din interpretor, puteți executa codul Python și puteți naviga prin clasele și funcțiile disponibile. FreeCAD oferă un browser al claselor foarte util pentru explorarea noii tale lumi FreeCAD: Când introduceți numele unei clase cunoscute, urmată de un punct (adică doriți să adăugați ceva din acea clasă), se deschide o fereastră de browser de clasă, unde puteți naviga între subclasele și metodele disponibile. Când selectați ceva, este afișat un text de ajutor asociat (dacă există):

The FreeCAD class browser

Așa că, începeți aici tastând App. ori Gui. și priviți ce e tâmplă. O altă modalitate mai generală de a explora conținutul modulelor și claselor este utilizarea comenenzii Python'print dir()'. De exemplu, tastați print dir() și veți obține o listă a tuturor modulelor încărcat curent în FreeCAD. print dir(App) vă va arăta tot ceea ce este în interiorul modulelro App, etc.

O altă caracteristică utilă a interpretului este posibilitatea de a reveni prin istoria comenzilor și de a recupera o linie de cod pe care ați introdus-o deja mai devreme. Pentru a naviga prin istoricul comenzilor, trebuie doar să le utilizați CTRL+UP or CTRL+DOWN.

Dacă faceți clic dreapta în fereastra interpretului, aveți și alte câteva opțiuni, cum ar fi copierea întregului istoric (util atunci când doriți să experimentați lucrurile înainte de a face un script complet al acestora) sau introduceți un nume de fișier cu cale completă.

top

Python Help

În meniul de ajutor al FreeCAD veți găsi o intrare intitulată "Ajutor Python", care va deschide o fereastră de browser care conține o documentație completă, generată în timp real, a tuturor modulelor Python disponibile pentru interpretorul FreeCAD, inclusiv modulele Python și FreeCAD încorporate , modulele instalate în sistem și modulele suplimentare FreeCAD. Documentația disponibilă depinde de efortul fiecărui dezvoltator de module în documentarea codului său, dar, de obicei, modulele Python au o reputație de a fi destul de bine documentate. Fereastra FreeCAD trebuie să rămână deschisă pentru ca acest sistem de documentare să funcționeze.

In the FreeCAD Help menu, you'll find an entry labeled Automatic python modules documentation, which will open a browser window containing a complete, realtime-generated documentation of all Python modules available to the FreeCAD interpreter, including Python and FreeCAD built-in modules, system-installed modules, and FreeCAD additional modules. The documentation available there depends on how much effort each module developer put into documenting his code, but Python modules have a reputation for being fairly well documented. Your FreeCAD window must stay open for this documentation system to work. The entry Python scripting documentation will give you a quick link to the Power users hub wiki section.

top

Module integrate

Deoarece FreeCAD este proiectat să ruleze fără o interfață grafică de utilizator (GUI), aproape toate funcționalitățile sale sunt separate în două grupuri: funcționalitatea Core, numită "App", și funcționalitatea GUI, numită "Gui". Deci, cele două module principale FreeCAD încorporate se numesc App și Gui. Aceste două module pot fi accesate, de asemenea, din scripturile din afara interpretului, prin numele "FreeCAD" și respectiv "FreeCADGui".

Since FreeCAD is designed so that it can also be run without a Graphical User Interface (GUI), almost all its functionality is separated into two groups: Core functionality, named App, and GUI functionality, named Gui. These two modules can also be accessed from scripts outside of the interpreter, by the names FreeCAD and FreeCADGui respectively.

  • In App module, veți găsi totul în legătură cu aplicația în sine, cum ar fi metodele de deschidere sau închidere a fișierelor și documentelor, cum ar fi setarea documentului activ sau listarea conținutului acestuia.
  • In Gui module, veți găsi instrumente pentru accesarea și gestionarea elementelor Gui, cum ar fi Atelierele de lucru și barele lor de instrumente și, mai interesant, reprezentarea grafică a conținutului FreeCAD.

Afișarea întregului conținut al acestor module este o sarcină puțin contraproductivă, deoarece acestea cresc destul de repede cu dezvoltarea FreeCAD. Dar cele două instrumente de navigare furnizate (browserul de clasă și Python help) vă vor oferi, în orice moment, o documentație completă și actualizată a acestor module.

top

Obiectele App și Gui

Așa cum am spus, în FreeCAD, totul este separat între nucleu și reprezentare. Aceasta include și obiectele 3D. Puteți accesa definirea proprietăților obiectelor (numite funcții în FreeCAD) prin modulul App și modificați modul în care sunt reprezentate pe ecran prin modulul Gui. De exemplu, un cub are proprietăți care îl definesc (cum ar fi lățimea, lungimea, înălțimea) stocate într-un obiect App și proprietăți de reprezentare (cum ar fi culoarea fețetelor, modul de desenare) stocate într-un obiect Gui corespunzător.

As already mentioned, in FreeCAD everything is separated into core and representation. This includes the 3D objects. You can access defining properties of objects (called features in FreeCAD) via the App module, and change the way they are represented on screen via the Gui module. For example, a cube has properties that define it (like width, length, height) that are stored in an App object, and representation properties (like faces color, drawing mode) that are stored in a corresponding Gui object.

Acest mod de a face lucrurile permite o gamă largă de utilizări, cum ar fi ca algoritmii să funcționeze numai pe partea de definire a caracteristicilor, fără a avea nevoie să aibă grijă de nicio parte vizuală sau chiar să redirecționeze conținutul documentului la o aplicație non-grafică ca liste, foi de calcul sau analiza elementului finit.

Pentru fiecare obiect App din document, există un obiect Gui corespunzător. De fapt documentul în sine are atât obiecte App cât și obiecte Gui. Acest lucru, desigur, este valabil numai când rulați FreeCAD cu interfața sa completă. În versiunea de linie de comandă nu există nici o interfață grafică, astfel încât numai obiectele App sunt disponibile. Rețineți că partea Gui a obiectelor este re-generată de fiecare dată când un obiect App este marcat ca fiind "pentru a fi recalculat" (de exemplu, când unul dintre parametrii lui se modifică), astfel încât modificările pe care le-ați fi putut face direct la obiectul Gui pot fi pierdute.

Pentru a acesa partea App a unui obiect oarecare, scrieți:

myObject = App.ActiveDocument.getObject("ObjectName")

unde "ObjectName" este numele obiectului dvs. Puteți de asemenea tasta:

myObject = App.ActiveDocument.ObjectName

Pentru a accesa partea Gui a aceluiași obiect, scrieți:

myViewObject = Gui.ActiveDocument.getObject("ObjectName")

unde "ObjectName" este numele obeictului duvs. Puteți de asemena tasta:

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Dacă nu aveți nici un GUI (de exemplul sunten în modul linie-de-comandă), ultima linie va returna 'None'.

top

Obiectele Documentului

În FreeCAD, toată munca dvs. se află în interiorul Documentelor. Un document conține geometria și poate fi salvat într-un fișier. Mai multe documente pot fi deschise în același timp. Documentul, ca geometria conținută în interior, are obiecte App și Gui. Obiectul App conține definițiile de geometrie reale, în timp ce obiectul Gui conține vederile diferite ale documentului. Puteți deschide mai multe ferestre, fiecare vizionând munca dvs. cu un alt factor de zoom sau unghi de vedere diferit. Aceste viziuni fac parte din obiectul Gui al documentului dvs.

In FreeCAD all your work resides inside documents. A document contains your geometry and can be saved to a file. Several documents can be opened at the same time. The document, like the geometry contained inside, has App and Gui objects. The App object contains your actual geometry definitions, while the Gui object contains the different views of your document. You can open several windows, each one viewing your work with a different zoom factor or from a different direction. These views are all part of your document's Gui object.

Pentru a accesa partea App a documentului curent deschis (activ), scrieți:

myDocument = App.ActiveDocument

Pentru a crea un nou documente, scrieți:

myDocument = App.newDocument("Document Name")

Pentru a accesa partea Gui documentul deschis (activ), tastați:

myGuiDocument = Gui.ActiveDocument

Pentru a accesa vederea curentă, scrieți:

myView = Gui.ActiveDocument.ActiveView

top

Utilizarea de module adiționale

Modulele FreeCAD și FreeCADGui sunt singurele responsabile pentru crearea și gestionarea obiectelor din documentul FreeCAD. Ele nu fac de fapt nimic, cum ar fi crearea sau modificarea geometriei. Aceasta deoarece această geometrie poate fi de mai multe tipuri și astfel este gestionată de module suplimentare, fiecare responsabil pentru gestionarea unui anumit tip de geometrie. De exemplu, Part Module utilizează kernelul OpenCascade și, prin urmare, este capabil să creeze și să manipuleze B-rep type geometry, ceea ce este construit pentru OpenCascade. Modul Mesh Module poate construi și modifica obiecte tip plase. În acest fel, FreeCAD este capabil să gestioneze o mare varietate de tipuri de obiecte, care pot coexista în același document, iar noi tipuri pot fi adăugate cu ușurință în viitor.

The FreeCAD and FreeCADGui modules are only responsible for creating and managing objects in the FreeCAD document. They don't actually do anything more such as creating or modifying geometry. This is because that geometry can be of several types, and therefore requires additional modules, each responsible for managing a certain geometry type. For example, the Part Module, using the OpenCascade kernel, is able to create and manipulate BRep type geometry. Whereas the Mesh Module is able to build and modify mesh objects. In this manner FreeCAD is able to handle a wide variety of object types, that can all coexist in the same document, and new types can easily be added in the future.

top

Crearea obiectelor

Fiecare modul are propriul mod de a trata geometria sa, dar un lucru pe care, de obicei, pot să-l facă este să creeze obiecte în document. Dar documentul FreeCAD este, de asemenea, conștient de tipurile de obiecte disponibile furnizate de module:

Each module has its own way of dealing with geometry, but one thing they usually all can do is create objects in the document. But the FreeCAD document is also aware of the available object types provided by the modules:

FreeCAD.ActiveDocument.supportedTypes()

vă va lista toate obiectele posibile pe care le puteți crea. De exemplu, să creăm o plasă (tratată de modulul Mesh/Plasă) și o Piesă (tratată de modulul Part/Piesă):

myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature", "myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature", "myPartName")

Primul argument este tipul de obiect, al doilea este numele obiectului. Cele două obiecte arată aproape la fel: nu conțin încă nicio geometrie și majoritatea proprietăților lor sunt aceleași când le inspectați cu dir(myMesh) și dir(myPart). Cu o excepție, myMesh are o proprietate "Mesh" și "Part" are o proprietate "Shape". Acesta este locul în care sunt stocate datele de Plasă și Piesă. De exemplu, să creăm un cub Part și să îl stocăm în obiectul myPart:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Puteți încerca să stocați cubul în interiorul proprietății Mesh-ului obiectului myMesh, va veni o eroare în care se plânge despre tipul greșit. Aceasta se datorează faptului că aceste proprietăți sunt făcute pentru a stoca numai un anumit tip. În proprietatea MyMesh a Mesh, puteți salva numai chestii create cu modulul Mesh. Rețineți că majoritatea modulelor au, de asemenea, o comandă rapidă pentru a adăuga geometria lor la document:

import Part
cube = Part.makeBox(2, 2, 2)
Part.show(cube)

top

Modificarea obiectelor

Modificarea unui obiect este făcută în același mod:

Modifying an object is done in the same way:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Acum, să schimbăm forma printr-o formă mai mare:

biggercube = Part.makeBox(5, 5, 5)
myPart.Shape = biggercube

top

Interogarea obiectelor

Puteți să vă uitați mereu la tipul de obiect ca acesta:

You can always look at the type of an object like this:

myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print(myObj.TypeId)

sau să știm dacă un obiect este derivat dintr-unul dintre cele de bază (Part Feature, Mesh Feature, etc):

print(myObj.isDerivedFrom("Part::Feature"))

Acum puteți începe să jucați cu FreeCAD! Pentru a vedea ce puteți face cu Part Module, citiți pagina Pare scripting, sau pagina Mesh Scriptingpentru a lucra cu Mesh Module.Rețineți că, deși modulele Parte și Mesh sunt cele mai complete și utilizate pe scară largă, alte module cum ar fi Draft Module au, de asemenea, scripting APIs care vă pate fi utili.Pentru o listă completă a fiecărui modul și a instrumentelor disponibile, vizitați secțiunea Category:API.

top

Template:Powerdocnavi/ro


Introducere

Înainte de toate trebuie să importați un modul Mesh:

To get access to the Mesh module you have to import it first:

import Mesh

Creație și Încărcare

Pentru a crea un obiectr vid Plasă utilizați construcția standard:

To create an empty mesh object just use the standard constructor:

mesh = Mesh.Mesh()

Puteți crea un obiect din fișierul

mesh = Mesh.Mesh("D:/temp/Something.stl")

Sau o creați dintr-un set de triunghiuri descris de către punctele de colț:

triangles = [
# triangle 1
[-0.5000, -0.5000, 0.0000], [0.5000, 0.5000, 0.0000], [-0.5000, 0.5000, 0.0000],
#triangle 2
[-0.5000, -0.5000, 0.0000], [0.5000, -0.5000, 0.0000], [0.5000, 0.5000, 0.0000],
]
meshObject = Mesh.Mesh(triangles)
Mesh.show(meshObject)

Mesh-Kernel are grijă de o structură topologică corectă a datelor prin sortare

împreună a punctelor și marginilor coincidente.

top

Modelare

Pentru a crea geometrii obișnuite, puteți utiliza scriptul Python BuildRegularGeoms.py.

To create regular geometries you can use one of the create*() methods. A torus, for instance, can be created as follows:

m = Mesh.createTorus(8.0, 2.0, 50)
Mesh.show(m)

Primii doi parametri definesc razele toroidului, iar al treilea parametru este un factor de subeșantionare pentru câte triunghiuri sunt create. Cu cât această valoare este mai mare cu atât este mai lină și cu cât este mai groasă corpul. Clasa Mesh oferă un set de funcții booleene care pot fi utilizate în scopuri de modelare. Oferă uniune, intersecție și diferență de două obiecte de plasă.

The Mesh module also provides three Boolean methods: union(), intersection() and difference():

m1, m2              # are the input mesh objects
m3 = Mesh.Mesh(m1)  # create a copy of m1
m3.unite(m2)        # union of m1 and m2, the result is stored in m3
m4 = Mesh.Mesh(m1)
m4.intersect(m2)    # intersection of m1 and m2
m5 = Mesh.Mesh(m1)
m5.difference(m2)   # the difference of m1 and m2
m6 = Mesh.Mesh(m2)
m6.difference(m1)   # the difference of m2 and m1, usually the result is different to m5

În cele din urmă, un exemplu complet al intersecției între o sferă și un cilindru care intersectează sfera.

import FreeCAD, Mesh
cylA = Mesh.createCylinder(2.0, 10.0, True, 1.0, 36)
cylB = Mesh.createCylinder(1.0, 12.0, True, 1.0, 36)
cylB.Placement.Base = (FreeCAD.Vector(-1, 0, 0)) # move cylB to avoid co-planar faces
pipe = cylA
pipe = pipe.difference(cylB)
pipe.flipNormals() # somehow required
doc = FreeCAD.ActiveDocument
obj = d.addObject("Mesh::Feature", "Pipe")
obj.Mesh = pipe
doc.recompute()

top

Odds and Ends

O extensie (deși greu de folosit) de scripting Mesh sunt script-urile de testare a Mesh-Module. În această unitate se fac toate testele de compilare și sunt manipulate toate proprietățile și atributele. Cine are curaj îndeajuns, poate privi la Unit Test module.

An extensive, though hard to use, source of mesh related scripting are the unit test scripts of the Mesh module. In these unit tests literally all methods are called and all properties/attributes are tweaked. So if you are bold enough, take a look at the Unit Test module.

See also Mesh API

top

Template:Powerdocnavi/ro


Base ExampleCommandModel.png Tutorial

Topic
Programming
Level
Intermediate
Time to complete
Author
FreeCAD version
Example File(s)



Această pagină descrie mai multe metode pentru crearea și modificarea modulelor Forms of parts din Python. Înainte de a citi această pagină, dacă sunteți nou la Python, este o idee bună să citiți despre python scripting and how python scripting works in FreeCAD.

Introducere

Aici vă vom explica cum să controlați Part Module direct de la interpretorul FreeCAD Python sau de la orice script extern. Elementele de bază despre programarea script datelor topologice sunt descrise în Part Module Explaining the concepts. fiți siguri că a-ți răsfoit secțiunea Scripting și paginile FreeCAD Scripting Basics dacă aveți nevoie de mai multe informații despre cum funcționaează programarea python in FreeCAD.

Class Diagram

Aceasta Unified Modeling Language (UML) o trecere în revistă a celor mai importante clase a modului Piese:

Python classes of the Part module

Geometrie

Obiectele geometrice reprezintă blocul de construcție al tuturor obiectelor topologice:

  • Geom Clasă de bază a obiectelor geometrice
  • Line o linie dreaptă în 3D, definită de punctul de plecare și de cel de sosire
  • Circle Cerc sau arc de cerc definit prin centru și punctele de start și de finiș
  • ...... Și în curând mai multe

Topologie

Următoarele date topologice sunt disponibile:

  • Compound Un grup al oricărui tip de obiect topologic.
  • Compsolid Un solid compozit este un set de solide conectate prin fațetele lor. Extinde noțiunile de WIRE și SHELL la solide.
  • Solid O partea a spațiului limitată de cochilii. Are trei dimensiuni
  • Shell Un set da fațete conectate prin muchiile lor. O cochilie poate fi deschisă sau închisă.
  • Face In 2D este o parte a unui plan; in 3D este o parte a unei suprafețe.

Geometria sa este constrânsă(tăiată) de contururi. Este bidimensională.

  • Wire Un set de margini conectate prin vârfurile lor. Poate fi un contur deschis sau închis, în funcție de faptul dacă marginile sunt legate sau nu.
  • Edge Un element topologic corespunzător unei curbe reținute. O margine este în general limitată de vârfuri. Este unidimensională.
  • Vertex Un element topologic corespunzător unui punct. Are dimensiune zero.
  • Shape Un termen generic care acoperă toate cele de mai sus.

Exemplul rapid: crearea unei topologii simple

Wire


Acum vom crea o topologie construind-o din geometrie mai simplă. Ca studiu de caz, folosim o parte din imaginea din care face parte patru vârfuri, două cercuri și două linii.

Crearea Geometriei

Mai întâi trebuie să creăm părțile geometrice distincte ale acestui fir. Și trebuie să avem grijă de vârfurile părților geometrice se se afle în aceeași poziție. Altfel, mai târziu, s-ar putea să nu fim capabil să conectăm părțile geometrice la o topologie!

Așa creăm primul dintre puncte:

from FreeCAD import Base
V1 = Base.Vector(0,10,0)
V2 = Base.Vector(30,10,0)
V3 = Base.Vector(30,-10,0)
V4 = Base.Vector(0,-10,0)

Arc

Circle


Pentru a crea un arc de cerc vom face un punct ca reper și vom crea arcul de cerc prin trei puncte:

VC1 = Base.Vector(-10,0,0)
C1 = Part.Arc(V1,VC1,V4)
# and the second one
VC2 = Base.Vector(40,0,0)
C2 = Part.Arc(V2,VC2,V3)

Linie

Line


Segmentul de linie poate fi creat foarte simplu din punctele:

L1 = Part.LineSegment(V1,V2)
# and the second one
L2 = Part.LineSegment(V3,V4)

Notă: in FreeCAD 0.16 Part.Line a fost utilizată, pentru FreeCAD 0.17 Part.LineSegment va fi folosit

Punem totul laolaltă

Ultimul pas este de a conecta elementele geometrice de bază împreună într-o forma topologică:

S1 = Part.Shape([C1,L1,C2,L2])

Facem o prismă

Acum extrudem firul într-o direcție și facem o formă 3D :

W = Part.Wire(S1.Edges)
P = W.extrude(Base.Vector(0,0,10))

Afișăm totul

Part.show(P)

Crearea formelor de bază

Puteți crea cu ușurință obiecte topologice de bază cu ajutorul funcției "Make ... ()" metode de la modulul Part:

b = Part.makeBox(100,100,100)
Part.show(b)

Câteva metode disponibile de make...() :

  • makeBox(l,w,h): Construirea unui paralelipiped localizat în punctul p orientat în direcția d având dimensiunile (l,w,h)
  • makeCircle(radius): Construirea cercului cu o rază dată
  • makeCone(radius1,radius2,height): Construirea unui con cu (raza1,raza2,înălțime)
  • makeCylinder(radius,height): Construirea unui cilindru cunoscând raza și înălțimea.
  • makeLine((x1,y1,z1),(x2,y2,z2)): Construirea unei linii între 2 puncte
  • makePlane(length,width): construirea unui plan cunoscând lungimea și lățimea
  • makePolygon(list): construirea unui poligon având o listă de puncte
  • makeSphere(radius): Construirea unei sfere de rază dată
  • makeTorus(radius1,radius2): construirea unui torus cuoscând raza 1 și raza 2

Vezi pagina Part API pentru o listă completa a metodelor disponibile în modulul Part.

Importare modulelor necesare

Mai întâi trebuie să importăm modulul Part astfel încât să putem folosi conținutul său în Python. De asemenea, vom importa modulul Base din interiorul modulului FreeCAD:

import Part
from FreeCAD import Base

Crearea unui Vector

Vectorssunt una dintre cele mai importante piese de informații când construim forme geometrice. Acestea conțin 3 numere de obicei (dar nu este obligatoriu întotdeauna) coordonatele carteziene x, y și z. Creați un vector ca acesta:

myVector = Base.Vector(3,2,0)

Tocmai am creat un vector la coordonatele x = 3, y = 2, z = 0. În modulul Part, vectorii sunt folosiți peste tot. Formele de Piese utilizează de asemenea un alt tip de punct reprezentare, numită Vertex, care nu este nimic altceva decât un container pentru un vector. Accesați vectorul unui vârf ca acesta:

myVertex = myShape.Vertexes[0]
print myVertex.Point
> Vector (3, 2, 0)

Crearea unei muchii

O margine nu este altceva decât o linie cu două vârfuri:

edge = Part.makeLine((0,0,0), (10,0,0))
edge.Vertexes
> [<Vertex object at 01877430>, <Vertex object at 014888E0>]

Notă: De asemenea, puteți crea o margine definită de doi vectori:

vec1 = Base.Vector(0,0,0)
vec2 = Base.Vector(10,0,0)
line = Part.LineSegment(vec1,vec2)
edge = line.toShape()

Puteți găsi lungimea și centrul unei muchii astfel:

edge.Length
> 10.0
edge.CenterOfMass
> Vector (5, 0, 0)

Afișarea formei pe ecran

Până acum, am creat un obiect de margine, dar nu apare nicăieri pe ecran. Acest lucru se datorează faptului că doar am manipulat obiectele de tip python aici. Scena 3D FreeCAD afișează doar ceea ce îi spui să afișeze. Pentru a face acest lucru, folosim acest lucru simplu Pentru a realiza asta, utilizăm această metodă simplă:

Part.show(edge)

Un obiect va fi creat în documentul nostru FreeCAD, și forma noastră "muchie" va fi atribuită. Utilizați acest lucru când este timpul să vă afișați creație pe ecran.

Crearea unui fir/contur/polilinie

Un fir este o linie multi-margine și poate fi creat dintr-o listă de margini sau chiar o listă de fire:

edge1 = Part.makeLine((0,0,0), (10,0,0))
edge2 = Part.makeLine((10,0,0), (10,10,0))
wire1 = Part.Wire([edge1,edge2]) 
edge3 = Part.makeLine((10,10,0), (0,10,0))
edge4 = Part.makeLine((0,10,0), (0,0,0))
wire2 = Part.Wire([edge3,edge4])
wire3 = Part.Wire([wire1,wire2])
wire3.Edges
> [<Edge object at 016695F8>, <Edge object at 0197AED8>, <Edge object at 01828B20>, <Edge object at 0190A788>]
Part.show(wire3)

Part.show(wire3) va afișa cele 4 margini care compun firul/polilinia noastră. alte informațiile utile pot fi ușor recuperate:

wire3.Length
> 40.0
wire3.CenterOfMass
> Vector (5, 5, 0)
wire3.isClosed()
> True
wire2.isClosed()
> False

Crearea unei Fațete

Doar fațetele create de firele/poliliniile închise vor fi valide. În acest exemplu, wire3 este un contur închis dar wire2 nu este un contur închis(vezi mai sus)

face = Part.Face(wire3)
face.Area
> 99.999999999999972
face.CenterOfMass
> Vector (5, 5, 0)
face.Length
> 40.0
face.isValid()
> True
sface = Part.Face(wire2)
face.isValid()
> False

Numai fațetele vor avea o arie, poliliniile și muchiile nu posedă așa ceva.

Crearea unui Cerc

Un cerc poate fi creat pur și simplu astfel:

circle = Part.makeCircle(10)
circle.Curve
> Circle (Radius : 10, Position : (0, 0, 0), Direction : (0, 0, 1))

Dacă vreți să îl creați la o anumită poziție și într-o anumită direcție:

ccircle = Part.makeCircle(10, Base.Vector(10,0,0), Base.Vector(1,0,0))
ccircle.Curve
> Circle (Radius : 10, Position : (10, 0, 0), Direction : (1, 0, 0))

cercul va fi creat la distanța 10 unități de la axa x și va fi orientat spre axa x. Notă: makeCircle acceptă numai Base.Vector () pentru poziție și normal, dar nu tuple. Puteți, de asemenea, să creați o parte a cercului dând unghiul de pornire și unghiul de capăt ca de exemplu:

from math import pi
arc1 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180)
arc2 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 180, 360)

Ambele atât arc1 cât și arc2 vor face un cerc. Trebuie introduse unghiuri în grade, dacă aveți radiani pur și simplu le convertiți folosind formula: grade = radiani * 180 / PI sau folosind modulul matematic al lui python (după importul efectuat matematica, desigur):

degrees = math.degrees(radians)

Crearea unui Arc de-a lungul punctelor

Din păcate, nu există nicio funcție makeArc, dar avem funcția Part.Arc pentru a crea un arc de-a lungul a trei puncte. Practic, putem să ne imaginăm un arc de cerc atașat la un punct de plecare, trecând printr-un punct central și terminându-se într-un punct final. Part.Arc creează un obiect arc pe care .toShape() trebuie apelat pentru a obține un obiect muchie, în același mod ca atunci când utilizați Part.LineSegment în loc de Part.makeLine.

arc = Part.Arc(Base.Vector(0,0,0),Base.Vector(0,5,0),Base.Vector(5,5,0))
arc
> <Arc object>
arc_edge = arc.toShape()

Arc only accepts Base.Vector() for points but not tuples. arc_edge is what we want which we can display using Part.show(arc_edge). You can also obtain an arc by using a portion of a circle:

from math import pi
circle = Part.Circle(Base.Vector(0,0,0),Base.Vector(0,0,1),10)
arc = Part.Arc(circle,0,pi)

Arcurile sunt muchii valide, ca liniile. Deci, ele pot fi folosite și în polilinii/contururi/fire.

Crearea unui poligon

Un poligon este o polilinie simplă cu multiple segemente de linii drepte. funcția makePolygon ia o listă de puncte și creează o polilinie de-a lungul acestor puncte:

lshape_wire = Part.makePolygon([Base.Vector(0,5,0),Base.Vector(0,0,0),Base.Vector(5,0,0)])

Crearea unei curbe Bezier

Curbele Bézier sunt folosite pentru a modela curbele netede folosind o serie de repere (puncte de control) și cu un numar mare de reprezentari la precizie (fluiditatea curbei). Funcția de mai jos face Part.BezierCurve dintr-o serie de puncte FreeCAD.Vector. (Notă: indicele primului reper începe de la 1, și nu de la 0.)

def makeBCurveEdge(Points):
   geomCurve = Part.BezierCurve()
   geomCurve.setPoles(Points)
   edge = Part.Edge(geomCurve)
   return(edge)

Crearea unui Plan

A Plane este o suprafață simplă rectangulară. Meteoda pentru crearea unuia este aceasta: makePlane(length,width,[start_pnt,dir_normal]). Implicit start_pnt = Vector(0,0,0) and dir_normal = Vector(0,0,1). Utilizând dir_normal = Vector(0,0,1) va crea un plan pe axa z, în timp ce dir_normal = Vector(1,0,0) va crea planul pe axa x:

plane = Part.makePlane(2,2)
plane
><Face object at 028AF990>
plane = Part.makePlane(2, 2, Base.Vector(3,0,0), Base.Vector(0,1,0))
plane.BoundBox
> BoundBox (3, 0, 0, 5, 0, 2)

BoundBox este un cuboid care înconjoară planul cu o diagonală începând de la (3.0.0) și se termină la (5.0.2). Aici grosimea BoundBox în axa y este zero, deoarece forma noastră este complet plană.

Notă: makePlane acceptă doar Base.Vector() pentru start_pnt and dir_normal dar nu și tuplele

Crearea unei elipse

Pentru a crea o elipsă sunt mai multe căi:

Part.Ellipse()

Crează o elipsă cu raza mare 2 și cu raza mică 1 cu centrul în (0,0,0)

Part.Ellipse(Ellipse)

Creațo p copie a elipsei date

Part.Ellipse(S1,S2,Center)

Creează o elipsă centrat pe punctul central, unde planul elipsa este definită de Centrul, S1 și S2, axa sa principală este definită de Centru și S1, semiaxa sa majoră este distanța dintre centrul și S1, iar semiaxa sa minoră este distanța dintre S2 și axa principală.

Part.Ellipse(Center,MajorRadius,MinorRadius)

Creează o elipsă cu semiaxa majoră și cu o semiaxă minoră MajorRadius and MinorRadius, și localizată în planul definit de către Center și normala (0,0,1)

eli = Part.Ellipse(Base.Vector(10,0,0),Base.Vector(0,5,0),Base.Vector(0,0,0))
Part.show(eli.toShape())

În codul de mai sus am trecut S1, S2 și centrul. În mod similar cu Arc, Ellipse creează, de asemenea, un obiect de elipsă, dar nu margine, așa că trebuie să convertiți-l în margine folosind toShape () pentru afișare.

Notă: Doar Arc aceptă Base.Vector() pentru puncte dar nu pentru tuple

eli = Part.Ellipse(Base.Vector(0,0,0),10,5)
Part.show(eli.toShape())

pentru constructorul Ellipse de mai sus am trecut centrul, MajorRadius and MinorRadius

Crearea unui Tor

Folosind metoda makeTorus(radius1,radius2,[pnt,dir,angle1,angle2,angle]). Implicit avem pnt=Vector(0,0,0),dir=Vector(0,0,1),angle1=0,angle2=360 and angle=360. Considerați un tor ca pe un mic cerca care baliază de-a lungul unu cerc mare. Radius1 este raza cercului mare , iar radius2 este raza cercului mic, pnt este centrul torului și dir este direcția normalei. angle1 and angle2 sunt unghiurile în radiani pentru cercul mic, ultimul parametru -unghiul este pentru a face o secțiune în tor:

torus = Part.makeTorus(10, 2)

Codul de deasupra va crea un tor cu diametrul 20(raza 10) și grosimea 4 (raza cercului mic 2)

tor=Part.makeTorus(10, 5, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180)

codul de mai sus va crea o felie de tor

tor=Part.makeTorus(10, 5, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 360, 180)

Codul de mai sus va crea un semtor, numai ultimul parametru este schimbat adică unghiul și unghiurile rămase sunt implicite. Dând unghiul 180 va a crea tor de la 0 la 180, adică un jumătate de tor.

Crearea unui paralelipiped sau cuboid

Utilizând makeBox(length,width,height,[pnt,dir]). Implicit pnt=Vector(0,0,0) and dir=Vector(0,0,1)

box = Part.makeBox(10,10,10)
len(box.Vertexes)
> 8

Crearea unei sfere

Utilizând makeSphere(radius,[pnt, dir, angle1,angle2,angle3]). Implicit avem pnt=Vector(0,0,0), dir=Vector(0,0,1), angle1=-90, angle2=90 and angle3=360. angle1 și angle2 sunt verticala minimă și verticala maximă ale sferei, angle3 diametrul sferei.

sphere = Part.makeSphere(10)
hemisphere = Part.makeSphere(10,Base.Vector(0,0,0),Base.Vector(0,0,1),-90,90,180)

Crearea unui cilindru

Utilizând makeCylinder(radius,height,[pnt,dir,angle]). Implicat avem pnt=Vector(0,0,0),dir=Vector(0,0,1) și angle=360

cylinder = Part.makeCylinder(5,20)
partCylinder = Part.makeCylinder(5,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)

Crearea unui Con

Utilizând makeCone(radius1,radius2,height,[pnt,dir,angle]). Implicit avem pnt=Vector(0,0,0), dir=Vector(0,0,1) and angle=360

cone = Part.makeCone(10,0,20)
semicone = Part.makeCone(10,0,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)

Modificarea Formelor geometrice

Sunt mai multe moduri de a modifica forme. Unele sunt operații simple de transformare cum ar fi mișcările sau formele rotative, altele sunt mai complexe, cum ar fi unirea și scăderea unei forme de alta. Țineți cont de asta

Operații de Transformare

Translatarea unei forme

Translatarea estr de fapt actul de mutarea a unei forme dintr-un loc în altul. Orice formă (muchie, fațetă, cube, etc...) poate fi translată în același mod:

myShape = Part.makeBox(2,2,2)
myShape.translate(Base.Vector(2,0,0))

Aceasta va muta forma noastră "myShape" 2 unități in direcția x .

Rotația unei forme

Pentru a roti o formă, aveți nevoie de uncentru de rotație, axa, și unghiul de rotație:

myShape.rotate(Vector(0,0,0),Vector(0,0,1),180)

Codul de mai sus va roti forma cu 180 degrees în jurul axei Z .

Transformările generice cu matrici

O matrice este o modalitate foarte convenabilă de a stoca transformările în lumea reală 3D. Într-o singură matrice, puteți defini valorile de translația, rotirea și scalarea care trebuie aplicate unui obiect. De exemplu:

myMat = Base.Matrix()
myMat.move(Base.Vector(2,0,0))
myMat.rotateZ(math.pi/2)

Notă: Matricile FreeCAD lucrează în radiani. De altfel, aproape toate operațiile de matrice care iau un vector pot lua de asemenea 3 numere, astfel încât cele două linii fac același lucru:

myMat.move(2,0,0)
myMat.move(Base.Vector(2,0,0))

Atunci când matricea noastră este definită, o putem aplica formei noastre. FreeCAD oferă 2 metode pentru a face acest lucru: transformShape() and transformGeometry(). Diferența este că, cu prima, sunteți siguri că nu vor avea loc deformări (a se vedea "scalarea unei forme" de mai jos). Deci, putem aplica transformarea noastră astfel:

myShape.transformShape(myMat)

ori

myShape.transformGeometry(myMat)

Scalarea unei forme geometrice

Scalarea unei forme este o operațiune mai periculoasă deoarece, spre deosebire de translație sau rotație, scalarea neuniformă (cu valori diferite pentru x, y și z) poate modifica structura formei. De exemplu, scalarea unui cerc cu o valoare mai mare pe orizontală decât pe verticală îl va transforma într-o elipsă, care se comportă matematic foarte diferit. Pentru scalare, noi nu putem folosi transformShape, trebuie să folosimtransformGeometry():

myMat = Base.Matrix()
myMat.scale(2,1,1)
myShape=myShape.transformGeometry(myMat)

Operații Booleene

Subtraction

Scăderea unei forme de la alta se numește "tăiat" în jargonul OCC/FreeCAD și se face astfel:

cylinder = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
sphere = Part.makeSphere(5,Base.Vector(5,0,0))
diff = cylinder.cut(sphere)

Intersection

În același mod, intersecția dintre două forme este denumită "comună" și se face pe aici:

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
common = cylinder1.common(cylinder2)

Union

Unionea este numită "fuse" și lucrează în același mod:

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
fuse = cylinder1.fuse(cylinder2)

Section

O secțiune este intersecția dintre o formă solidă și o formă plană. Va returna o curbă de intersecție, un compus cu margini

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
section = cylinder1.section(cylinder2)
section.Wires
> []
section.Edges
> [<Edge object at 0D87CFE8>, <Edge object at 019564F8>, <Edge object at 0D998458>, 
 <Edge  object at 0D86DE18>, <Edge object at 0D9B8E80>, <Edge object at 012A3640>, 
 <Edge object at 0D8F4BB0>]

Extrusion

Extrudarea este actul de "împingere" a unei forme plate într-o anumită direcție care are ca rezultat un corp solid. Gândiți-vă la un cerc devenind un tub prin "împingerea lui":

circle = Part.makeCircle(10)
tube = circle.extrude(Base.Vector(0,0,2))

Dacă cercul dvs. este gol, veți obține un tub gol. Dacă cercul dvs. este de fapt un disc, cu o față plină, veți obține un cilindru solid:

wire = Part.Wire(circle)
disc = Part.Face(wire)
cylinder = disc.extrude(Base.Vector(0,0,2))

Explorarea formelor

Puteți explora ușor structura datelor topologice:

import Part
b = Part.makeBox(100,100,100)
b.Wires
w = b.Wires[0]
w
w.Wires
w.Vertexes
Part.show(w)
w.Edges
e = w.Edges[0]
e.Vertexes
v = e.Vertexes[0]
v.Point

Dacă tastați liniile de mai sus în interpretul python, veți câștiga o bună înțelegere a structurii obiectelor Part. Aici, comanda makeBox () a creat o formă solidă. Acest solid, ca toate componentele solide, conține fațete. Fețele conțin întotdeauna polilinii, care sunt liste de margini care delimitează fața. Fiecare față are cel puțin o polilinie închisă (poate avea mai multe dacă fața are una sau mai multe găuri). În polilinie, putem privi la fiecare margine separat, iar în interiorul fiecărei margini, putem vedea vârfurile. Liniile drepte au doar două vârfuri, evident.

Analiza muchiei

În cazul unei muchii, care este o curbă arbitrară, este cel mai probabil să doriți a face o discretizare. În FreeCAD marginile sunt parametrizate după lungimile lor. Asta înseamnă ca puteți parcurge o margine/curba pe lungimea ei:

import Part
box = Part.makeBox(100,100,100)
anEdge = box.Edges[0]
print anEdge.Length

Now you can access a lot of properties of the edge by using the length as a position. That means if the edge is 100mm long the start position is 0 and the end position 100.

anEdge.tangentAt(0.0)      # tangent direction at the beginning
anEdge.valueAt(0.0)        # Point at the beginning
anEdge.valueAt(100.0)      # Point at the end of the edge
anEdge.derivative1At(50.0) # first derivative of the curve in the middle
anEdge.derivative2At(50.0) # second derivative of the curve in the middle
anEdge.derivative3At(50.0) # third derivative of the curve in the middle
anEdge.centerOfCurvatureAt(50) # center of the curvature for that position
anEdge.curvatureAt(50.0)   # the curvature
anEdge.normalAt(50)        # normal vector at that position (if defined)

Utilizarea selecție

Aici vedem acum modul în care putem folosi selecția utilizată de utilizator în vizualizator. Mai întâi de toate, creăm o casetă și o afișează în vizualizator

import Part
Part.show(Part.makeBox(100,100,100))
Gui.SendMsgToActiveView("ViewFit")

Selectați acum unele fețe sau margini. Cu acest script puteți itera toate obiectele selectate și sub-elementele acestora:

for o in Gui.Selection.getSelectionEx():
	print o.ObjectName
	for s in o.SubElementNames:
		print "name: ",s
	for s in o.SubObjects:
		print "object: ",s

Selectați unele margini și acest progrămel script va calcula lungimea:

length = 0.0
for o in Gui.Selection.getSelectionEx():
	for s in o.SubObjects:
		length += s.Length
print "Length of the selected edges:" ,length

Exemplul complet : Sticla OCC (Open CASCADE Technology)

Un exemplu tipic găsiți în OpenCasCade Technology Tutorial Este cum se construiește o sticlă. Acesta este un exercițiu bun și pentru FreeCAD. De fapt, puteți urma exemplul nostru de mai jos și pagina OCC simultan, veți înțelege cum sunt implementate structurile OCC în FreeCAD. Scenariul complet de mai jos este, de asemenea, inclus în instalarea FreeCAD (în interiorul folderului Mod/Part) și poate fi apelat de la interpretul python prin tastarea:

import Part
import MakeBottle
bottle = MakeBottle.makeBottle()
Part.show(bottle)

Programul script complet

aici este programul script complet MakeBottle:

import Part, FreeCAD, math
from FreeCAD import Base

def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0):
   aPnt1=Base.Vector(-myWidth/2.,0,0)
   aPnt2=Base.Vector(-myWidth/2.,-myThickness/4.,0)
   aPnt3=Base.Vector(0,-myThickness/2.,0)
   aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0)
   aPnt5=Base.Vector(myWidth/2.,0,0)
   
   aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4)
   aSegment1=Part.LineSegment(aPnt1,aPnt2)
   aSegment2=Part.LineSegment(aPnt4,aPnt5)
   aEdge1=aSegment1.toShape()
   aEdge2=aArcOfCircle.toShape()
   aEdge3=aSegment2.toShape()
   aWire=Part.Wire([aEdge1,aEdge2,aEdge3])
   
   aTrsf=Base.Matrix()
   aTrsf.rotateZ(math.pi) # rotate around the z-axis
   
   aMirroredWire=aWire.transformGeometry(aTrsf)
   myWireProfile=Part.Wire([aWire,aMirroredWire])
   myFaceProfile=Part.Face(myWireProfile)
   aPrismVec=Base.Vector(0,0,myHeight)
   myBody=myFaceProfile.extrude(aPrismVec)
   myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
   neckLocation=Base.Vector(0,0,myHeight)
   neckNormal=Base.Vector(0,0,1)
   myNeckRadius = myThickness / 4.
   myNeckHeight = myHeight / 10
   myNeck = Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)	
   myBody = myBody.fuse(myNeck)
   
   faceToRemove = 0
   zMax = -1.0
   
   for xp in myBody.Faces:
       try:
           surf = xp.Surface
           if type(surf) == Part.Plane:
               z = surf.Position.z
               if z > zMax:
                   zMax = z
                   faceToRemove = xp
       except:
           continue
   
   myBody = myBody.makeFillet(myThickness/12.0,myBody.Edges)
   
   return myBody

el = makeBottle()
Part.show(el)

Explicații detaliate

import math
import Part
import FreeCAD
from FreeCAD import Base

Vom avea, desigur, modulul Part, dar și modulul FreeCAD.Base, care conține structuri de bază FreeCAD precum vectori și matrice.

def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0):
    aPnt1 = Base.Vector(-myWidth/2.,0,0)
    aPnt2 = Base.Vector(-myWidth/2.,-myThickness/4.,0)
    aPnt3 = Base.Vector(0,-myThickness/2.,0)
    aPnt4 = Base.Vector(myWidth/2.,-myThickness/4.,0)
    aPnt5 = Base.Vector(myWidth/2.,0,0)

Aici definim funcția makeBottle. Această funcție poate fi apelată fără argumente, așa cum am făcut mai sus, caz în care valorile implicite pentru lățime, înălțime, și grosime vor fi utilizate. Apoi, definim câteva puncte care vor fi utilizate pentru construirea profilului de bază.

...
    aArcOfCircle = Part.Arc(aPnt2,aPnt3, aPnt4)
    aSegment1 = Part.LineSegment(aPnt1, aPnt2)
    aSegment2 = Part.LineSegment(aPnt4, aPnt5)

Aici definim geometria: un arc, format din 3 puncte și două segmente de linie, formate din câte 2 puncte.

...
    aEdge1 = aSegment1.toShape()
    aEdge2 = aArcOfCircle.toShape()
    aEdge3 = aSegment2.toShape()
    aWire = Part.Wire([aEdge1, aEdge2, aEdge3])

Vă amintiți diferența dintre geometrie și forme? Aici construim forme geometrice ale construcției noastre. 3 margini (marginile pot fi drepte sau curbate), apoi o poliline realizează acele trei margini.

...
    aTrsf = Base.Matrix()
    aTrsf.rotateZ(math.pi) # rotate around the z-axis
    aMirroredWire = aWire.transformGeometry(aTrsf)
    myWireProfile = Part.Wire([aWire, aMirroredWire])

Până acum am construit doar o jumătate de profil. Mai ușor decât construirea întregului profil în același mod, putem doar să simetrizăm ceea ce am făcut și să lipim ambele jumătăți împreună. Așadar, vom crea mai întâi o matrice. O matrice este o modalitate foarte comună de a aplica transformări la obiecte din lumea 3D, deoarece poate conține într-o singură structură toate transformările de bază pe care obiectele 3D le pot suferi (mișcare, rotire și scalare). Aici, după ce creăm matricea, o oglindim și creăm o copie a poliliniei noastre cu matricea de transformare aplicată. Acum avem două polilinii și putem face o a treia polilinie din ele, deoarece poliliniile sun nt de fapt liste de margini.

...
    myFaceProfile = Part.Face(myWireProfile)
    aPrismVec = Base.Vector(0,0,myHeight)
    myBody = myFaceProfile.extrude(aPrismVec)
    myBody = myBody.makeFillet(myThickness/12.0,myBody.Edges)

Acum că avem o polilinie închisă, aceasta poate fi transformat într-o fațetă. Odată ce avem o fațetă, o putem extruda. În acest fel, am făcut de fapt un solid. Apoi aplicăm o mică și frumoasă (pilire) rotunjire la obiectul nostru pentru că ne pasă de un design bun, nu-i așa?

...
    neckLocation = Base.Vector(0, 0, myHeight)
    neckNormal = Base.Vector(0, 0, 1)
    myNeckRadius = myThickness / 4.0
    myNeckHeight = myHeight / 10
    myNeck = Part.makeCylinder(myNeckRadius, myNeckHeight, neckLocation, neckNormal)

Apoi, corpul sticlei noastre este făcută, mai avem nevoie să creăm un gât. Deci noi face un nou solid, cu un cilindru.

...
    myBody = myBody.fuse(myNeck)

Funcționarea siguranței, care în alte aplicații este uneori numită uniune, este foarte puternică. Va avea grijă de lipirea a ceea ce trebuie lipit și de a elimina părțile care trebuie să fie eliminate.

...
    return myBody

Apoi, ne întoarcem Piesa noastră solidă ca rezultat al funcției noastre.

el = makeBottle()
Part.show(el)

În final, numim funcția definită și facem piesa vizibilă.

Paralelipiped găurit

Aici este un exemplul de construcție a unui paralelipiped găurit.

Construcția este realizată dintr-un capăt în altul iar când paralelipipedul este terminat, acesta este găurit cu un cilindru.

import Draft, Part, FreeCAD, math, PartGui, FreeCADGui, PyQt4
from math import sqrt, pi, sin, cos, asin
from FreeCAD import Base

size = 10
poly = Part.makePolygon( [ (0,0,0), (size, 0, 0), (size, 0, size), (0, 0, size), (0, 0, 0)])

face1 = Part.Face(poly)
face2 = Part.Face(poly)
face3 = Part.Face(poly)
face4 = Part.Face(poly)
face5 = Part.Face(poly)
face6 = Part.Face(poly)
     
myMat = FreeCAD.Matrix()
myMat.rotateZ(math.pi/2)
face2.transformShape(myMat)
face2.translate(FreeCAD.Vector(size, 0, 0))

myMat.rotateZ(math.pi/2)
face3.transformShape(myMat)
face3.translate(FreeCAD.Vector(size, size, 0))

myMat.rotateZ(math.pi/2)
face4.transformShape(myMat)
face4.translate(FreeCAD.Vector(0, size, 0))

myMat = FreeCAD.Matrix()
myMat.rotateX(-math.pi/2)
face5.transformShape(myMat)

face6.transformShape(myMat)               
face6.translate(FreeCAD.Vector(0,0,size))

myShell = Part.makeShell([face1,face2,face3,face4,face5,face6])   

mySolid = Part.makeSolid(myShell)
mySolidRev = mySolid.copy()
mySolidRev.reverse()

myCyl = Part.makeCylinder(2,20)
myCyl.translate(FreeCAD.Vector(size/2, size/2, 0))

cut_part = mySolidRev.cut(myCyl)

Part.show(cut_part)

Încărcare și salvare

Există mai multe moduri de a vă salva munca în modulul Part. Puteți bineînțeles salvați documentul FreeCAD, dar puteți salva și un obiect piesă/Part direct la formatele CAD obișnuite, cum ar fi BREP, IGS, STEP și STL.

Salvarea unei forme într-un fișier este ușoară. Există metode disponibile exportBrep(), exportIges(), exportStl() și exportStep() pentru toate obiectele de formă. Deci, faci:

import Part
s = Part.makeBox(0,0,0,10,10,10)
s.exportStep("test.stp")

acest lucru va salva caseta noastră într-un fișier STEP. Pentru a încărca un BREP, IGES sau STEP, pur și simplu faceți contrariul:

import Part
s = Part.Shape()
s.read("test.stp")

Pentru a converti un fișier .stp în .igs este simplu :

import Part
 s = Part.Shape()
 s.read("file.stp")       # incoming file igs, stp, stl, brep
 s.exportIges("file.igs") # outbound file igs

Rețineți că importul sau deschiderea fișierelor BREP, IGES sau STEP poate fi de asemenea făcute direct din File -> Open or File -> Import menu, iar la export este File -> Export

Template:Powerdocnavi/ro


Under construction icon-blue.svg
This documentation is work in progress. Please don't mark it as translatable since it will change the next hours and days.
Arrow-left.svg Previous: Mesh Scripting
Next: Scenegraph Arrow-right.svg

Conversia obiectelor Piese în Plasă

Conversia obiectelor de nivel superior, cum ar fi Part shell în obiecte mai simple, cum ar fi meshes este o operație simplă, în care toate fațetele unui obiect Piesă i se aplică o discretizarea în triunghiur. Rezultatul acestei discretizări(tessellation) este apoi folosit pentru a construi o plasă: (să presupunem că documentul nostru conține un obiect de piesă)

The following code assumes our document contains one Part object.

# let's assume our document contains one Part object
import Mesh
faces = []
shape = FreeCAD.ActiveDocument.ActiveObject.Shape
triangles = shape.tessellate(1) # the number represents the precision of the tessellation
for tri in triangles[1]:
    face = []
    for i in tri:
        face.append(triangles[0][i])
    faces.append(face)

m = Mesh.Mesh(faces)
Mesh.show(m)

Uneori, discretizarea -transformarea în ochiuri de plată triunghiulare- a anumitor anumitor fețe oferite de OpenCascade este destul de urâtă. Dacă fața are un spațiu de parametru dreptunghiular și nu conține găuri sau alte curbe de tăiere, puteți crea și o plasă pe cont propriu:

import Mesh
def makeMeshFromFace(u, v, face):
    (a, b, c, d) = face.ParameterRange
    pts = []
    for j in range(v):
        for i in range(u):
            s = 1.0 / (u - 1) * (i * b + (u - 1 - i) * a)
            t = 1.0 / (v - 1) * (j * d + (v - 1 - j) * c)
            pts.append(face.valueAt(s, t))

    mesh = Mesh.Mesh()
    for j in range(v - 1):
        for i in range(u - 1):
            mesh.addFacet(pts[u * j + i], pts[u * j + i + 1], pts[u * (j + 1) + i])
            mesh.addFacet(pts[u * (j + 1) + i], pts[u * j + i + 1], pts[u * (j + 1) + i + 1])

    return mesh

Convertirea Plaselor în obiecte Part

Convertirea ochiurilor de plasă în obiecte piese este o operație extrem de importantă în lucrul cu CAD, pentru că de multe ori primiți date 3D în format de ochiuri de plasă de la alte persoane sau ieșite din alte aplicații. Meshurile sunt foarte practice pentru a reprezenta geometria liberă și pentru scenele vizuale mari, deoarece este foarte ușoară, dar pentru CAD, în general, preferăm obiecte de nivel mai înalt care transportă mult mai multe informații, cum ar fi ideea de solid sau fațetele făcute din curbe în loc de triunghiuri.

Convertirea ochiurilor de plasă în obiecte de nivel superior (manipulate de Part Module în FreeCAD) nu este o operație ușoară. Mesh-urile pot fi realizate din mii de triunghiuri (de exemplu, atunci când sunt generate de un scanner 3D) și având solide realizate din același număr de fețe ar fi extrem de greu de manipulat. Deci, în general, doriți să optimizați obiectul când faceți conversia.

FreeCAD oferă în prezent două metode pentru a transforma Plasele în obiecte piese (Part). Prima metodă este o conversie simplă, directă, fără optimizare:

import Mesh
import Part

mesh = Mesh.createTorus()
shape = Part.Shape()
shape.makeShapeFromMesh(mesh.Topology, 0.05) # the second arg is the tolerance for sewing
solid = Part.makeSolid(shape)
Part.show(solid)

Cea de-a doua metodă oferă posibilitatea de a considera aspectul ochiurilor de plasă coplanare atunci când unghiul dintre ele este sub o anumită valoare. Acest lucru permite construirea unor forme mai simple: (să presupunem că documentul nostru conține un obiect Mesh)

The following code assumes our document contains one Mesh object.

# let's assume our document contains one Mesh object
import Mesh
import Part
import MeshPart

faces = []
mesh = App.ActiveDocument.ActiveObject.Mesh
segments = mesh.getPlanes(0.00001) # use rather strict tolerance here
 
for i in segments:
  if len(i) > 0:
     # a segment can have inner holes
     wires = MeshPart.wireFromSegment(mesh, i)
     # we assume that the exterior boundary is that one with the biggest bounding box
     if len(wires) > 0:
        ext = None
        max_length=0
        for i in wires:
           if i.BoundBox.DiagonalLength > max_length:
              max_length = i.BoundBox.DiagonalLength
              ext = i

        wires.remove(ext)
        # all interior wires mark a hole and must reverse their orientation, otherwise Part.Face fails
        for i in wires:
           i.reverse()

        # make sure that the exterior wires comes as first in the list
        wires.insert(0, ext)
        faces.append(Part.Face(wires))

shell = Part.Compound(faces)
Part.show(shell)
# solid = Part.Solid(Part.Shell(faces))
# Part.show(solid)

Template:Powerdocnavi/ro


Arrow-left.svg Previous: Mesh to Part
Next: Pivy Arrow-right.svg

Introduction

Geometria care apare în vizualizările 3D ale FreeCAD este redată de biblioteca Coin3D. Coin3D este o implementare satandard a OpenInventor.Software-ul openCascade oferă, de asemenea, aceeași funcționalitate, dar s-a hotărât, încă de la începuturile FreeCAD, să nu se folosească de vizualizatorul openCascade încorporat ci mai degrabă să se treacă la software-ul coin3D mai performant. O modalitate bună de a învăța despre această bibliotecă este cartea Open Inventor Mentor.

Description

OpenInventor este de fapt un limbaj de descriere a scenei 3D. Scena descrisă în openInventor este apoi redată în OpenGL pe ecran. Coin3D are grijă să facă acest lucru, astfel încât programatorul nu are nevoie să se ocupe de apelurile complexe openGL, ci doar să-l furnizeze cu un cod OpenInventor valabil. Marele avantaj este că OpenInventor este un standard foarte bine cunoscut și bine documentat.

Una din marile servicii pe care FreeCAD le face pentru dvs. este de a traduce în mod deschis informația geometriei OpenCascade în limbajul openInventor.

OpenInventor descrie o scenă 3D sub formă de ascenegraph, like the one below:

Scenegraph.gif

Scenegraph.gif image from Inventor mentor

Un scenograf openInventor descrie tot ce face parte dintr-o scenă 3D, cum ar fi geometria, culorile, materialele, luminile etc., și organizează toate datele într-o structură convenabilă și clară. Totul poate fi grupat în sub-structuri, permițându-vă să vă organizați conținutul scenei cât de mult vă place. Iată un exemplu de fișier openInventor:

#Inventor V2.0 ascii
 
Separator { 
    RotationXYZ {	
       axis Z
       angle 0
    }
    Transform {
       translation 0 0 0.5
    }
    Separator {	
       Material {
          diffuseColor 0.05 0.05 0.05
       }
       Transform {
          rotation 1 0 0 1.5708
          scaleFactor 0.2 0.5 0.2
       }
       Cylinder {
       }
    }
}

După cum puteți vedea, structura este foarte simplă. Utilizați separatoare pentru a vă organiza datele în blocuri, un pic asemănător cu modul cum ați organiza fișierele în foldere. Fiecare afirmație afectează ce urmează, de exemplu primele două elemente ale separatorului rădăcină sunt o rotație și o translație, ambele afectează următorul element, care este un separator. În acest separator se definește un material și o altă transformare. Cilindrul nostru va fi astfel afectat de ambele transformări, cel care a fost aplicat direct la acesta și cel aplicat separatorului părinte.

De asemenea, avem multe alte tipuri de elemente pentru organizarea scenei noastre, cum ar fi grupuri, switch-uri sau adnotări. Putem defini materiale foarte complexe pentru obiectele noastre, cu culori, texturi, moduri de umbrire și transparență. De asemenea, putem defini lumini, camere de luat vederi și chiar mișcări. Este posibil chiar să încorporați fragmente de script-uri în fișierele openInventor, pentru a defini comportamente mai complexe.

Dacă sunteți interesat să aflați mai multe despre openInventor, mergeți direct la cele mai faimoase referințe ale sale Inventor mentor.

În FreeCAD, în mod normal, nu trebuie să interacționăm direct cu scenograful openInventor. Fiecare obiect dintr-un document FreeCAD, fiind o plasă, o formă a unei piese sau orice altceva, devine automat convertit în codul openInventor și inserat în descrierea grafică a scenei principală pe care îl vedeți într-o vizualizare 3D. Această descriere grafică este actualizat continuu când faceți modificări, adăugați sau eliminați obiecte în document. De fapt, fiecare obiect (în spațiul App) are un furnizor de vizualizare (un obiect corespunzător în spațiul Gui), responsabil pentru emiterea codului openInventor.

Dar există multe avantaje pentru a putea accesa scenegraful direct. De exemplu, putem schimba temporar aspectul unui obiect sau putem adăuga obiecte în scenă care nu au o existență reală în documentul FreeCAD, cum ar fi geometria construcției, ajutoarele, sugestii grafice sau unelte cum ar fi manipulatorii sau informații pe ecran .

FreeCAD dispune de mai multe instrumente pentru a vedea sau a modifica codul openInventor. De exemplu, următorul cod python va afișa reprezentarea openInventor a unui obiect selectat:

obj = FreeCAD.ActiveDocument.ActiveObject
viewprovider = obj.ViewObject
print viewprovider.toString()

Dar avem, de asemenea, un modul python care permite accesul complet la tot ceea ce gestionează Coin3D, cum ar fi descrierea grafică a scenei FreeCAD. Deci, citiți mai departe Pivy.

top

Template:Powerdocnavi/ro


Arrow-left.svg Previous: Scenegraph
Next: PySide Arrow-right.svg

Introduction

Pivy este o bibliotecă de coduri care servește drept punte între Python și coin Coin3d, biblioteca de randare 3D utilizată de către FreeCAD. Atunci când este importat într-un interpretor python care rulează, Pivy permite dialogul direct și imediat cu orice procedură Coin3d care rulează scenegraphs, ca dexemplu vizualizările FreeCAD 3D , sau chiar creare unora noi. Pivy este inclus în pachetul standard de instalare FreeCAD .

Biblioteca coin este împărțită în mai multe piese, coin însuși, este pentru manipularea scripturilor și legăturilor pentru mai multe sisteme GUI, cum ar fi ferestrele sau, ca în cazul nostru, qt. Modulele respective sunt disponibile și pentru piv, în funcție de situația în care sunt prezente în sistem. Modulul coin este întotdeauna prezent și este ceea ce vom folosi oricum, deoarece nu va trebui să ne pese de ancorarea afișajului nostru 3D în orice interfață, deoarece este deja făcută de cpătre FreeCAD. Tot ce trebuie să facem este:

from pivy import coin

Accesarea și modificarea unui scene grafice 3D

Am văzut în pagina Scenegraph cum Coin organizează o scenă tipică. Tot ce este afișat 3D în FreeCAD este construit și festionat de către Coin. Avem o rădăcină, iar toate obiectele de pe ecran sunt copiii lui.legat prin noduri

Free cad are un mod facil de a accede la radacina unei scene 3D:

sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
print(sg)

Radăcina scenei va fi :

<pivy.coin.SoSelection; proxy of <Swig Object of type 'SoSelection *' at 0x360cb60> >

Putrem inspecta imediat copii scenei noastre:

for node in sg.getChildren():
    print(node)

Unele dintre aceste noduri, cum ar fi SoSeparators sau SoGroups, pot avea proprii copii. Lista completă a obiectelor disponibile pentru programul Coin poate fi găsită în official coin documentation.

Acum să încercăm să adăugăm ceva la scenă (proiect). Vom adăuga un frumos cub roșu:

col = coin.SoBaseColor()
col.rgb = (1, 0, 0)
cub = coin.SoCube()
myCustomNode = coin.SoSeparator()
myCustomNode.addChild(col)
myCustomNode.addChild(cub)
sg.addChild(myCustomNode)

și aici este (frumosul ) nostru cub roșu. Acum. hai să încerca aceasta:

col.rgb = (1, 1, 0)

Ai văzut? Totul este încă accesibil și editabil din voleu. Nu este nevoie să recalculați sau să reproiectați nimic, Coin are grijă de tot. Puteți adăuga ceea ce doriți la scenă (proiectul), schimbați proprietățile, ascundeți obiecte, expuneți temporar obiecte, faceți ceva. Desigur, acest lucru afectează numai afișarea vizualizării 3D. Afișarea documentului deschis este recalculată de FreeCAD și recalculează un obiect atunci când trebuie să fie. Deci, dacă modificați aspectul unui obiect existent în FreeCAD, aceste modificări se vor pierde dacă obiectul este recalculat sau când redeschideți fișierul.

Un lucru, pentru a lucra cu scripturile în scenariile tale, poți, când este necesar, să accesezi câteva proprietăți ale nodurilor pe care le-ai adăugat. De exemplu, dacă vrem să mutăm cubul, am fi adăugat un nod SoTranslation la nodul nostru personalizat și,el ar fi arătat astfel:

col = coin.SoBaseColor()
col.rgb=(1, 0, 0)
trans = coin.SoTranslation()
trans.translation.setValue([0, 0, 0])
cub = coin.SoCube()
myCustomNode = coin.SoSeparator()
myCustomNode.addChild(col)
myCustomNode.addChild(trans)
myCustomNode.addChild(cub)
sg.addChild(myCustomNode)

Rețineți că într-un scenariu openInventor, ordinea este importantă. Un nod afectează ceea ce urmează, astfel încât să puteți spune ceva de genul: culoarea roșie, cubul, culoarea galbenă, sfera și veți obține un cub roșu și o sferă galbenă. Dacă am adăugat traducerea la nodul nostru personalizat existent, acesta va veni după cub și nu îl va afecta. Dacă am fi introdus-o

trans.translation.setValue([2, 0, 0])

Și cubul nostru ar sări 2 unități la dreapta. În cele din urmă, eliminarea a ceva se face cu:

sg.removeChild(myCustomNode)

top

Utilizarea mecanismului de trecere în argument a unei alte funcții

La callback mechanism, Un mecanism de Callback este sistem care permite unei bilbioteci pe caer o utilizați , ca de ex bilbioteca Coin de a trece în argumente a unei alte funcții pentru l'Objet Python în curs de execuție. Acest lucru este extrem de util, deoarece în acest mod coin vă poate avertiza dacă un anumit eveniment apare în scenă. Coin poate vedea lucruri foarte diferite, cum ar fi poziția mouse-ului, clicurile pe un buton al mouse-ului, tastele de tastatură care sunt apăsate și multe alte lucruri.

FreeCAD are o modalitate ușoară de a utiliza aceste callbacks:

from pivy import coin

class ButtonTest:
    def __init__(self):
        self.view = FreeCADGui.ActiveDocument.ActiveView
        self.callback = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), self.getMouseClick) 

    def getMouseClick(self, event_cb):
        event = event_cb.getEvent()
        if event.getState() == coin.SoMouseButtonEvent.DOWN:
            print("Alert!!! A mouse button has been improperly clicked!!!")
            self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), self.callback)

ButtonTest()

Callback-ul a fost pornit de la un obiect, deoarece obiectul trebuie să ruleze în continuare când apare apelul invers. Vezi de asemenea complete list a posibilelor evenimente și parametrii lor, sau în official coin documentation.

top

Documentație

Din păcate, pivy nu dispune încă de o documentație potrivită, dar deoarece există o traducere exactă a lui coin, puteți utilizat în toată securitatea documetația de referință a lui coin, și utilizați stilul Python în locul stilului c ++ ( par exemple SoFile::getClassTypeId() en c++, serait SoFile.getClassId() en pivy ) c++ style (for example SoFile::getClassTypeId() would in pivy be SoFile.getClassId())

In C++:

SoFile::getClassTypeId()

In Pivy:

SoFile.getClassId()

top

Template:Powerdocnavi/ro


Arrow-left.svg Previous: Pivy

PySide

PySide este un instrument Python multiplatformă obligatoriu pentru a crea GUI în QT. FreeCAD utilizează PySide pentru toate GUI (Graphic User Interface) în interiorul Python. PySide este o alternativă la pachetul PyQt folosit anterior de FreeCAD pentru GUI. PySide are o licență mai permisivă. A se vedea Differences Between PySide and PyQt for more information on the differences.

When you install FreeCAD, you should get both Qt and PySide as part of the package. If you are compiling yourself, then you must verify that these two libraries are installed, in order for FreeCAD to run correctly. Of course, PySide will only work if Qt is present.

In the past, FreeCAD used PyQt, another Qt binding for Python, but in 2013 (1dc122dc9a) the project migrated to PySide because it has a more permissible license.

For more information see:

PySideScreenSnapshot1.jpg PySideScreenSnapshot2.jpg

Examples created with PySide. Left: a simple dialog. Right: a more complex dialog with graphs.


PySide in FreeCAD with Qt5

FreeCAD was developed to be used with Python 2 and Qt4. As these two libraries became obsolete, FreeCAD transitioned to Python 3 and Qt5. In most cases this transition was done without needing to break backwards compatibility.

Normally, the PySide module provides support for Qt4, while PySide2 provides support for Qt5. However, in FreeCAD, there is no need to use PySide2 directly, as a special PySide module is included to handle Qt5.

This PySide module is located in the Ext/ directory of an installation of FreeCAD compiled for Qt5.

/usr/share/freecad/Ext/PySide

This module just imports the necessary classes from PySide2, but places them in the PySide namespace. This means that in most cases the same code can be used with both Qt4 and Qt5, as long as it imports the single PySide module.

PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools

The only unusual aspect is that the PySide2.QtWidgets classes are placed in the PySide.QtGui namespace.

PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox

top

Examples of PySide use

Acestea împart subiectul în 3 părți, diferențiate după nivelul de cunoaștere a PySide, Python și FreeCAD. Prima pagină are o imagine de ansamblu și un material de referință care oferă o descriere a PySide și modul în care sunt setate împreună, în timp ce a doua și a treia pagină sunt în mare parte exemple de cod la diferite niveluri.

Intenția este ca paginile asociate să furnizeze un cod Python simplu pentru a rula PySide, astfel încât utilizatorul care lucrează la o problemă să poată copia cu ușurință codul, să-l lipsească în munca proprie, să-l adapteze după cum este necesar și să se întoarcă la rezolvarea problemelor cu FreeCAD. Sperăm că nu trebuie să meargă pe Internet în căutarea răspunsurilor la problemele PySide. În același timp, această pagină nu are intenția de a înlocui diferitele tutoriale și site-uri de referință PySide disponibile pe web.

top

Documentation

There are some differences in handling of widgets in Qt4 (PySide) and Qt5 (PySide2). The programmer should be aware of these incompatibilities, and should consult the official documentation if something doesn't seem to work as expected on a given platform. Nevertheless, Qt4 is considered obsolete, so most development should target Qt5 and Python 3.

The PySide documentation refers to the Python-style classes; however, since Qt is originally a C++ library, the same information should be available in the corresponding C++ reference.

top

Template:Powerdocnavi/ro


Arrow-left.svg Previous: PySide

Pe lângă tipurile obișnuite de obiecte, cum ar fi adnotările, plasele și obiectele de piese, FreeCAD oferă, de asemenea, uimitoare posibilitate de a scrie scriptul obeictelor 100% Python, numite caracteristici Python. Aceste obiecte se vor comporta exact ca orice alt obiect FreeCAD și vor fi salvate și restaurate automat la salvarea / încărcarea fișierelor.

O particularitate care trebuie înțeleasă, aceste obiecte sunt salvate în fișiere FreeCAD FcStd cu modului python json module. Acest modul transformă un obiect python în șir de caractere(test), permițându-l să fie adăugat la fișierul salvat. Odată încărcat, modulul json utilizează șirul de caracter pentru a recrea obiectul original, cu condiția ca acesta să aibă acces la codul sursă care a creat obiectul. Aceasta înseamnă că dacă salvați un astfel de obiect personalizat și îl deschideți pe o mașină unde codul python care a generat obiectul nu este prezent, obiectul nu va fi recreat. Dacă distribuiți astfel de obiecte ale altora, va trebui să distribuiți în totalitate scriptul python care a creat-o împreună.

Caracteristicile Python respectă aceeași regulă ca toate funcțiile FreeCAD: ele sunt separate în părți App(application) și GUI(interfață grafică). Partea de aplicație, Object App, definește geometria obiectului nostru, în timp ce partea GUI, definește modul în care obiectul va fi afișat pe ecran. Instrumentul View Provider Objet, ca oricare altă caracteristică FreeCAD, este disponibil numai când rulați FreeCAD în propriul GUI. Există mai multe proprietăți și metode disponibile pentru a construi obiectul. Proprietățile trebuie să fie oricare dintre tipurile de proprietăți predefinite oferite de FreeCAD și vor apărea în fereastra de vizualizare a proprietății, astfel încât acestea să poată fi editate de utilizator. În acest fel, obiectele FeaturePython (au toate proprietățile Python) sunt cu adevărat și în totalitate parametrice. Puteți defini proprietăți pentru Obiect și ViewObject separat.

Truc: În versiunile anterioare am folosit modulul Python cPickle. Cu toate acestea, acest modul execută un cod arbitrar și provoacă astfel o problemă de securitate. Astfel, am optat pentru modulul json al Python.

Exemplu de bază

Următorul exemplu poate fi găsit in fișierul src/Mod/TemplatePyMod/FeaturePython.py, împreună cu alte exemple:

'''Examples for a feature class and its view provider.'''

import FreeCAD, FreeCADGui
from pivy import coin

class Box:
    def __init__(self, obj):
        '''Add some custom properties to our box feature'''
        obj.addProperty("App::PropertyLength","Length","Box","Length of the box").Length=1.0
        obj.addProperty("App::PropertyLength","Width","Box","Width of the box").Width=1.0
        obj.addProperty("App::PropertyLength","Height","Box", "Height of the box").Height=1.0
        obj.Proxy = self
   
    def onChanged(self, fp, prop):
        '''Do something when a property has changed'''
        FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
 
    def execute(self, fp):
        '''Do something when doing a recomputation, this method is mandatory'''
        FreeCAD.Console.PrintMessage("Recompute Python Box feature\n")

class ViewProviderBox:
    def __init__(self, obj):
        '''Set this object to the proxy object of the actual view provider'''
        obj.addProperty("App::PropertyColor","Color","Box","Color of the box").Color=(1.0,0.0,0.0)
        obj.Proxy = self
 
    def attach(self, obj):
        '''Setup the scene sub-graph of the view provider, this method is mandatory'''
        self.shaded = coin.SoGroup()
        self.wireframe = coin.SoGroup()
        self.scale = coin.SoScale()
        self.color = coin.SoBaseColor()
       
        data=coin.SoCube()
        self.shaded.addChild(self.scale)
        self.shaded.addChild(self.color)
        self.shaded.addChild(data)
        obj.addDisplayMode(self.shaded,"Shaded");
        style=coin.SoDrawStyle()
        style.style = coin.SoDrawStyle.LINES
        self.wireframe.addChild(style)
        self.wireframe.addChild(self.scale)
        self.wireframe.addChild(self.color)
        self.wireframe.addChild(data)
        obj.addDisplayMode(self.wireframe,"Wireframe");
        self.onChanged(obj,"Color")
 
    def updateData(self, fp, prop):
        '''If a property of the handled feature has changed we have the chance to handle this here'''
        # fp is the handled feature, prop is the name of the property that has changed
        l = fp.getPropertyByName("Length")
        w = fp.getPropertyByName("Width")
        h = fp.getPropertyByName("Height")
        self.scale.scaleFactor.setValue(float(l),float(w),float(h))
        pass
 
    def getDisplayModes(self,obj):
        '''Return a list of display modes.'''
        modes=[]
        modes.append("Shaded")
        modes.append("Wireframe")
        return modes
 
    def getDefaultDisplayMode(self):
        '''Return the name of the default display mode. It must be defined in getDisplayModes.'''
        return "Shaded"
 
    def setDisplayMode(self,mode):
        '''Map the display mode defined in attach with those defined in getDisplayModes.\
                Since they have the same names nothing needs to be done. This method is optional'''
        return mode
 
    def onChanged(self, vp, prop):
        '''Here we can do something when a single property got changed'''
        FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
        if prop == "Color":
            c = vp.getPropertyByName("Color")
            self.color.rgb.setValue(c[0],c[1],c[2])
 
    def getIcon(self):
        '''Return the icon in XPM format which will appear in the tree view. This method is\
                optional and if not defined a default icon is shown.'''
        return """
            /* XPM */
            static const char * ViewProviderBox_xpm[] = {
            "16 16 6 1",
            "   c None",
            ".  c #141010",
            "+  c #615BD2",
            "@  c #C39D55",
            "#  c #000000",
            "$  c #57C355",
            "        ........",
            "   ......++..+..",
            "   .@@@@.++..++.",
            "   .@@@@.++..++.",
            "   .@@  .++++++.",
            "  ..@@  .++..++.",
            "###@@@@ .++..++.",
            "##$.@@$#.++++++.",
            "#$#$.$$$........",
            "#$$#######      ",
            "#$$#$$$$$#      ",
            "#$$#$$$$$#      ",
            "#$$#$$$$$#      ",
            " #$#$$$$$#      ",
            "  ##$$$$$#      ",
            "   #######      "};
            """
 
    def __getstate__(self):
        '''When saving the document this object gets stored using Python's json module.\
                Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
                to return a tuple of all serializable objects or None.'''
        return None
 
    def __setstate__(self,state):
        '''When restoring the serialized object from document we have the chance to set some internals here.\
                Since no data were serialized nothing needs to be done here.'''
        return None


def makeBox():
    FreeCAD.newDocument()
    a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")
    Box(a)
    ViewProviderBox(a.ViewObject)

makeBox()

Things to note

If your object relies on being recomputed as soon as it is created, you must do this manually in the __init__ function as it is not called automatically. This example does not require it because the onChanged method of the Box class has the same effect as the execute function, but the examples below rely on being recomputed before anything is displayed in the 3D view. In the examples, this is done manually with ActiveDocument.recompute() but in more complex scenarios you need to decide where to recompute either the whole document or the FeaturePython object.

This example produces a number of exception stack traces in the report view window. This is because the onChanged method of the Box class is called each time a property is added in __init__. When the first one is added, the Width and Height properties don't exist yet and so the attempt to access them fails.

An explanation of __getstate__ and __setstate__ is in the forum thread obj.Proxy.Type is a dict, not a string.

Proprietăți disponibile

Proprietățile sunt adevăratele pietre de temelie ale obiectelor FeaturePython. Prin intermediul acestora, utilizatorul va putea să interacționeze și să vă modifice obiectul. După crearea unui nou obiect FeaturePython din documentul dvs. (obj = FreeCAD.ActiveDocument.addObject ("App :: FeaturePython", "Box")), puteți obține o listă a proprietăților disponibile prin emiterea:

obj.supportedProperties()

Veți obține o listă cu proprietățile disponibile:

App::PropertyBool
App::PropertyBoolList
App::PropertyFloat
App::PropertyFloatList
App::PropertyFloatConstraint
App::PropertyQuantity
App::PropertyQuantityConstraint
App::PropertyAngle
App::PropertyDistance
App::PropertyLength
App::PropertySpeed
App::PropertyAcceleration
App::PropertyForce
App::PropertyPressure
App::PropertyInteger
App::PropertyIntegerConstraint
App::PropertyPercent
App::PropertyEnumeration
App::PropertyIntegerList
App::PropertyIntegerSet
App::PropertyMap
App::PropertyString
App::PropertyUUID
App::PropertyFont
App::PropertyStringList
App::PropertyLink
App::PropertyLinkSub
App::PropertyLinkList
App::PropertyLinkSubList
App::PropertyMatrix
App::PropertyVector
App::PropertyVectorList
App::PropertyPlacement
App::PropertyPlacementLink
App::PropertyPlacementList
App::PropertyColor
App::PropertyColorList
App::PropertyMaterial
App::PropertyPath
App::PropertyFile
App::PropertyFileIncluded
App::PropertyPythonObject
Part::PropertyPartShape
Part::PropertyGeometryList
Part::PropertyShapeHistory
Part::PropertyFilletEdges
Sketcher::PropertyConstraintList

Când adăugați proprietăți obiectelor dvs. personalizate, aveți grijă de acestea:

  • Nu utilizați caractere "<" sau ">" în descrierile de proprietăți (care ar sparge fragmente de cod în fișierul xml.fcstd)
  • Proprietățile sunt stocate în ordine alfabetică într-un fișier .fcstd. Toate proprietățile ale căror nume vine după ”Shape” sunt așezate în ordine alfabetică . Dacă aveți o formă în proprietățile dvs., și cum orice proprietate al cărei nume vine după "Shape", se poate să aveți parte de comportamente ciudate.

A complete list of property attributes can be seen in the PropertyStandard C++ header file. For instance, if you want to allow the user to enter only a limited range of values (e.g. using PropertyIntegerConstraint), in Python you will assign a tuple containing not only the property value, but also the lower and upper limit as well as the stepsize, as below:

prop = (value, lower, upper, stepsize)

Tipuri de proprietăți

Implicit proprietățile pot fi actualizate. Este posibil să se facă proprietățile numai pentru citire, de exemplu în cazul în care cineva dorește să afișeze rezultatul unei metode. De asemenea, este posibilă ascunderea proprietății. Tipul de proprietate poate fi setat utilizând

obj.setEditorMode("MyPropertyName", mode)

unde mode este un int scurt care poate fi definit ca:

 0 -- modul imolicit, read and write
 1 -- read-only
 2 -- hidden

EditorModes nu sunt definite la reîncărcarea fișierului FreeCAD. Acest lucru ar putea fi făcut prin funcția the __setstate__ function. Vezi http://forum.freecadweb.org/viewtopic.php?f=18&t=13460&start=10#p108072. Folosind setEditorMode proprietățile sunt citite numai în PropertyEditor. S-ar putea schimba încă de la Python. Pentru a le face să citească doar setarea trebuie să fie transmisă direct în interiorul funcției addProperty. A s vedea http://forum.freecadweb.org/viewtopic.php?f=18&t=13460&start=20#p109709 for an example.

Using the direct setting in the addProperty function, you also have more possibilities. In particular, an interesting one is mark a property as an output property. This way FreeCAD won't mark the feature as touched when changing it (so no need to recompute).

Example of output property (see also https://forum.freecadweb.org/viewtopic.php?t=24928):

obj.addProperty("App::PropertyString","MyCustomProperty","","",8)

The property types that can be set at last parameter of the addProperty function are:

 0 -- Prop_None, No special property type
 1 -- Prop_ReadOnly, Property is read-only in the editor
 2 -- Prop_Transient, Property won't be saved to file
 4 -- Prop_Hidden, Property won't appear in the editor
 8 -- Prop_Output, Modified property doesn't touch its parent container
 16 -- Prop_NoRecompute, Modified property doesn't touch its container for recompute


You can find these different property types defined in the source code C++ header for PropertyContainer

Alte exemple mai complexe

Acest exemplu ne face să utilizăm Part Module pentru a crea un octahedron, apoi crează reprezentarea sa coin cu pivy.

Primul este însuși obiectul Document:

import FreeCAD, FreeCADGui, Part
import pivy
from pivy import coin

class Octahedron:
  def __init__(self, obj):
     "Add some custom properties to our box feature"
     obj.addProperty("App::PropertyLength","Length","Octahedron","Length of the octahedron").Length=1.0
     obj.addProperty("App::PropertyLength","Width","Octahedron","Width of the octahedron").Width=1.0
     obj.addProperty("App::PropertyLength","Height","Octahedron", "Height of the octahedron").Height=1.0
     obj.addProperty("Part::PropertyPartShape","Shape","Octahedron", "Shape of the octahedron")
     obj.Proxy = self

  def execute(self, fp):
     # Define six vetices for the shape
     v1 = FreeCAD.Vector(0,0,0)
     v2 = FreeCAD.Vector(fp.Length,0,0)
     v3 = FreeCAD.Vector(0,fp.Width,0)
     v4 = FreeCAD.Vector(fp.Length,fp.Width,0)
     v5 = FreeCAD.Vector(fp.Length/2,fp.Width/2,fp.Height/2)
     v6 = FreeCAD.Vector(fp.Length/2,fp.Width/2,-fp.Height/2)
     
     # Make the wires/faces
     f1 = self.make_face(v1,v2,v5)
     f2 = self.make_face(v2,v4,v5)
     f3 = self.make_face(v4,v3,v5)
     f4 = self.make_face(v3,v1,v5)
     f5 = self.make_face(v2,v1,v6)
     f6 = self.make_face(v4,v2,v6)
     f7 = self.make_face(v3,v4,v6)
     f8 = self.make_face(v1,v3,v6)
     shell=Part.makeShell([f1,f2,f3,f4,f5,f6,f7,f8])
     solid=Part.makeSolid(shell)
     fp.Shape = solid

  # helper mehod to create the faces
  def make_face(self,v1,v2,v3):
     wire = Part.makePolygon([v1,v2,v3,v1])
     face = Part.Face(wire)
     return face

Apoi, avem obiectul furnizorului de vizualizare, responsabil pentru afișarea obiectului în scena 3D:

class ViewProviderOctahedron:
  def __init__(self, obj):
     "Set this object to the proxy object of the actual view provider"
     obj.addProperty("App::PropertyColor","Color","Octahedron","Color of the octahedron").Color=(1.0,0.0,0.0)
     obj.Proxy = self

  def attach(self, obj):
     "Setup the scene sub-graph of the view provider, this method is mandatory"
     self.shaded = coin.SoGroup()
     self.wireframe = coin.SoGroup()
     self.scale = coin.SoScale()
     self.color = coin.SoBaseColor()

     self.data=coin.SoCoordinate3()
     self.face=coin.SoIndexedLineSet()

     self.shaded.addChild(self.scale)
     self.shaded.addChild(self.color)
     self.shaded.addChild(self.data)
     self.shaded.addChild(self.face)
     obj.addDisplayMode(self.shaded,"Shaded");
     style=coin.SoDrawStyle()
     style.style = coin.SoDrawStyle.LINES
     self.wireframe.addChild(style)
     self.wireframe.addChild(self.scale)
     self.wireframe.addChild(self.color)
     self.wireframe.addChild(self.data)
     self.wireframe.addChild(self.face)
     obj.addDisplayMode(self.wireframe,"Wireframe");
     self.onChanged(obj,"Color")

  def updateData(self, fp, prop):
     "If a property of the handled feature has changed we have the chance to handle this here"
     # fp is the handled feature, prop is the name of the property that has changed
     if prop == "Shape":
        s = fp.getPropertyByName("Shape")
        self.data.point.setNum(6)
        cnt=0
        for i in s.Vertexes:
           self.data.point.set1Value(cnt,i.X,i.Y,i.Z)
           cnt=cnt+1
        
        self.face.coordIndex.set1Value(0,0)
        self.face.coordIndex.set1Value(1,1)
        self.face.coordIndex.set1Value(2,2)
        self