Embedding FreeCAD/ro

FreeCAD has the amazing ability to be importable as a python module in other programs or in a standalone python console, together with all its modules and components. It's even possible to import the FreeCAD GUI as python module -- with some restrictions, however.

FreeCAD a la capacité incroyable de pouvoir être importé en tant que module Python dans d'autres programmes ou, dans une console Python autonome, avec tous ses modules et ses composants. Il est même possible d'importer l'interface graphique (GUI) de FreeCAD en tant que module python avec toutefois, quelques restrictions. Mais avec quelques restrictions.

FreeCAD are capacitatea uimitoare de a fi importabil ca modul python în alte programe sau într-o consolă python autonomă, împreună cu toate modulele și componentele sale. Este posibil chiar să importați interfața grafică GUI-ul FreeCAD ca modul python - cu some restrictions, dar cu anumite restricții.

Using FreeCAD without GUI
O primă aplicație directă, ușoară și utilă pe care o puteți face este importul documentelor FreeCAD în programul dvs. În următorul exemplu, vom importa geometria pieselor unui document FreeCAD în blender. Iată scenariul complet. Sper că veți fi impresionat de simplitatea sa: Prima parte importantă este să vă asigurați că Python va găsi biblioteca noastră FreeCAD. Odată ce o găsește, toate modulele FreeCAD, cum ar fi Part, pe care o vom folosi, vor fi disponibile automat. Așa că luăm pur și simplu variabila sys.path, care este unde Python caută module și adăugăm calea FreCAD.Lib. Această modificare este doar temporară și se va pierde atunci când închidem interpretorul nostru python. Un alt mod ar putea fi să faceți o legătură cu biblioteca dvs. FreeCAD într-una din căile de căutare python. Am păstrat calea într-o constantă (FREECADPATH) astfel încât un alt utilizator al scriptului îi va fi mai ușor să configureze propriul sistem

Odată ce suntem siguri că biblioteca este încărcată (secvența try/except), acum putem lucra cu FreeCAD, la fel ca și cum am fi în interiorul interpretului Python al FreeCAD. Deschidem documentul FreeCAD care ne este transmis prin funcția principală main și facem o listă a obiectelor sale. Apoi, pe măsură ce alegem doar să ne pese de geometria piesei, verificăm dacă proprietatea Type a fiecărui obiect conține "Part", apoi o mozaicăm (tessellation).

Mozaicarea (Tessellation) produce o listă de vârfuri(vertex) și o listă de fasțete definite de indici de vârfuri. Acest lucru este perfect, deoarece este exact același mod în care programul Blender definește ochiurile de plasă. Deci, sarcina noastră este ridicol de simplă, adăugăm ambele conținuturi ale listelor la vârfurile și fețetele unei rețele de tip Blender. Când totul este realizat, noi redesenăm ecranul și gata ”c'est fini” !

Bineînțeles, ați văzut că acest script este foarte simplu (de fapt am făcut unul mai avansat aici here),ați putea dori să-l extindeți, de exemplu importarea obiectelor de tip plasă, sau importarea ”Part Geometry” care nu are fațete sau importul altor formate de fișiere pe care FreeCAD le poate citi. De asemenea, ați putea dori să exportați forme geometrice într-un document FreeCAD, care se poate face în același mod. S-ar putea să doriți, de asemenea, să construiți un dialog, astfel încât utilizatorul să poată alege ce să importe, etc.... Frumusețea tuturor acestor lucruri constă de fapt că l-ai lăsat pe FreeCAD să efectueze în totalitate, prezentându-și în același timp rezultatele în programul pe care l-ai ales.

Using FreeCAD with GUI
De la versiunea 4.2 cu Qt are capacitatea de a încorpora plugin-urile dependente de Qt-GUI în aplicații gazdă non-Qt și de a partaja bucla evenimentului gazdei.

Mai presus de toate, pentru FreeCAD, aceasta înseamnă că poate fi importat dintr-o altă aplicație cu interfața sa completă de utilizator (GUI) și în consecință aplicația gazdă controlează pe deplin FreeCAD.

Tot codul python pentru a obține aceasta are numai 2 linii

If the host application is based on Qt then this solution should work on all platforms which Qt supports. However, the host should link the same Qt version as FreeCAD because otherwise you could run into unexpected runtime errors.

For non-Qt applications, however, there are a few limitations you must be aware of. This solution probably doesn't work together with all other toolkits. For Windows it works as long as the host application is directly based on Win32 or any other toolkit that internally uses the Win32 API such as wxWidgets, MFC or WinForms. In order to get it working under X11 the host application must link the "glib" library.

Note, for any console application this solution of course doesn't work because there is no event loop running.

Avertismente
Deși este posibil să importați FreeCAD la un interpretor extern Python, acesta este un scenariu de utilizare obișnuit și necesită o atenție deosebită. În general, este mai bine să folosiți Python inclus în FreeCAD, via o linia de comandă sau ca subproces. Vedeți Start and Configuration pentru mai multe informații asupra ultimelor două opțiuni.

Deoarece modulul FreeCAD Python este compilat din C ++ (mai degrabă decât de afi un modul Python pur), acesta poate fi importat numai de la un interpretorul Python compatibil. În general, acest lucru înseamnă că interpretorul Python trebuie să fie compilat cu același compilator C, cum a fost cel folosit pentru a construi FreeCAD. Informații despre compilatorul folosit pentru a construi un interpretor Python (inclusiv cel construit cu FreeCAD), pot fi găsite la: