Create a FeaturePython object part I/pl: Revision history

Diff selection: Mark the radio buttons of the revisions to compare and hit enter or the button at the bottom.
Legend: (cur) = difference with latest revision, (prev) = difference with preceding revision, m = minor edit.

(newest | oldest) View (newer 50 | ) (20 | 50 | 100 | 250 | 500)

17 May 2024

  • curprev 06:0606:06, 17 May 2024Kaktus talk contribs 16,946 bytes +6 Created page with "To wszystko, wiesz już jak zbudować podstawowy, funkcjonalny obiekt FeaturePython!"
  • curprev 06:0606:06, 17 May 2024Kaktus talk contribs 16,940 bytes +10 Created page with "Powinieneś zobaczyć wyniki drukowania w konsoli Python, dzięki wywołaniu {{incode|recompute()}}, które dodaliśmy do metody {{incode|create()}}. Oczywiście metoda {{incode|execute()}} nie robi tutaj nic poza poinformowaniem nas, że została wywołana, ale jest ona kluczem do magii obiektów FeaturePython."
  • curprev 06:0506:05, 17 May 2024Kaktus talk contribs 16,930 bytes +23 Created page with "Przetestuj kod, ponownie wykonując następujące kroki: *Zapisz i ponownie załaduj moduł. *Usuń wszystkie obiekty. *Utwórz nowy obiekt box."
  • curprev 06:0506:05, 17 May 2024Kaktus talk contribs 16,907 bytes +3 Created page with "Dodaj następujące elementy po funkcji {{incode|__init__()}}:"
  • curprev 06:0506:05, 17 May 2024Kaktus talk contribs 16,904 bytes +44 Created page with "Aby uzyskać pełną listę metod dostępnych do zaimplementowania w klasach FeautrePython, zapoznaj sie z informacjami na stronie Metody FeaturePython."
  • curprev 06:0406:04, 17 May 2024Kaktus talk contribs 16,860 bytes +108 Created page with "Ostatnim elementem wymaganym dla podstawowego obiektu FeaturePython jest przechwytywanie zdarzeń. Obiekt FeaturePython może reagować na zdarzenia za pomocą funkcji zwrotnych. W naszym przypadku chcemy, aby obiekt reagował za każdym razem, gdy zostanie ponownie przeliczony. Innymi słowy, chcemy przechwytywać ponowne obliczenia. Aby to osiągnąć, musimy dodać do klasy obiektu funkcję o określonej nazwie {{incode|execute()}}. Istnieje kilka innych zdarzeń, kt..."
  • curprev 06:0006:00, 17 May 2024Kaktus talk contribs 16,752 bytes +51 Created page with "===Zdarzenia związane z łapaniem==="
  • curprev 06:0006:00, 17 May 2024Kaktus talk contribs 16,701 bytes +55 Created page with "Bez wątpienia zauważyłeś, że wprowadzono trzy różne wartości dla wymiarów: wartość zmiennoprzecinkową ({{incode|10.0}}) i dwa różne ciągi znaków ({{incode|'10 mm'}} i {{incode|'1 cm'}}). Typ {{incode|App::PropertyLength}} zakłada, że wartości zmiennoprzecinkowe są w milimetrach, wartości łańcuchowe są analizowane zgodnie z określonymi jednostkami, a w GUI wszystkie wartości są konwertowane na jednostki określone w preferencjach użytkownika ''..."
  • curprev 05:5905:59, 17 May 2024Kaktus talk contribs 16,646 bytes +33 Created page with "Zauważ również, że właściwości mają jednostki. Dokładniej mówiąc, przyjęły one jednostki liniowe ustawione w preferencjach użytkownika ({{MenuCommand|Edycja → Preferencje ... → Ogólne → Jednostki}}). {{Clear}}"
  • curprev 05:5805:58, 17 May 2024Kaktus talk contribs 16,613 bytes +11 Created page with "Po utworzeniu pola i sprawdzeniu, czy zostało ono ponownie obliczone, wybierz obiekt i sprawdź jego właściwości. Powinieneś zauważyć dwie rzeczy: *Nową grupę właściwości: ''Dimensions''. *Trzy nowe właściwości: ''Height'', ''Length'' and ''Width''."
  • curprev 05:5805:58, 17 May 2024Kaktus talk contribs 16,602 bytes +6 Created page with "Teraz przetestuj zmiany w następujący sposób: *Zapisz zmiany i przeładuj moduł. *Usuń wszystkie obiekty w widoku drzewa. *Utwórz nowy obiekt box z konsoli Python, wywołując {{incode|box.create('myBox')}}."
  • curprev 05:5705:57, 17 May 2024Kaktus talk contribs 16,596 bytes +29 Created page with "'''Uważaj, gdzie rekompilujesz obiekt FeaturePython. Ponowne obliczanie powinno być obsługiwane przez metodę zewnętrzną w stosunku do jego klasy.'''"
  • curprev 05:5705:57, 17 May 2024Kaktus talk contribs 16,567 bytes 0 Created page with "Dodajmy też trochę kodu, aby automatycznie przekompilować dokument. Dodajmy następującą linię nad instrukcją {{incode|return()}} w metodzie {{incode|create()}}:"
  • curprev 05:5705:57, 17 May 2024Kaktus talk contribs 16,567 bytes +8 Created page with "Dodajmy jeszcze kilka właściwości. Wróć do kodu źródłowego i dodaj następujące właściwości do metody {{incode|__init__()}}:"
  • curprev 05:5605:56, 17 May 2024Kaktus talk contribs 16,559 bytes +12 Created page with "W widoku drzewa powinien pojawić się nowy obiekt box: *Wybierz go i spójrz na edytor właściwości. Tam powinieneś zobaczyć właściwość ''Description''. *Najedź kursorem na nazwę właściwości po lewej stronie, a pojawi się podpowiedź z opisem, który podałeś. *Wybierz pole i wpisz dowolny tekst. Zauważysz, że polecenia aktualizacji Pythona są wykonywane i wyświetlane w konsoli podczas wpisywania liter i zmian właściwości."
  • curprev 05:5405:54, 17 May 2024Kaktus talk contribs 16,547 bytes −2 Created page with "Po przeładowaniu modułu zobaczmy, co otrzymamy po utworzeniu obiektu:"
  • curprev 05:5405:54, 17 May 2024Kaktus talk contribs 16,549 bytes +64 Created page with "Po zakończeniu zapisz zmiany i przełącz się z powrotem do FreeCAD. Zanim będziemy mogli zaobserwować zmiany wprowadzone w naszym kodzie, musimy ponownie załadować moduł. Można to osiągnąć poprzez ponowne uruchomienie FreeCAD, ale ponowne uruchamianie FreeCAD za każdym razem, gdy edytujemy kod, byłoby niewygodne. Aby to ułatwić, wpisz następujące polecenie w konsoli Python:"
  • curprev 05:5305:53, 17 May 2024Kaktus talk contribs 16,485 bytes +5 Created page with "Zauważ, że używamy odniesienia do ''(serializowalnego)'' obiektu FeaturePython {{incode|obj}}, a nie ''(nieserializowalnej)'' instancji klasy Python {{incode|self}}."
  • curprev 05:5105:51, 17 May 2024Kaktus talk contribs 16,480 bytes +4 Created page with "Spróbujmy dodać właściwość do naszej klasy box. Przełącz się do edytora kodu, przejdź do metody {{incode|__init__()}} i na końcu metody dodaj:"
  • curprev 05:5105:51, 17 May 2024Kaktus talk contribs 16,476 bytes +12 Created page with "Listę obsługiwanych właściwości można wyświetlić, wpisując:"
  • curprev 05:5105:51, 17 May 2024Kaktus talk contribs 16,464 bytes +7 Created page with "Dodawanie właściwości odbywa się za pomocą metody {{incode|add_property()}}. Składnia tej metody to:"
  • curprev 05:5005:50, 17 May 2024Kaktus talk contribs 16,457 bytes +45 Created page with "Właściwości są siłą napędową klasy FeaturePython. Na szczęście FreeCAD obsługuje wiele typów właściwości dla klas FeaturePython. Właściwości te są dołączane bezpośrednio do obiektu FeaturePython i są w pełni serializowane podczas zapisywania pliku. Aby uniknąć konieczności samodzielnej serializacji danych, zaleca się używanie tylko tych typów właściwości."
  • curprev 05:4905:49, 17 May 2024Kaktus talk contribs 16,412 bytes +42 Created page with "===Dodanie właściwości==="
  • curprev 05:4905:49, 17 May 2024Kaktus talk contribs 16,370 bytes +22 Created page with "Zobaczmy teraz, czy możemy uczynić naszą klasę nieco bardziej interesującą, a może także bardziej użyteczną."
  • curprev 05:4905:49, 17 May 2024Kaktus talk contribs 16,348 bytes +33 Created page with "Jest to rzeczywiście przypisana wartość, więc wiemy, że uzyskujemy dostęp do klasy niestandardowej za pośrednictwem obiektu FeaturePython."
  • curprev 05:4905:49, 17 May 2024Kaktus talk contribs 16,315 bytes −6 Created page with "To zwróci:"
  • curprev 05:4905:49, 17 May 2024Kaktus talk contribs 16,321 bytes +16 Created page with "Możemy zobaczyć naszą właściwość {{incode|Type}}. Sprawdźmy ją:"
  • curprev 05:4805:48, 17 May 2024Kaktus talk contribs 16,305 bytes −6 Created page with "To zwróci:"
  • curprev 05:4805:48, 17 May 2024Kaktus talk contribs 16,311 bytes −1 Created page with "Sprawdźmy to za pomocą metody {{incode|dir()}}:"
  • curprev 05:4805:48, 17 May 2024Kaktus talk contribs 16,312 bytes +32 Created page with "Istnieje wiele atrybutów, ponieważ uzyskujemy dostęp do natywnego obiektu FreeCAD FeaturePyton utworzonego w pierwszej linii naszej metody {{incode|create()}}. Jest tam również właściwość {{incode|Proxy}}, którą dodaliśmy w naszej metodzie {{incode|__init__()}}."
  • curprev 05:4705:47, 17 May 2024Kaktus talk contribs 16,280 bytes −6 Created page with "To zwróci:"
  • curprev 05:4705:47, 17 May 2024Kaktus talk contribs 16,286 bytes +5 Created page with "Przyjrzyjmy się atrybutom naszego obiektu:"
  • curprev 05:4705:47, 17 May 2024Kaktus talk contribs 16,281 bytes +55 Created page with "Zwróć też uwagę, że obok obiektu FeaturePython w widoku drzewa znajduje się mały niebieski znacznik wyboru. Dzieje się tak, ponieważ gdy obiekt jest tworzony lub zmieniany, jest "dotykany" i musi zostać ponownie przeliczony. Naciśnięcie przycisku {{Button|16px Odśwież}} pozwoli to osiągnąć. Później dodamy trochę kodu, aby to zautomatyzować. {{Clear}}"
  • curprev 05:4605:46, 17 May 2024Kaktus talk contribs 16,226 bytes +2 Created page with "Zauważ, że ikona jest szara. FreeCAD mówi nam, że obiekt nie jest w stanie wyświetlić niczego w widoku 3D. Kliknij na obiekt i spójrz na jego właściwości w Edytorze właściwości. Nie ma tam zbyt wiele, tylko nazwa obiektu."
  • curprev 05:4505:45, 17 May 2024Kaktus talk contribs 16,224 bytes +8 Created page with " right W widoku drzewa powinien pojawić się nowy obiekt oznaczony jako "my_box"."
  • curprev 05:4505:45, 17 May 2024Kaktus talk contribs 16,216 bytes +21 Created page with "Teraz możemy przetestować nasz nowy obiekt. Zapisz kod i wróć do FreeCAD. Upewnij się, że otworzyłeś nowy dokument, możesz to zrobić naciskając {{KEY|Ctrl}} + {{KEY|N}} lub wybierając {{MenuCommand|Plik → Nowy}}."
  • curprev 05:4405:44, 17 May 2024Kaktus talk contribs 16,195 bytes +35 Created page with "===Testowanie kodu==="
  • curprev 05:4405:44, 17 May 2024Kaktus talk contribs 16,160 bytes −2 Created page with "Metoda {{incode|create()}} nie jest wymagana, ale zapewnia przyjemny sposób enkapsulacji kodu tworzenia obiektu."
  • curprev 05:4305:43, 17 May 2024Kaktus talk contribs 16,162 bytes +21 Created page with "{|class="wikitable" cellpadding="5px" width="100%" |style="width:25%" | {{incode|import FreeCAD as App}} |style="width:75%" | Standardowy import dla większości skryptów Python, alias App nie jest wymagany. |- | {{incode|obj <nowiki>=</nowiki> ... addObject(...)}} | Tworzy nowy obiekt FreeCAD FeaturePython o nazwie przekazanej do metody. Jeśli nie ma kolizji nazw, będzie to etykieta i nazwa utworzonego obiektu. W przeciwnym razie zostanie utworzona unikalna nazwa i e..."
  • curprev 05:4205:42, 17 May 2024Kaktus talk contribs 16,141 bytes −5 Created page with "'''Podział metody {{incode|create()}}:'''"
  • curprev 05:4205:42, 17 May 2024Kaktus talk contribs 16,146 bytes +27 Created page with "{|class="wikitable" cellpadding="5px" width="100%" |style="width:25%" | {{incode|def __init__(self, obj):}} |style="width:75%" | Parametry odnoszą się do samej klasy Python i obiektu FeaturePython, do którego jest ona dołączona. |- | {{incode|self.Type <nowiki>=</nowiki> 'box'}} | Definicja niestandardowego typu Python w postaci ciągu znaków. |- | {{incode|obj.Proxy <nowiki>=</nowiki> self}} | Przechowuje odniesienie do instancji Python w obiekcie FeaturePython. |}"
  • curprev 05:4105:41, 17 May 2024Kaktus talk contribs 16,119 bytes +9 Created page with "Na koniec przejdź do folderu {{FileName|Macro/fpo/box}} i otwórz {{FileName|box.py}} w swoim ulubionym edytorze kodu. Będziemy edytować tylko ten plik."
  • curprev 05:3805:38, 17 May 2024Kaktus talk contribs 16,110 bytes +94 Created page with "Po utworzeniu ścieżek modułów i plików, upewnijmy się, że FreeCAD jest poprawnie skonfigurowany: *Uruchom FreeCAD ''(jeśli jeszcze tego nie zrobiłeś)''. *Włącz Widok raportu ''({{MenuCommand|Widok → Panele → Widok raportu}})''. *Włącz konsole Python ''({{MenuCommand|Widok → Panele → Konsola Python}})'' zapoznaj sie z informacjami na stronie Podstawy tworzenia skryptów FreeCAD."
  • curprev 05:3305:33, 17 May 2024Kaktus talk contribs 16,016 bytes +45 Created page with "Folder {{FileName|fpo}} zapewnia przyjemne miejsce do zabawy z nowymi obiektami FeaturePython, a folder {{FileName|box}} jest modułem, w którym będziemy pracować. {{FileName|__init__.py}} informuje środowisko Python, że w folderze znajduje się możliwy do zaimportowania moduł, a {{FileName|box.py}} będzie plikiem klasy dla naszego nowego obiektu FeaturePython."
  • curprev 05:3205:32, 17 May 2024Kaktus talk contribs 15,971 bytes +9 Created page with "Struktura folderów powinna wyglądać następująco:"
  • curprev 05:3205:32, 17 May 2024Kaktus talk contribs 15,962 bytes −2 Created page with "Teraz musimy utworzyć kilka folderów i plików: *W folderze {{FileName|Macro}} utwórz nowy folder o nazwie {{FileName|fpo}}. *W folderze {{FileName|fpo}} utwórz pusty plik: {{FileName|__init__.py}}. *W folderze {{FileName|fpo}} utwórz nowy folder o nazwie {{FileName|box}}. *W folderze {{FileName|box}} utwórz dwa pliki: {{FileName|__init__.py}} i {{FileName|box.py}} ''(na razie pozostaw oba puste)''."
  • curprev 05:3105:31, 17 May 2024Kaktus talk contribs 15,964 bytes +82 Created page with "Jeśli nie wiesz, gdzie znajduje się folder FreeCAD Macro, w konsoli Python programu FreeCAD wpisz polecenie {{incode|FreeCAD.getUserMacroDir(True)}} : * W systemie Linux jest to zazwyczaj {{FileName|/home/<nazwa użytkownika>/.local/share/FreeCAD/Macro/}} ''({{VersionPlus/pl|0.20}})'' lub {{FileName|/home/<username>/.FreeCAD/Macro/}} ''({{VersionMinus/pl|0.19}})''. * Na macOS jest to zazwyczaj {{FileName|/Users/<username>/Library/Application Suppo..."

16 May 2024

  • curprev 12:1112:11, 16 May 2024Kaktus talk contribs 15,882 bytes +1 Created page with "Klasy obiektów FeaturePython muszą działać jako moduły importowalne w FreeCAD. Oznacza to, że należy umieścić je w ścieżce, która istnieje w środowisku Python ''(lub dodać ją specjalnie)''. Na potrzeby tego samouczka użyjemy folderu Macro użytkownika FreeCAD. Ale jeśli masz inny pomysł, możesz go użyć zamiast tego."
  • curprev 12:0912:09, 16 May 2024Kaktus talk contribs 15,881 bytes +83 Created page with "Podczas pracy z klasami niestandardowymi i obiektami FeaturePython ważne jest, aby wiedzieć, że klasa niestandardowa i jej stan nie są zapisywane w dokumencie, ponieważ wymagałoby to osadzenia skryptu w pliku dokumentu FreeCAD, co stanowiłoby poważne zagrożenie dla bezpieczeństwa. Zapisywany ''(serializowany)'' jest tylko sam obiekt FeaturePython. Ale ponieważ ścieżka modułu skryptu jest przechowywana w dokumencie, użytkownik musi tylko zainstalować niest..."
  • curprev 12:0712:07, 16 May 2024Kaktus talk contribs 15,798 bytes +47 Created page with "Ta niestandardowa klasa Python pobiera odniesienie do jednego z tych obiektów i modyfikuje go. Na przykład, klasa Python może dodawać właściwości do obiektu lub łączyć go z innymi obiektami. Ponadto klasa Python może implementować pewne metody, aby umożliwić obiektowi reagowanie na zdarzenia dokumentu, umożliwiając przechwytywanie zmian właściwości obiektu i ponowne obliczanie dokumentu."
(newest | oldest) View (newer 50 | ) (20 | 50 | 100 | 250 | 500)