OOSheet.
Przykład wykorzystania
Jako przykład podam skrypt, który pobierze dane z arkusza LibreOffice, na ich bazie zmodyfikuje model programu FreeCAD i dodatkowo zwróci wyliczoną objętość modelu do arkusza.Instalacja OOSheet pod Ubuntu
Zakładam, że wszyscy maja LibreOffice i Pythona.OOSheet najszybciej można zainstalować z wykorzystaniem terminala:
sudo apt-get install python-pip
sudo pip install oosheet
Instalacja aktualnej wersji FreeCAD-a
Najlepiej dodać repozytoria PPA:
sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install freecad freecad-doc
Wymagane pomoce dydaktyczne
- Plik klucz.ods z danymi dla naszego modelu.
- Plik modelu klucz.fcstd. Wszystko powinno być zapisane do katalogu fctest.
Przykład
Nasz model bryłowy klucza opiera się na wyciągnięciu (Pad) pojedynczego szkicu. Skrypt będzie dla każdego z wierszy 2-12 arkusza:- zmieniał wartość wyciągnięcia (grubość klucza),
- zmieniał więzy (constraints) szkicu nr: 45 (rozwarcie klucza), 51 (długość klucza), 54 (szerokość łącznika klucza),
- odświeżał model,
- eksportował bryłę do pliku STEP o numerze odpowiadającym wierszowi,
- eksportował widoki klucza do pliku SVG o numerze odpowiadającemu wierszowi,
- liczył objętość bryły i zwracał ją do ostatniej kolumny arkusza.
oocalc fctest/klucz.ods -accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
Następnie otwieramy plik modelu klucz.fcstd w programie Freecad. Teraz po wklejeniu poniższego skryptu do konsoli Pythona w programie FreeCAD, powinny w katalogu fctest pojawić się nowe pliki SVG i STEP. W ostatniej kolumnie arkusza powinny pojawić się też wartości objętości kolejnych modeli.
Treść skryptu:
from oosheet import OOSheet as S # dla wspolpracy z OO Calc
import ImportGui # dla exportu STEP
for keynumber in range (2,13):
skey = str(keynumber)
App.ActiveDocument.Sketch.setDatum(54,S('b'+skey).value) #szer lacznika z arkusza
App.ActiveDocument.Sketch.setDatum(51,S('a'+skey).value) #dlug klucza
App.ActiveDocument.Sketch.setDatum(45,S('d'+skey).value) #rozwarcie klucza
App.ActiveDocument.getObject("Pad").Length = S('c'+skey).value #grubosc klucza
App.ActiveDocument.recompute() #odswiezenie modelu
__objs__=[] #eksport STEP
__objs__.append(FreeCAD.getDocument("klucz").getObject("Pad"))
ImportGui.export(__objs__,'fctest/klucz'+skey+'.stp')
del __objs__
PageFile = open(App.activeDocument().Page.PageResult,'r') #eksport SVG
OutFile = open('fctest/klucz'+skey+'.svg','w')
OutFile.write(PageFile.read())
del OutFile,PageFile
S('e'+skey).value = App.ActiveDocument.getObject("Pad").Shape.Volume #zapis objetosci do arkusza
Ściągnij Video.