Środowisko pacy Arkusz Kalkulacyjny

From FreeCAD Documentation
Revision as of 16:07, 2 May 2022 by Kaktus (talk | contribs) (Created page with "Chociaż w wyrażeniu można użyć numeru wiersza i kolumny w celu odwołania się do komórki, najlepszą praktyką jest nadanie komórce nazwy aliasu i użycie jej. Zobacz...")
Ikonka FreeCAD dla Środowiska pracy Arkusz Kalkulacyjny

Wprowadzenie

Środowisko pracy Arkusz Kalkulacyjny pozwala tworzyć i edytować arkusze kalkulacyjne, używać danych z arkusza kalkulacyjnego jako parametrów w modelu, wypełniać arkusz kalkulacyjny danymi pobranymi z modelu, wykonywać obliczenia i eksportować dane do innych aplikacji arkuszy kalkulacyjnych, takich jak LibreOffice czy Microsoft Excel.

Arkusz kalkulacyjny z komórkami wypełnionymi tekstem i ilościami

Przybory

  • Pogrubienie: ustawia pogrubienie treści wybranych komórek.
  • Kursywa: ustawia treść wybranych komórek na kursywę.
  • Podkreślenia: ustawia treść wybranych komórek jako podkreśloną.
  • Przyciski Czarny oraz Biały ustawia kolory czcionki i tła dla wybranych komórek.

Ustawienia

Wstawianie i usuwanie wierszy i kolumn

Wiersze i kolumny można wstawiać i usuwać, klikając prawym przyciskiem myszy nagłówek wiersza lub kolumny i wybierając odpowiednią opcję z menu podręcznego. Możliwe jest zaznaczenie najpierw wielu wierszy lub kolumn. Można to zrobić, przytrzymując klawisz Ctrl podczas zaznaczania nagłówków lub przytrzymując lewy przycisk myszy i przeciągając.

W programie FreeCAD w wersji 0.19 i wcześniejszych wiersze są wstawiane nad zaznaczonymi wierszami, a kolumny po lewej stronie zaznaczonych kolumn. W programie FreeCAD w wersji 0.20 można określić kierunek wstawiania.

Należy pamiętać, że usunięcie wierszy lub kolumn z danymi może spowodować zepsucie arkusza kalkulacyjnego i Twojego modelu, jeśli opiera się on na arkuszu. W takim przypadku użytkownik nie jest ostrzegany.

Wycinanie i kopiowanie-wklejanie komórek

W komórkach arkuszy kalkulacyjnych programu FreeCAD można wykonywać operacje wycinania i kopiowania-wklejania. Do tych operacji można używać standardowych skrótów klawiszowych: Ctrl + X, Ctrl + C i Ctrl + V. Aby zaznaczyć wiele komórek, przytrzymaj klawisz Ctrl podczas zaznaczania lub przytrzymaj lewy przycisk myszy i przeciągnij, aby zaznaczyć prostokątny zakres komórek.

Operacje wycinania i kopiowania zapisują zawartość i właściwości komórek w Schowku. Operacja wklejania powoduje zapisanie danych w taki sposób, że zawartość lewej górnej komórki zapisanych danych jest umieszczana w aktywnej komórce. Pozostała przechowywana zawartość jest umieszczana względem tej komórki. Formuły są odpowiednio aktualizowane.

Należy pamiętać, że usunięcie komurek z danymi może spowodować zepsucie arkusza kalkulacyjnego i Twojego modelu, jeśli opiera się on na arkuszu. W takim przypadku użytkownik nie jest ostrzegany.

W programie FreeCAD w wersji 0.19 i wcześniejszych występuje błąd, który może powodować zawieszanie się programu FreeCAD, jeśli wklejany jest zakres komórek inny niż prostokątny. Zaleca się zapisanie pracy przed wykonaniem jakichkolwiek operacji wklejania.

Właściwości komórek

Właściwości komórki arkusza kalkulacyjnego można edytować, klikając komórkę prawym przyciskiem myszy i wybierając z menu podręcznego polecenie Właściwości .... Zostanie wyświetlone następujące okno dialogowe:

Zgodnie z informacjami na kartach można zmieniać następujące właściwości:

  • Kolor: kolor tekstu i kolor tła
  • Wyrównanie: wyrównanie tekstu w poziomie i w pionie
  • Styl: styl tekstu: pogrubienie, kursywa, podkreślenie
  • Jednostki: Wyświetl jednostki dla tej komórki. Proszę przeczytać sekcję Jednostki poniżej.
  • Alias: Definiuje alias dla tej komórki. Można go używać w formułach komórek, a także w ogólnych wyrażeniach. Więcej informacji na ten temat znajduje się w sekcji Dane arkusza kalkulacyjnego w wyrażeniach.

Wyrażenia w komórkach

Komórka arkusza kalkulacyjnego może zawierać dowolny tekst lub wyrażenie. Technicznie rzecz biorąc, wyrażenia muszą zaczynać się od znaku równości "=". Jednak arkusz kalkulacyjny stara się być inteligentny. Jeśli wpiszesz coś, co wygląda jak wyrażenie bez znaku "=", zostanie on dodany automatycznie.

Wyrażenia komórek mogą zawierać liczby, funkcje, odwołania do innych komórek i odwołania do właściwości modelu (ale przeczytaj akapit Obecne ograniczenia poniżej). Do komórek odwołujemy się za pomocą ich adresu utworzonego z indeksu kolumny (wielka litera) i wiersza (liczba). Do komórki można się też odwoływać za pomocą jej nazwy alias. Przykład: B4 + A6

Uwaga: Wyrażenia komórek są traktowane przez FreeCAD jak kod programowania. Dlatego podczas edycji zawartości komórki można zauważyć, że nie jest ona zgodna z ustawieniami wyświetlania:

  • separatorem miejsc dziesiętnych jest zawsze kropka
  • liczba wyświetlanych miejsc po przecinku może się różnić od Twoich ustawień w preferencjach.

Odwołania do obiektów w modelu wyjaśniono w sekcji Odniesienia do danych CAD poniżej. Używanie wartości komórek arkusza kalkulacyjnego do definiowania właściwości modelu wyjaśniono w sekcji Dane arkusza kalkulacyjnego w wyrażeniach poniżej. Więcej informacji na temat wyrażeń i dostępnych funkcji można znaleźć na stronie Wyrażenia.

Interakcja między arkuszami kalkulacyjnymi a modelem CAD

Dane znajdujące się w komórkach arkusza kalkulacyjnego mogą być wykorzystywane w wyrażeniach parametrów modelu CAD. W ten sposób arkusz kalkulacyjny może być używany jako źródło wartości parametrów używanych w całym modelu, efektywnie gromadząc wartości w jednym miejscu. Gdy wartości są zmieniane w arkuszu kalkulacyjnym, zostają one przekazane do całego modelu.

Podobnie, właściwości obiektów modelu CAD mogą być używane w wyrażeniach w komórkach arkusza kalkulacyjnego. Pozwala to na wykorzystanie w arkuszu kalkulacyjnym właściwości obiektu, takich jak objętość czy powierzchnia. Jeśli nazwa obiektu w modelu CAD zostanie zmieniona, zmiana ta zostanie automatycznie przeniesiona do wszystkich odwołań w wyrażeniach arkusza kalkulacyjnego używających zmienionej nazwy.

W dokumencie może być używany więcej niż jeden arkusz kalkulacyjny. Arkusz kalkulacyjny można zidentyfikować, używając jego nazwy lub etykiety.

FreeCAD automatycznie przypisuje unikalną nazwę do arkusza kalkulacyjnego podczas jego tworzenia. Nazwy te są zgodne z wzorcem Arkusz kalkulacyjny, Arkusz kalkulacyjny001, Arkusz kalkulacyjny002 i tak dalej. Nazwy tej nie można zmienić ręcznie i nie jest ona widoczna we właściwościach arkusza kalkulacyjnego. Można jej użyć do odwołania się do arkusza kalkulacyjnego w wyrażeniach (zobacz sekcję Dane arkusza kalkulacyjnego w wyrażeniach poniżej).

Etykieta arkusza kalkulacyjnego jest automatycznie ustawiana na nazwę arkusza podczas jego tworzenia. W przeciwieństwie do nazwy, etykietę można zmienić, np. w panelu właściwości lub za pomocą polecenia Zmień nazwę w menu podręcznym. Należy pamiętać, że etykieta arkusza kalkulacyjnego w dokumencie musi być unikalna. Jeśli spróbujesz zmienić etykietę na etykietę używaną już przez inny arkusz kalkulacyjny, FreeCAD nie zaakceptuje nowej etykiety.

FreeCAD sprawdza, czy nie występują zależności cykliczne. Zobacz sekcję obecne ograniczenia.

Odniesienia do danych CAD

Jak wskazano powyżej, w wyrażeniach arkusza kalkulacyjnego można odwoływać się do danych z modelu CAD.

Wyrażenia obliczeniowe w komórkach arkusza kalkulacyjnego zaczynają się od znaku równości . Jednak mechanizm wprowadzania danych w arkuszu kalkulacyjnym stara się być inteligentny. Wyrażenie może być wpisane bez znaku . Jeśli wpisany ciąg znaków jest poprawnym wyrażeniem, znak jest automatycznie dodawany po ostatnim naciśnięciu klawisza Enter. Jeśli wpisany ciąg nie jest poprawnym wyrażeniem (często jest to wynik wpisania czegoś z niewłaściwą literą, np. "MyCube.length" zamiast "MyCube.Length"), nie jest dodawany znak i jest on traktowany jako zwykły ciąg tekstowy.

Uwaga: Powyższe zachowanie (automatyczne wstawianie ) ma kilka nieprzyjemnych konsekwencji:

  • Jeśli chcesz zachować kolumnę nazw odpowiadającą nazwie alias w sąsiedniej kolumnie wartości, musisz wprowadzić nazwę w kolumnie etykiety "przed" podaniem komórki w wartości kolumna jego alias-name. W przeciwnym razie, gdy wprowadzisz nazwę aliasu w kolumnie etykiety, arkusz kalkulacyjny przyjmie, że jest to wyrażenie i zmieni go na „=<nazwa-aliasu>”. Wyświetlany tekst będzie wtedy wartością z komórki <alias-name>.
  • Jeśli popełnisz błąd podczas wpisywania nazwy w kolumnie etykiety i chcesz go poprawić, nie możesz po prostu zmienić go na nazwę aliasu. Zamiast tego musisz najpierw zmienić nazwę aliasu na inną, następnie poprawić nazwę tekstową w kolumnie etykiety, a kolejnie zmienić nazwę aliasu w kolumnie wartości z powrotem na oryginalną.

Jednym ze sposobów obejścia tych problemów jest poprzedzenie etykiet tekstowych odpowiadających nazwom aliasów stałym ciągiem znaków, dzięki czemu staną się one różne. Należy pamiętać, że znak nie będzie działał, ponieważ jest konwertowany na znak . Jednak spacja, choć niewidoczna, będzie działać.

W poniższej tabeli przedstawiono kilka przykładów przy założeniu, że model ma cechę o nazwie "MyCube":

Dane CAD Komórka w arkuszu Rezultat
Długość parametryczna sześcianu środowiska Część =MyCube.Length Długość z jednostkami mm
Objętość sześcianu =MyCube.Shape.Volume Objętość w mm³ bez jednostek
Typ kształtu sześcianu =MyCube.Shape.ShapeType String: Solid
Etykieta sześcianu =MyCube.Label String: MyCube
Współrzędna x środka masy sześcianu =MyCube.Shape.CenterOfMass.x Współrzędna x w mm bez jednostek

Dane arkusza kalkulacyjnego w wyrażeniach

Aby użyć danych arkusza kalkulacyjnego w innych częściach programu FreeCAD, zwykle tworzy się Wyrażenie, które odnosi się do arkusza kalkulacyjnego i komórki zawierającej dane, których chcesz użyć. Arkusze kalkulacyjne można identyfikować na podstawie nazwy lub etykiety, a komórki na podstawie adresu lub aliasu. Autouzupełnianie jest dostępne dla wszystkich form odwołań.

Arkusz kalkulacyjny według nazwy Arkusz kalkulacyjny według etykiety
Komórka według adresu =Spreadsheet042.B5 =<<MySpreadsheet>>.B5
Komórka według aliasu =Spreadsheet042.MyAlias =<<MySpreadsheet>>.MyAlias

Zalecanym sposobem odwoływania się do danych arkusza kalkulacyjnego jest używanie etykiety arkusza i nazwy aliasu komórki. Bardziej szczegółowe omówienie zalet i wad poszczególnych trybów adresowania znajduje się w rozwiniętej sekcji poniżej.

Użycie etykiety arkusza kalkulacyjnego ma tę zaletę, że można ją dowolnie zmieniać, aby opisywała zawartość arkusza. Łatwiej jest również zidentyfikować używany arkusz kalkulacyjny, ponieważ tekst w wyrażeniu odpowiada etykiecie widocznej w widoku modelu i właściwości. Jeśli zdecydujesz się zmienić etykietę arkusza kalkulacyjnego, istniejące odwołania do zawartości arkusza zostaną zaktualizowane, więc nie zepsujesz swoich wyrażeń, zmieniając nazwę arkusza. Wewnętrzna nazwa arkusza kalkulacyjnego nie jest dostępna nigdzie poza edytorem wyrażeń, więc jeśli użyjesz wewnętrznej nazwy, a później zmienisz nazwę arkusza kalkulacyjnego, możesz mieć problem z odnalezieniem źródła danych wyrażenia.

Pamiętaj, że podczas tworzenia nowego arkusza kalkulacyjnego nazwa i etykieta są takie same, więc łatwo jest przypadkowo użyć nazwy arkusza zamiast etykiety. Prostym sposobem na uniknięcie takiej sytuacji jest nadanie arkuszowi sensownej nazwy przed rozpoczęciem używania go w wyrażeniach.

Chociaż w wyrażeniu można użyć numeru wiersza i kolumny w celu odwołania się do komórki, najlepszą praktyką jest nadanie komórce nazwy aliasu i użycie jej. Zobacz Właściwości komórki powyżej, jak ustawić alias. Na przykład, jeśli dane w komórce B1 zawierają parametr długości obiektu, nazwa aliasu MyObject_Length pozwoli na odwołanie się do tej wartości jako <<MyParams>>.MyObject_Length zamiast Spreadsheet.B1. Oprócz tego, że nazwy aliasów są o wiele łatwiejsze do odczytania i zrozumienia, można je również o wiele łatwiej zmienić, jeśli zdecydujemy się na zmianę struktury arkusza kalkulacyjnego. Używanie aliasów ma również tę zaletę, że łatwiej jest sprawdzić, które komórki są używane do sterowania innymi częściami dokumentu. Zauważ, że FreeCAD automatycznie dostosowuje odniesienia do pozycji w wyrażeniach, jeśli wstawiasz lub usuwasz wiersze i kolumny w arkuszu kalkulacyjnym, więc nawet jeśli używasz numerów wierszy i kolumn w wyrażeniu, możesz wstawiać wiersze i kolumny bez naruszania odniesień do otaczających komórek.

Modele złożone i przeliczanie

Edycja arkusza kalkulacyjnego powoduje ponowne obliczenie modelu 3D, nawet jeśli wprowadzone zmiany nie mają wpływu na model. W przypadku złożonego modelu ponowne obliczanie może trwać bardzo długo, a konieczność czekania po każdej edycji jest oczywiście dość irytująca.

Oto trzy rozwiązania, jak sobie z tym poradzić:

  1. Tymczasowo pomiń ponowne przeliczenie:
    • W oknie widoku drzewa kliknij prawym przyciskiem myszy dokument zawierający arkusz kalkulacyjny.
    • Z menu podręcznego wybierz opcję Pomiń przeliczanie.
    • Rozwiązanie to ma dużą wadę. Nowe wartości wprowadzone w arkuszu kalkulacyjnym nie zostaną wyświetlone do czasu ponownego przeliczenia dokumentu. Zamiast tego wyświetlany jest komunikat #OCZEKIWANIE.
    • Możesz dokonać przeliczenia ręcznie, używając polecenia Odświerz, lub wyłączyć opcję Pomiń przeliczanie po zakończeniu edycji.
  2. Użyj makra, aby automatycznie pomijać ponowne obliczenia podczas edycji arkusza kalkulacyjnego:
    • Pobierz i uruchom makrodefinicję skipSheet.FCMacro.
    • To rozwiązanie pozwala zaoszczędzić kilka kroków w porównaniu z pierwszym rozwiązaniem, ale ma też wspomnianą wadę.
  3. Umieść arkusz kalkulacyjny w osobnym pliku FreeCAD:
    • Możesz odwoływać się do danych arkusza kalkulacyjnego z zewnętrznego pliku .FCStd za pomocą takiej składni: =NameOfFile#<<MySpreadsheet>>.MyAlias.
    • Zaletą umieszczenia arkusza kalkulacyjnego w innym pliku w stosunku do wyłączenia ponownych obliczeń jest to, że ponownie przeliczany będzie sam arkusz.
    • Wadą jest to, że model nie będzie automatycznie przeliczany po wprowadzeniu zmian w arkuszu kalkulacyjnym.
    • W sytuacji, gdy najpierw otwieramy plik arkusza kalkulacyjnego, zmieniamy jedną lub więcej wartości, a następnie otwieramy plik modelu, nie ma żadnych informacji o konieczności ponownego przeliczenia modelu. Jeśli jednak otwarte są oba pliki, po użyciu przycisku Odświerz zostanie poprawnie zaktualizowany model po zmianach w pliku arkusza kalkulacyjnego.

Jednostki

W arkuszu kalkulacyjnym z wartościami komórek jest związane pojęcie wymiaru (jednostki). Liczba wprowadzona bez przypisanej jej jednostki nie ma określonego wymiaru. Jednostka powinna być wprowadzona bezpośrednio po wartości liczby, bez odstępów. Jeśli liczba ma przypisaną jednostkę, będzie ona używana we wszystkich obliczeniach. Na przykład pomnożenie dwóch długości z jednostką mm daje pole powierzchni z jednostką mm².

Jeśli komórka zawiera wartość reprezentującą wymiar, należy ją wpisać wraz z odpowiadającą jej jednostką. Chociaż w wielu prostych przypadkach można się obejść bez podawania wartości bezwymiarowej, nie należy podawać jednostki. Jeśli wartość reprezentująca wymiar zostanie wprowadzona bez powiązanej z nią jednostki, pewne sekwencje operacji powodują, że FreeCAD zgłasza niezgodność jednostek w wyrażeniu, podczas gdy wydaje się, że wyrażenie powinno być poprawne. (Można to lepiej zrozumieć, przeglądając ten wątek na forum FreeCAD).

Jednostki wyświetlane dla wartości komórki można zmienić za pomocą okna dialogowego właściwości zakłądka jednostki (powyżej). Nie zmienia to wartości zawartej w komórce, a jedynie konwertuje istniejącą wartość na potrzeby wyświetlania. Wartość używana do obliczeń nie ulega zmianie, a wyniki formuł wykorzystujących tę wartość pozostają niezmienione. Na przykład komórka zawierająca wartość 5.08cm może zostać wyświetlona jako 2cale po zmianie wartości na karcie Jednostki na "cale".

Liczby bezwymiarowej nie można zmienić na liczbę z jednostką za pomocą okna dialogowego właściwości komórki. Można wprowadzić ciąg jednostek i zostanie on wyświetlony, ale komórka nadal będzie zawierać liczbę bezwymiarową. Aby zmienić wartość bezwymiarową na wartość z wymiarem, należy ponownie wprowadzić samą wartość wraz z przypisaną jej jednostką.

Niekiedy może być wskazane usunięcie wymiaru z wyrażenia. Można to zrobić, mnożąc przez 1 z jednostką odwrotną.

Importowanie i eksportowanie

Format CSV

Arkusze kalkulacyjne FreeCAD mogą być importowane i eksportowane do formatu CSV, który może być również odczytywany i zapisywany przez większość innych aplikacji arkuszy kalkulacyjnych, takich jak Microsoft Excel czy LibreOffice Calc. Więcej informacji na ten temat można znaleźć na stronach Import i Eksport.

Format XLSX

Arkusze kalkulacyjne w formacie Excel XLSX można importować za pomocą polecenia Importuj lub polecenia Otwórz. Obsługiwane są następujące funkcje:

  • Wszystkie funkcje, które są dostępne także w arkuszu kalkulacyjnym FreeCAD. Inne funkcje powodują wystąpienie błędu w odpowiedniej komórce po zaimportowaniu.
  • Nazwy aliasów dla komórek.
  • Więcej niż jeden arkusz w arkuszu kalkulacyjnym Excel. W takim przypadku dla każdego arkusza Excela tworzony jest jeden arkusz kalkulacyjny FreeCAD.

Inne funkcje nie są importowane do arkusza kalkulacyjnego FreeCAD.

Wydruki

Aby zachować ustawienia strony niezbędne do drukowania, arkusze kalkulacyjne FreeCAD można drukować, wstawiając je do obiektu widok Arkusza Kalkulacyjnego.

Obecne ograniczenia

FreeCAD sprawdza, czy istnieją zależności cykliczne. Z założenia sprawdzanie to zatrzymuje się na poziomie obiektu arkusza kalkulacyjnego. W konsekwencji nie powinieneś mieć arkusza kalkulacyjnego zawierającego zarówno komórki, których wartości są używane do określania parametrów modelu, jak i komórki, których wartości wykorzystują dane wyjściowe z modelu. Na przykład nie można mieć komórek określających długość, szerokość i wysokość obiektu, a inna komórka odwołuje się do całkowitej objętości wynikowego kształtu. Ograniczenie to można obejść, mając dwa arkusze kalkulacyjne: jeden używany jako źródło danych dla parametrów wejściowych do modelu, a drugi używany do obliczeń opartych na danych wynikowych geometrii.

Podstawy pisania skryptów

import Spreadsheet
sheet = App.ActiveDocument.addObject("Spreadsheet::Sheet","MySpreadsheet")
sheet.Label = "Dimensions"

sheet.set('A1','10mm')
sheet.recompute()
sheet.get('A1')

sheet.setAlias('B1','Diameter')
sheet.set('Diameter','20mm')
sheet.recompute()
sheet.get('Diameter')