Operacje na obiektach. Polecenia do formowania obiektów Polecenia i operacje na obiektach

  • 10.01.2024

Zespół to obiekt konfiguracyjny, za pomocą którego programista może opisać działania, które ma wykonać użytkownik.

Istnieją polecenia ogólne — polecenia, które nie są specyficzne dla obiektu lub służą do wykonywania akcji na obiektach, które nie korzystają ze standardowych poleceń.

Polecenia mogą istnieć także dla poszczególnych obiektów konfiguracyjnych. Służą do wykonywania operacji związanych z tym konkretnym obiektem.

Polecenia można parametryzować, czyli wykorzystywać w swoim algorytmie pewną wartość przekazaną przez platformę. Typ tej wartości ustawiany jest w konfiguratorze i tak sparametryzowane polecenie wyświetlane jest tylko w tych formularzach, które posiadają szczegóły tego samego typu co parametr polecenia.

Akcje wykonywane przez polecenie opisane są w języku wbudowanym w moduł poleceń.

Przydatne linki:

  • Obiekty konfiguracyjne
  • Narzędzia programistyczne.

Komenda

Zespół to akcja, którą użytkownik może wykonać w programie. Wszystkie polecenia można klasyfikować na kilka sposobów.

Polecenia standardowe i utworzone przez programistów

Ze względu na to jak polecenie pojawiło się w konfiguracji, wszystkie polecenia można podzielić na:

  • Standard,
  • Stworzony przez dewelopera.

Standardowe polecenia są dostarczane automatycznie przez platformę. Obiekty konfiguracyjne, a także rozszerzenia formularzy i rozszerzenia elementów mogą dostarczać standardowe polecenia Tabela, znajdujący się w formularzu. Czytaj więcej...

Na przykład katalog Kontrahenci może wydawać polecenia Kontrahenci, Wykonawca: utwórz I Wykonawcy: utwórz grupę.

Programista może samodzielnie utworzyć dowolne polecenia w konfiguracji. Może dodać obiekt Command do gałęzi Są pospolite, dodaj obiekt Command do określonego obiektu konfiguracyjnego lub opisz polecenie jako procedurę w języku wbudowanym w określonej formie. Czytaj więcej...

Można na przykład dodać polecenia ogólne Zainstaluj skaner kodów kreskowych, Konfiguracja skanera kodów kreskowych i inni.

Polecenia nawigacji i akcji

Ze względu na skutek wykonania polecenia wszystkie polecenia można podzielić na:

  • Polecenia nawigacji
  • Polecenia akcji.

Polecenia nawigacyjne otwierają formularze w bieżącym oknie. Z reguły w ten sposób odbywa się przejście do niektórych list. Czytaj więcej...

Na przykład polecenie nawigacji Magazyny otworzy w głównym oknie listę magazynów.

W wyniku wykonania polecenia akcji otwiera się okno pomocnicze. Z reguły w ten sposób przechodzi się do formularza obiektowego lub do formularza raportu/przetwarzania. Czytaj więcej...

Na przykład polecenie akcji Magazyn otworzy się okno pomocnicze umożliwiające edycję danych nowego magazynu.

Niezależne i parametryzowalne polecenia

Ze względu na strukturę wewnętrzną wszystkie polecenia można podzielić na:

  • Niezależny,
  • Parametryzowalne

Niezależne polecenia nie wymagają żadnych dodatkowych informacji do wykonania. Czytaj więcej...

Na przykład niezależny zespół Kontrahenci nie wymaga do jego wykonania żadnych dodatkowych informacji. Po prostu otwiera listę wszystkich kontrahentów.

Aby wykonać parametryzowalne polecenia, wymagana jest dodatkowa informacja - wartość parametru polecenia. Czytaj więcej...

Na przykład polecenie parametryzowalne Rachunki bieżące (Object.Supplier) otwiera listę rachunków bieżących konkretnego kontrahenta. Aby więc go przeprowadzić, trzeba wiedzieć, któremu kontrahentowi należy otworzyć rachunek bieżący. Oznacza to, że kontrahent jest parametrem tego polecenia.

Polecenia globalne i polecenia formularzy lokalnych

Według relacji poleceń do określonej formy wszystkie polecenia można podzielić na.

Polecenia ogólne- mechanizm platformy zaprojektowany do opisywania często używanych poleceń w konfiguracji 1C 8.3.

Polecenia ogólne lub globalne są wygodne w użyciu, jeśli jedno polecenie jest potrzebne wielu obiektom konfiguracyjnym. Np. przycisk umożliwiający wyświetlenie struktury podporządkowania dokumentu, polecenie wyświetlenia transakcji na dokumencie, raport o zmianach obiektów.

Do polecenia można przekazać parametry np. z postaci jakiego obiektu ono wywołuje.

Konfigurowanie i właściwości polecenia ogólnego w 1C

Dodanie nowego polecenia i dostosowanie ogólnego formularza jest dość proste, przyjrzyjmy się temu procesowi bardziej szczegółowo:

Uzyskaj 267 lekcji wideo na 1C za darmo:

  • Grupa— lokalizacja przyszłego polecenia na interfejsie.
  • Typ parametru polecenia— definiuje zbiór obiektów, w których zostanie wyświetlone przyszłe polecenie.
  • Tryb użycia parametrów— określa możliwość przekazania jednej lub więcej wartości jako parametru polecenia.
  • Modyfikuje dane— jeżeli checkbox jest zaznaczony, to po wykonaniu polecenia formularz zostanie przeliczony z serwera.
  • Moduł dowodzenia— moduł obsługi wykonywania poleceń, wykonywany na kliencie.

Przykładowy moduł poleceń:

&W procedurze klienta Przetwarzanie poleceń (parametr polecenia, parametry wykonania polecenia) Jeśli wartość jest wypełniona (parametr polecenia), następnie OpenForm( „Forma ogólna. Struktura podporządkowania”, Nowa struktura („Obiekt wyboru” , Parametr polecenia) , Parametry wykonania polecenia. Źródło, parametry wykonania polecenia. Źródło. Klucz unikalności, parametry wykonania polecenia. Okno) ; KoniecJeśli ; Zakończ procedurę

Tutaj CommandParameter jest obiektem wywołującym polecenie. Natomiast w Parametrach wykonania polecenia struktura opisująca Źródło (tzw. Formularz), Okno (Okno aplikacji klienckiej), Unikalność, wskazuje, czy szukać już otwartego formularza, czy nie.

Grupy dowodzenia 1C

Korzystanie z polecenia PRZERWA obiekt pęka w punkcie lub punktach zdefiniowanych przez użytkownika. Używanie poleceń FAZOWANIE (FAZOWANIE) I FILET) tworzone są fazowania i zaokrąglenia

Często łatwiej jest narysować jeden długi segment, a następnie podzielić go na dwa lub więcej, niż narysować kilka segmentów. Zespół PRZERWA Najczęściej stosowany przy tworzeniu planów architektonicznych w celu przełamania ścian przy otworach drzwiowych i okiennych. Jeśli określisz dwa punkty na obiekcie, AutoCADa usunie wszystko pomiędzy. Zazwyczaj do definiowania tych punktów używany jest tryb lokalizacji. Czasami można do tego użyć polecenia PRZYCINAĆ ale jeśli masz trudności z określeniem krawędzi tnących, lepiej jest użyć polecenia PRZERWA.

Można łamać następujące obiekty programu AutoCAD: linie, polilinie, splajny, proste, półproste, okręgi, łuki i elipsy.

Korzystanie z polecenia FAZOWANIE (FAZOWANIE) fazowania tworzone są w narożnikach utworzonych przez dwa nierównoległe segmenty. To polecenie może również działać na liniach prostych, półprostych i poliliniach. Kąt można utworzyć, po prostu wydłużając segmenty aż do przecięcia, lub można utworzyć fazowanie. Jeżeli tworzone jest fazowanie, jest ono definiowane albo przez dwie nogi, albo przez jedną nogę i kąt fazowania względem jednej z krawędzi.

Proces tworzenia fazowania składa się z dwóch etapów. Najpierw ustawiane są parametry fazowania. Mogą to być dwie nogi lub jedna noga i jeden kąt fazowania. Po wprowadzeniu wartości AutoCAD zakończy polecenie ŚCIĘCIE(ŚCIĘCIE). Następnie należy ponownie uruchomić to polecenie i wybrać dwie linie reprezentujące krawędzie, pomiędzy którymi zostanie utworzona faza. AutoCAD utworzy fazę, korzystając z informacji uzyskanych w poprzednim kroku.

Zespół FILET (MATERZY) służy do konstruowania gładkiej koniugacji dwóch odcinków łukiem. Ta operacja jest często używana podczas tworzenia rysunków mechanicznych. W niektórych przypadkach polecenie FILET (MATERZY) można użyć zamiast polecenia ŁUK do tworzenia łuków. To samo, co przy użyciu polecenia ŚCIĘCIE(FAZOWANIE), za pomocą polecenia FILET(MATCHES) możesz łączyć w pary segmenty, linie proste, półproste lub polilinie, które mogą być również równoległe. Oprócz tych obiektów można jednak wiązać także okręgi, łuki i elipsy. W poleceniu utworzenia łuku współpracującego należy określić jego promień

Proces parowania jest również dwuetapowy. Najpierw określa się promień współpracującego łuku. Po tej operacji AutoCAD zakończy polecenie. Teraz musisz ponownie uruchomić polecenie FILET (MATERZY) i wybierz dwa pasujące segmenty. AutoCAD sparuje linie zgodnie z dostępnymi informacjami.

Grupy.


Jeśli masz określony zestaw obiektów, którymi warto manipulować grupą i pracujesz z dość złożonym rysunkiem wyboru wielokrotnego użytku, możesz uniknąć powtarzania żmudnej procedury ponownego wyboru, korzystając z mechanizmu łączenia obiektów w Grupa.

Tworzenie i zmiana grup. Aby utworzyć lub zmienić grupę, musisz wpisać w wierszu poleceń Grupa i w ten sposób otworzyć okno dialogowe Grupowanie obiektów(Grupowanie obiektów).

Aby utworzyć nową grupę, wykonaj szereg kroków.

1. W polu wprowadzania Nazwa grupy wprowadź nazwę grupy. Nazwa może mieć maksymalnie 31 znaków bez spacji. W dowolnym miejscu wprowadzanej nazwy możesz użyć łącznika (-) i podkreślenia (_). .

2. W razie potrzeby w terenie Opis Możesz wpisać komentarz o długości do 64 znaków. W komentarzu możesz umieścić spacje.

3. Kliknij przycisk Nowy. AutoCAD powraca do rysunku i wyświetla monit w wierszu poleceń Wybierz obiekty: Po tym monicie wybierz obiekty, które chcesz uwzględnić w grupie. Zakończ wybieranie obiektów klikając . AutoCAD przywraca okno dialogowe do ekranu.

4. Kliknij OK.

Teraz utworzono grupę, która ma z nią dalej współpracować.

Jeden obiekt może należeć do kilku grup.

W strefie Identyfikacja grupowa Okno dialogowe Grupowanie obiektów jest też przycisk Znajdź nazwę. Przycisk ten służy do wyszukiwania nazwy grupy, do której należy wybrany obiekt. AutoCAD umożliwia wybranie obiektu, a następnie wyświetla nazwę odpowiedniej grupy (lub grup).

Kliknięcie przycisku Atrakcja pozwala wizualnie wyróżnić daną grupę. Pierwszy z listy Nazwa grupy wybrana zostanie grupa i po kliknięciu przycisku Atrakcja AutoCAD powraca do rysunku i wybiera wszystkie obiekty w grupie. Po kliknięciu przycisku Kontynuować AutoCAD powraca do okna dialogowego. Przycisk Atrakcja stosowane w przypadkach, gdy nie ma pewności co do prawidłowego wyboru grupy z listy do dalszej pracy.

Zmień obszar grupy w oknie dialogowym Grupowanie obiektów Zapewnia elastyczność w zarządzaniu grupą. Aby zmienić grupę należy wejść na listę grup Nazwa grupy W górnej części okna dialogowego kliknij dowolną nazwę grupy. Następnie wszystkie przyciski w strefie Zmień grupę stać się dostępnym. Opiszmy ich przeznaczenie.

Usunąć. Jeśli ustawisz tę opcję, AutoCAD przejdzie do wyprowadzania rysunku do obszaru graficznego ekranu i wyświetli monit w wierszu poleceń Wybierz obiekty do usunięcia z grupy.... Wybierz obiekty, które powinny zostać wykluczone z rysunku. Aby zakończyć operację kliknij . OK.

Dodać. Jeśli ustawisz tę opcję, AutoCAD przełączy się do obszaru rysunku i wyświetli monit w wierszu poleceń Wybierz obiekty, które chcesz dodać do grupy. . . (Wybierz obiekty, które chcesz dodać do grupy...). Wybierz obiekty, które mają zostać dodane do grupy. Aby zakończyć operację, naciśnij . AutoCAD powróci do okna dialogowego. Kliknij OK.

Przemianować. Po zaznaczeniu tej opcji grupa, której nazwa ma zostać zmieniona, zostanie wybrana i umieszczona w polu wejściowym Nazwa grupy zmienia się jej imię. Naciśnij przycisk Przemianować. Nazwa grupy na liście Nazwa grupy też musi się zmienić. Kliknij OK.

Zamów ponownie. Każdemu obiektowi w grupie przypisany jest numer, zaczynający się od 0. W niektórych przypadkach kolejność obiektów w grupie ma znaczenie (np. podczas wykonywania programu działającego na obiektach grupy). Wybierz grupę, w której ma zostać zmieniona kolejność obiektów. AutoCAD otworzy okno dialogowe Grupa zamówień. Jeżeli chcesz ułożyć obiekty w grupie w odwrotnej kolejności niż istniejąca, kliknij na przyciski Odwrotna kolejność. W przeciwnym razie kliknij przyciski Zaznacz i Poprzedni. W prawym dolnym rogu tego okna

Opis. Ta opcja aktualizuje opis grupy.

Eksplodować. Opcja ta dzieli grupę na komponenty. Wszystkie obiekty pozostają na rysunku, ale przestają być grupą.

Możliwość wyboru. Jeśli można wybrać grupę, wybranie jednego obiektu grupy powoduje zaznaczenie całej grupy. Opcja ta umożliwia tymczasowe przejście do trybu manipulowania pojedynczymi obiektami bez rozbijania grupy.

ROZDZIAŁ 4

Polecenia i operacje na obiektach

  • Podstawowe polecenia i operacje
  • Wybieranie obiektów
  • Wybór obiektów i wykonanie polecenia
  • Wybór podobiektów
  • Sterowanie widocznością obiektów
  • Klonowanie obiektów
  • Grupowanie obiektów
  • Transformacje obiektów

2. Podstawowe polecenia i operacje

Podstawowe polecenia i operacje

Podstawowe polecenia i operacje na obiektach w środowisku Max można definiować za pomocą następujących grup:

  • Wybieranie obiektów;
  • Wybór obiektów i wykonanie polecenia;
  • Wybór podobiektów;
  • Kontrolowanie widoczności obiektów; Klonowanie obiektów;
  • Łączenie obiektów w grupy.
  • Transformacje obiektów
  • Przyjrzyjmy się każdemu z nich bardziej szczegółowo.

3. Wybieranie obiektów

Wybieranie obiektów

Istnieje kilka nakładających się technik wykonywania operacji wyboru obiektów i zarządzania nimi. Oprócz najbardziej tradycyjnego z nich - klikając lewym przyciskiem myszy na wybrany obiekt, tę procedurę można wykonać poprzez grupę elementów Wybierać z rozwijanego menu Edytować(ryc. 4.01).

Poniżej znajduje się lista tych elementów wraz z krótkim opisem ich funkcji:

  • Zaznacz wszystko- pozwala zaznaczyć wszystkie nieukryte i „odmrożone” obiekty (znaczenie tych terminów zostanie opisane poniżej).
  • Wybierz opcję Brak- odznacza wszystkie obiekty w scenie.
  • Wybierz opcję Odwróć- zaznacza wszystkie niezaznaczone obiekty odwrotnie.

RYSUNEK 4.01. Punkty wyboru obiektu

  • Wybierz opcję Według koloru- utwórz selekcję na podstawie określonego koloru obiektu
  • Wybierz Według nazwy- wybrać jeden lub więcej obiektów według nazwy z listy ogólnej poprzez okno dialogowe (rys. 4.02).


RYSUNEK 4.02. Wybieranie obiektów według nazwy z listy

  • Region- posiada dwa przełączniki ustawiające tryb wyboru obiektu:
  • Okno- V zestaw zawiera obiekty, które całkowicie mieszczą się w obszarze selekcji;
  • Przejście- obiekty są wybierane nawet jeśli dotykają tylko obszaru zaznaczenia.

Operację zaznaczania obiektów można także wykonać za pomocą grupy przycisków na (rys. 4.03):

RYSUNEK 4.03. Grupa przycisków służących do wybierania obiektów na Głównym Pasku Narzędzi

  • Wybierz Obiekt- przycisk modalny umożliwiający tryb zaznaczania obiektów lewym przyciskiem myszy. Każde kliknięcie lewym przyciskiem myszy powoduje zresetowanie poprzedniego wyboru i zaznaczenie tylko jednego, ostatniego obiektu. Aby dodać nowy obiekt do zestawu bez resetowania, kliknij lewym przyciskiem myszy, przytrzymując klawisz , aby wykluczyć zaznaczony obiekt ze zbioru - kliknij razem z klawiszem .
  • Region selekcji- lista przycisków zmiany kształtu obszaru wyboru obiektu. Można określić jako Prostokątny, okrągły Lub Płot (linia przerywana).

Aby wybrać żądany formularz, kliknij ten przycisk (aż pojawi się cała lista) i trzymając lewy przycisk myszy, przesuwaj kursor po liście, zwalniając go na odpowiednim przycisku.

Wybierz Według nazwy Nazwa) - przycisk wywołujący wspomniane wcześniej okno dialogowe Wybierz Obiekty(Rys. 4.02). Zastanówmy się nad jego parametrami.

Główne pole informacyjne zawiera listę obiektów scen, a kolejność sortowania i sposób wyświetlania zależą od grup ustawień Typy sortowania i listy.

Pierwsza z nich pozwala ustawić sposób sortowania nazw obiektów sceny według Alfabetycznie, według typu, koloru i rozmiaru.

Grupuj pola wyboru Typy list kontroluj regułę, które kategorie obiektów Max będą wyświetlane na liście ogólnej, a które będą ukryte. guziki Wszystko, Brak i Odwróć niezbędne do szybkiego zarządzania całym zestawem flag grupowych.

Dodatkowa lista checkboxów w lewym dolnym rogu okna umożliwia sterowanie następującymi opcjami:

  • Wyświetl poddrzewo- umożliwić wyświetlanie obiektów mających powiązania hierarchiczne lub otwarte grupy (o grupach będzie mowa później).
  • Wybierz opcję Poddrzewo- umożliwić selekcję takich obiektów.
  • Wielkość liter uwzględniana- wpływ wielkości liter w nazwie ustawionej w górnym polu tekstowym.
  • Wybierz Zależne- wybranie obiektu spowoduje jednoczesne zaznaczenie wszystkich obiektów Instancje i odniesienia.

guziki AI (wszystkie), brak i odwróć powyżej tej listy pozwalają na szybką kontrolę nad wyborem nazw obiektów. I na koniec lista Zestaw wyboru pozwala wybrać jeden z kilku wcześniej utworzonych i nazwanych zestawów obiektów. W dalszej części tego rozdziału omówimy szczegółowo tworzenie takich zestawów.

Aby wybrać kategorię obiektów, z których dokonywany jest wybór, musisz użyć Filtr wyboru. Ta lista pozwala wybrać jedną lub więcej kategorii obiektów, z którymi chcesz pracować i wykluczyć inne.

Wartość listy Wszystko (Wszystkie obiekty) dotyczy wszystkich obiektów w scenie i usuwa wszystkie ograniczenia.

Obraz:

Obraz:

4. Wybór obiektów i wykonanie polecenia

Wybór obiektów i wykonanie polecenia

Pozostałe przyciski w opisywanej grupie w Główny pasek narzędzi wszystkie są modalne i umożliwiają, po dokonaniu wyboru, przejście do wykonania odpowiedniego polecenia:

  • Wybierz i połącz- wykonuje operację hierarchicznego łączenia podrzędnych obiektów sceny według typu Rodzic-Dziecko.
  • Wybierz i przesuń- umożliwia rozpoczęcie przesuwania obiektu lub obiektów natychmiast po zakończeniu selekcji.
  • Wybierz i obróć- to samo dla operacji obrotu na wybranych obiektach.
  • Wybierz i skaluj- w zależności od aktualnego stanu listy przycisków Skala może to być operacja Jednolity, niejednolity skalowanie i Zdusić natychmiast po zakończeniu selekcji.

Do tworzenia Nazwany zbiór selekcji musisz wybrać żądane obiekty i wprowadzić unikalną nazwę w polu tekstowym listy nazw Główny pasek narzędzi(ryc. 4.04).

Każda nowa nazwa jest dodawana do listy nazw i zapisywana w pliku projektu Max. Aby skonfigurować i zmienić nazwane zestawy, użyj okna dialogowego Nazwany zbiór selekcji(Rys. 4.05), który jest wywoływany poleceniem O imieniu Wybór Zestawy w menu Edytować, lub przycisk o tej samej nazwie na głównym pasku narzędzi.


RYŻ. 4.04. Lista nazwanych zestawów


RYSUNEK 4.05. Edytowanie nazwanych zestawów

Przyciski znajdujące się w górnej części tego okna umożliwiają:

  • tworzyć nowe zestawy;
  • usunąć wybrany w oknie dialogowym obiekt ze zbioru lub usunąć cały zbiór;
  • dodać do zestawu obiekt wybrany w oknie programu;
  • usunąć ze zbioru obiekt wybrany w oknie programu;
  • wybrać w oknie programu obiekty, które wchodzą w skład wybranego w oknie dialogowym zestawu;
  • wybierz obiekty według ich nazw za pomocą okna dialogowego Wybierz Obiekty.
  • podświetl obiekty wybrane w oknie dialogowym.

Obraz:

Obraz:

5. Wybór podobiektów

Wybór podobiektów

Możliwość pracy Podobiekty(Podobiekty) występuje, jeśli wybrany obiekt ma strukturę wielopoziomową. Podobiekty w środowisku Max to poziomy Wierzchołek, segment i splajn w obiekty typu Kształt; Wierzchołek (wierzchołek), krawędź (krawędź), ściana (ściana), wielokąt (płaszczyzna) i element (element) w obiektach typu Siatka (Ramka) itp. Każdy z modyfikatorów - specjalne narzędzia do zmiany wewnętrznej struktury obiektów - może mieć poziom Podobiekt co jest wyświetlane w oknie Stos modyfikatorów. Jeżeli obok nazwy modyfikatora nie ma znaku „+”, to modyfikator nie pozwala na pracę z poziomem podobiektu i odwrotnie (rys. 4.06).


RYSUNEK 4.06. Wybór poziomu podobiektu

Dla ułatwienia przejścia do trybu Podobiekt i z powrotem w menu kontekstowym wybranego obiektu, wywoływanym prawym przyciskiem myszy, zawiera element o tej samej nazwie (ryc. 4.07).


RYSUNEK 4.07. Poziom podobiektu w menu kontekstowym

W trybie Podobiekt jest możliwy także tworzyć Nazwany zbiór selekcji dla podobiektów, ale będą one dostępne tylko w tym trybie.

Obraz:

Obraz:

6. Sterowanie widocznością obiektów

Sterowanie widocznością obiektów

W środowisku Max opracowano bardzo elastyczny system kontroli widoczności obiektów sceny. Oprócz rozwiniętego systemu poleceń istnieje zestaw ustawień i ustawień, które wzajemnie się uzupełniają, pozwalając zoptymalizować pracę i „widzieć” tylko te obiekty lub grupy obiektów, które są w danym momencie potrzebne. Kwestia widoczności obiektów jest szczególnie istotna w skomplikowanych, bogatych scenach, gdzie czasami trzeba długo czekać na aktualizację (przerysowanie) ekranu (trzeba pamiętać, że wszystkie ukryte lub zamrożone obiekty są ignorowane).

Wszystkie elementy sterujące widocznością są skoncentrowane na panelu Wyświetlacz i pływak wyświetlacza które można wywołać z menu rozwijanego Narzędzia.

Każdy z obiektów sceny może mieć kilka poziomów widoczności:

  • Obiekt jest widoczny zarówno w rzutniach, jak i podczas renderowania sceny.
  • Obiekt jest widoczny w rzutniach, ale nie jest wyświetlany ani renderowany w scenie.
  • Obiekt jest widoczny w rzutniach i wyświetlany podczas renderowania sceny, ale jest „zamrożony” (niedostępny) dla poleceń wyboru i edycji.
  • Obiekt jest ukryty i niewidoczny w rzutniach ani renderingach.

Ściśle mówiąc, istnieje jeszcze kilka opcji widoczności obiektów, ale są one mniej typowe i nie warto się nad nimi rozwodzić.

Najwygodniejszym sposobem zarządzania obiektami jest poprzez Wyświetl pływak Dlatego przeanalizujmy to bardziej szczegółowo. Panel ten (rys. 4.08) składa się z dwóch zakładek Ukryj/zamroź i poziom obiektu.

Pierwszy z nich powtarza wszystkie polecenia panelu głównego Wyświetlacz z wyjątkiem kilku rzadko używanych. Za polecenia odpowiadają dwie grupy wypukłych przycisków Ukryj (Ukryj) i Odkryj (Pokaż), więcej dwa - Zamrożenie i Odmrożenie. Pole wyboru Ukryj zamrożony obiekt pozwala na jednoczesne zamrażanie i ukrywanie obiektów. Wytłoczone przyciski umożliwiają ukrycie/zamrożenie Wybrane, niewybrane obiektów, dokonaj wyboru Według nazwy i trafienia.

Zakładka Poziom obiektu zarządza ustawieniem Ukryj według kategorii i zestaw pól wyboru Wyświetlacz Nieruchomości. Wyświetl panel pływakowy można w każdej chwili usunąć z ekranu (klikając lewym przyciskiem myszy na przycisk zamykania) lub przywołać ponownie.

RYSUNEK 4.08. Pływający panel wyświetlacza

Obraz:

7. Klonowanie obiektów

Klonowanie obiektów

Istnieje kilka sposobów tworzenia kopii obiektów w Max. Najczęściej stosowanym sposobem jest wybranie skopiowanego obiektu lub grupy obiektów i użycie jednego z poleceń transformacji - Przesuń, obróć Lub Skala z wciśniętym klawiszem . Po wykonaniu polecenia wywoływane jest okno dialogowe (rys. 4.09), w którym należy określić typ tworzonego obiektu lub grupy obiektów. Istnieją trzy typy:


RYSUNEK 4.09. Wybieranie trybów klonowania

  • Soru (kopia)- nowy obiekt dziedziczy wszystkie właściwości oryginału (geometria, materiały, tryby wyświetlania w rzutniach itp.).

Wszelkie zmiany dokonane w kopii lub oryginale mają charakter niepowtarzalny i dotyczą wyłącznie modyfikowanego obiektu.

  • Instancja- nowy obiekt jest kompletną kopią oryginału i tworzy się między nimi następujące dwukierunkowe połączenie logiczne: wszelkie zmiany w stosunku do oryginału są natychmiast odzwierciedlane we wszystkich jego kopiach i odwrotnie.
  • Odniesienie- wariant instancji, ale z komunikacją jednokierunkową. Jedynie zmiany w stosunku do oryginału pociągają za sobą te same zmiany we wszystkich linkach. Wszelkie zmiany w odniesieniach do obiektów dotyczą wyłącznie modyfikowanego konkretnego obiektu odniesienia.

Pozostaje dodać, że okno Opcje klonowania pozwala na ustawienie nazwy dla tworzonych obiektów w polu tekstowym Nazwa(Nazwa) i za pomocą licznika wybierz liczbę nowych kopii Liczba kopii.

Istnieje możliwość klonowania obiektów za pomocą przedmiotu Klon w rozwijanym menu Edytować. Użycie go powoduje wyświetlenie tego samego okna Opcje klonowania ale bez możliwości zmiany liczby tworzonych kopii, która jest równa 1. Ta opcja tworzenia kopii obiektów jest wygodna, jeśli kopie muszą mieć te same współrzędne co oryginał.

Inną opcją klonowania jest użycie poleceń Lustro (Lustro) i Tablica (Tablica).

Pierwszy z nich wywoływany jest za pomocą przycisku Odbicie lustrzane wybranych obiektów z dodatkowego okna dialogowego Lustro: współrzędne ekranu(Rys. 4.10) pozwala wybrać oś kopiowania - X, Y, Z lub płaszczyznę kopiowania - XY, YZ, ZX.


RYSUNEK 4.10. Tworzenie kopii lustrzanych obiektów

Pozycja przełącznika Wybór klonu umożliwia wybór rodzaju tworzonych kopii oraz ich położenia Żaden klon (on klon) wykonuje lustrzane odbicie obiektu oryginalnego bez tworzenia kopii.

Zespół Szyk wywoływany z listy przycisków znajdujących się na pasku narzędzi Ograniczenia osi. Okno dialogowe o tej samej nazwie Szyk pozwala ustawić sposób kopiowania, wymiar tablicy (1,2 lub 3D), a także rodzaj transformacji (Przesuń, obróć Lub skala) który zostanie zastosowany do każdej kopii (ryc. 4.11).


RYSUNEK 4.11. Tworzenie tablic

Obraz:

Obraz:

Obraz:

Obraz:

8. Łączenie obiektów w grupy

Grupowanie obiektów

Aby ułatwić zarządzanie zbiorami obiektów i uprościć sceny bogate w obiekty, użyj polecenia Grupa. Wywołuje się go poprzez element menu rozwijanego o tej samej nazwie Grupa i dotyczy wybranych obiektów. Pojawi się okno do wpisania nazwy tworzonej grupy (rys. 4.12). Po potwierdzeniu nazwy grupy tworzony jest nowy obiekt sceny.


RYSUNEK 4.12. Grupowe wybieranie nazw

W przypadku obiektów połączonych w grupę według określonych kryteriów (elementy składowe obiektu złożonego, często powtarzające się zbiory obiektów tego samego typu itp.) bardzo wygodne jest wykonywanie operacji takich jak selekcja, klonowanie, przypisywanie materiałów, przekształcenia i wiele więcej. Grupy mogą mieć wielopoziomową strukturę zagnieżdżoną. Rozważmy możliwości pracy z grupami obiektów w środowisku Max. Wszystkie polecenia sterujące skupione są we wspomnianym wcześniej menu rozwijanym Grupa:

  • Grupa- łączy wybrane obiekty w grupę o nowej nazwie, wpisanej w oknie dialogowym o tej samej nazwie (rys. 4.12). Nazwa grupy pojawi się pogrubioną czcionką w polu Nazwa lub w nawiasach kwadratowych w oknie dialogowym Wybierz obiekty (rysunek 4.13).


RYSUNEK 4.13. Wyświetlanie grup na listach obiektów

Otwórz - częściowo usuwa grupowanie, umożliwiając zaznaczenie, modyfikację i przekształcenie dowolnego obiektu znajdującego się w otwartej grupie. W tym przypadku pojawia się dodatkowy obiekt, będący kontenerem wymiarowym, w którym mieszczą się wszystkie obiekty danej grupy i który ma nazwę określoną w momencie jej tworzenia. Pojemnik ten jest rysowany na ekranie w kolorze szkarłatnym.

Zamknij — przywraca grupę do stanu domyślnego, ukrywając obiekt o nazwie grupy i przywracając pełne grupowanie wszystkich obiektów w grupie.

  • Rozgrupuj- usuwa grupowanie obiektów znajdujących się w wybranej grupie, umożliwiając osobną pracę nad każdym z nich.
  • Eksplodować- usuwa grupę obiektów tworzącą wielopoziomową, zagnieżdżoną grupę.
  • Odłączyć- wybiera wybrany obiekt (lub obiekty) z grupy. Aby uruchomić to polecenie, musisz najpierw otworzyć grupę za pomocą tego polecenia Otwarty.
  • Przytwierdzać- dodaje wybrane obiekty do grupy wskazanej lewym przyciskiem myszy.

Obraz:

Obraz:

9. Przekształcenia obiektów

Transformacje obiektów

Rodzaje Transformacji

W środowisku Max na dowolnym obiekcie, zestawie kilku obiektów lub grupie można wykonać trzy podstawowe operacje transformacji - Przesuwaj, obracaj i skaluj które łączy jeden wspólny termin - Transformuje. Wszystkie transformacje są przypisane do odpowiednich przycisków w Główny pasek narzędzi i skala- lista przycisków. Transformacja przemieszczenia pozwala na zmianę położenia obiektu w przestrzeni trójwymiarowej, obrót – jego orientację oraz skalowanie – wymiary liniowe obiektu. Co więcej, ostatnia transformacja może być trzech typów:

  • Mundur- jednolite skalowanie wzdłuż trzech osi współrzędnych X, Y, Z;
  • Niejednolite- wykonywane wzdłuż jednej z osi lub płaszczyzn obiektu;
  • Zdusić- wzajemnie przeciwne jednoczesne skalowanie wzdłuż jednej z osi i płaszczyzny dwóch pozostałych lub odwrotnie.

Wszystkie polecenia transformacji są powielane w menu kontekstowym obiektu i można je wywołać, klikając prawym przyciskiem myszy wybrany obiekt.

Zwykle wykonywanie transformacji obiektów sceny odbywa się z przybliżoną dokładnością („na oko”), zgodnie z wizualną percepcją położenia, orientacji lub skali. Zdarzają się jednak przypadki, gdy konieczne jest precyzyjne wprowadzenie parametrów, do czego wykorzystywana jest dana metoda. Wpisz. Poprzez ten element można wywołać odpowiednie okno dialogowe Wpisywanie transformacji (precyzyjne wprowadzanie parametrów transformacji) rozwijane menu Narzędzia. W zależności od rodzaju wybranej transformacji wywoływane jest okno Przesuń, obróć Lub Skalowanie transformacji wpisywania (przesuwanie, obracanie lub skalowanie), który zawiera dwie grupy liczników - Absolut: Świat i Offset: Ekran(ryc. 4.14).


RYSUNEK 4.14. Precyzyjne wprowadzanie parametrów

Początkowo po wywołaniu tego okna liczniki pierwszej grupy wyświetlają dokładne wartości położenia wybranego obiektu w przestrzeni trójwymiarowej, jego orientacji. Przy przejściu na inny rodzaj transformacji (za pomocą odpowiednich przycisków modalnych w Główny pasek narzędzi lub wywołując menu kontekstowe edytowanego obiektu), okno Wpisywania od razu zmieni się na właściwe.

Dodatkowymi narzędziami kontrolującymi parametry transformacji w Maxie są Ograniczenie określone przez grupę przycisków modalnych, Odniesienia układ współrzędnych do wyboru z listy przycisków. Wszystkie znajdują się na pasku narzędzi Ograniczenia osi(ryc. 4.15). Kolejna lista przycisków Centrum Punktowe (Centrum Transformacji), przeznaczony do zarządzania przekształceniami, znajduje się na Główny pasek narzędzi.

RYSUNEK 4.15. Grupa przycisków ograniczeń Przyjrzyjmy się każdemu z nich bardziej szczegółowo.

Większość nowoczesnego oprogramowania jest tworzona przez zespoły programistów. Ktoś jest odpowiedzialny za interfejs użytkownika, ktoś za rdzeń, a ktoś za dodatkowe moduły. Aby praca tych wszystkich osób nie poszła na marne, konieczne jest prawidłowe połączenie różnych części projektu, nie zapominając o jego ewentualnej rozbudowie. Aby to zrobić, będziemy potrzebować wzorca projektowego „Zespół”, który zawiera wykonawcę zadania i jego warunki.

Wyobraźmy sobie, że pracujemy w firmie piszącej złożone, wieloskładnikowe oprogramowanie. Projekt jest wysoce wyspecjalizowany i posiada wiele różnych modułów, których liczba może z czasem się zwiększać. Naszym zadaniem jest napisanie elastycznego i wygodnego systemu skrótów klawiszowych dla tego programu. Zestaw możliwych kombinacji jest ograniczony do skrótów klawiszowych zanim , a także zawiera kombinację ctrl-z umożliwiającą cofnięcie akcji.

Wydawałoby się, że wszystko jest proste: zakodowałem duży blok przełączników, który po naciśnięciu różnych kombinacji przycisków wywołuje tę lub inną funkcję modułu i cieszy się. Ale po pierwsze, takie podejście nie jest elastyczne. Kiedy projekt doda nowe moduły lub skróty klawiszowe, będziemy musieli zmienić kod tej rozdętej instrukcji gałęzi, co spowoduje, że stanie się ona jeszcze bardziej rozdęta. Po drugie, kierownictwo napisało dużymi czerwonymi literami, że użytkownik powinien mieć możliwość ponownego przypisania tych skrótów klawiszowych. Dlatego na pewno nie będziemy w stanie zakodować poleceń na stałe w kodzie przełącznika.

Patrząc na kod modułów projektu i listy ich poleceń, które można przypisać do skrótów klawiszowych, jesteśmy jeszcze bardziej przekonani, że będziemy musieli sporo wycierpieć, zanim wymyślimy mniej więcej działającą architekturę na to wszystko.

Interfejsy modułów dostępne poprzez klasę HotKeys Kalkulator ( public: void runCalc(); void CloseCalc(); ) klasa Drukarka ( public: void printDocument(); void printImage(); void printEmail(); ) klasa Przeglądarka ( public: void runBrowser() ); void closeBrowser(); ) // Istnieje wiele różnych klas.

Wzór zespołu

Odkładając na bok teksty, przejdźmy do przestudiowania schematu „Team”, który powinien nam pomóc w tym trudnym zadaniu. Najpierw musimy dowiedzieć się, co mamy. Mamy wiele modułów z szeroką gamą API. Mamy też okno, w którym użytkownik może wybrać z listy jedno z poleceń udostępnianych przez moduły i przypisać je do konkretnego skrótu klawiaturowego.

Formalnie obsługą klawiatury jest klient, funkcje API modułów wywoływane za pomocą skrótów klawiszowych to zadania, a moduły realizujące te zadania to executory. Okno ustawień skrótów klawiszowych jest swego rodzaju pośrednikiem pomiędzy klientem a wykonawcą, ukrywającym wszystkie szczegóły wykonywanych operacji. Taka struktura pozwala na całkowite oddzielenie klienta od executora, to znaczy użytkownik nie ma pojęcia, który moduł jest uruchomiony po naciśnięciu określonej kombinacji klawiszy i co robi. I to jest bardzo dobre, ponieważ im lepiej części kodu są od siebie odizolowane, tym program działa bardziej niezawodnie.

Do takiej izolacji musimy zdefiniować obiekt poleceń, a co za tym idzie odpowiadający mu interfejs. Jest to dość proste i definiuje tylko jedną metodę generate(), która powinna wykonać metodę dowolnego z modułów.

Interfejs klasy obiektów „Commands” Command ( public: void generate() = 0; )

Aby zdefiniować konkretny obiekt, po prostu deklarujemy nową klasę, która dziedziczy interfejs Command i definiujemy jej metodę wykonywania(). Załóżmy, że chcemy utworzyć polecenie uruchamiające kalkulator. Aby to zrobić, utworzymy klasę RunCalcCommand, która będzie dziedziczyć interfejs Command i zastąpi funkcję wykonywania() w celu wywołania metody runCalc() modułu Kalkulator.

Polecenie uruchomienia klasy kalkulatora RunCalcCommand: polecenie publiczne ( Calculator *calc; public: RunCalcCommand(Calculator *excalc) ( calc = excalc; ) void generate() ( calc->runCalc(); ) )

Jeśli przyjrzysz się uważnie kodowi polecenia, zauważysz, że w konstruktorze klasy RunCalcCommand przekazany został wskaźnik do modułu Kalkulator. Odbywa się to w celu zapewnienia większej elastyczności. W przyszłości być może będziemy mieli klasę ModernCalculator wywołującą zaawansowaną wersję programu obliczeniowego. Stosując kompozycję, czyli bez ścisłego ustalania wykonawcy w kodzie, zwiększamy izolację kodu, co pozwoli zaoszczędzić czas w przyszłości.

Teraz musisz powiązać polecenie z klawiszem skrótu. W tym celu można utworzyć tablicę wskaźników do obiektów klasy Command. Rozmiar tablicy będzie równy liczbie obsługiwanych skrótów klawiszowych. Każdy element tablicy poleceń jest przypisany do określonego skrótu klawiszowego. W naszym przypadku możemy w tym celu przekonwertować wartość przycisku, który wraz z klawiszem Ctrl tworzy dowolną z możliwych kombinacji, na wartość liczbową. Gdybyśmy używali skrótów takich jak ctrl-a do ctrl-k, potrzebowalibyśmy nieco innego podejścia.

Po otrzymaniu kodu wciśniętej kombinacji klawiszy i przekonwertowaniu go na odpowiedni indeks tablicy poleceń, możemy bezpiecznie wywołać metodę generate() obiektu, którego wskaźnik znajduje się w żądanej komórce tablicy.

Przypisywanie polecenia do klawisza skrótu i ​​jego uruchamianie // Kod inicjujący polecenie i klawisz skrótu const int comCount = 10; Polecenia* polecenia; Kalkulator *calc = nowy kalkulator(); polecenia = nowe RunCalcCommand(calc); // Kod w obsłudze naciśnięcia klawiatury // Uzyskaj wciśnięte klawisze hotkey = catchHotKey(); // Przekonwertuj je na indeks i uruchom komendę int indeks = hotkey2index(hotkey); polecenia->wykonaj();

To wszystko jest całkiem proste. Możesz zdefiniować jeszcze kilka potomków poleceń, które będą wykonywać określone akcje i powiązać je ze skrótami klawiszowymi. Architektura ta pozwala na całkowite oddzielenie klienta od wykonawców. Osoba obsługująca klawiaturę nie ma pojęcia, który moduł przetwarza polecenie i co dokładnie robi, a moduły z kolei nie mają pojęcia, że ​​dostęp do nich można uzyskać za pomocą skrótów klawiszowych, a nie w jakiś inny sposób.

Anuluj polecenie

Wszystko wydaje się być w porządku, jednak zupełnie zapomnieliśmy o odwołaniu. Skrót klawiaturowy ctrl-z powinien cofnąć efekt ostatniego polecenia. Wdrożenie anulowania jest dość proste, choć na pierwszy rzut oka może tak nie wyglądać. Aby to zrobić, zmienimy trochę interfejs poleceń.

Klasa poleceń obsługująca klasę cofania Command ( public: void generate() = 0; void undo() = 0; ) class RunCalcCommand: public Command ( Kalkulator *calc; public: RunCalcCommand(Calculator *excalc) ( calc = excalc; ) void wykonaj() ( calc->runCalc(); ) void cofnij() ( calc->closeCalc(); ) )

Po prostu dodaliśmy metodę undo(), którą należy zastąpić w klasach potomnych. Programista sam decyduje, jakiej funkcji modułu użyje metoda cancel. Zatem metoda undo() dla RunCalcCommand wywoła funkcję closeCalc() modułu Kalkulator. Będziemy także musieli nieco zmodyfikować kod obsługi klawiatury.


Wikipedia o wzorze „Zespół”. Obsługa klawiatury z obsługą anulowania // Kod inicjujący polecenie i klawisz skrótu const int comCount = 10; Polecenia* polecenia; Polecenie *lastCommand = nowe NoCommand(); Kalkulator *calc = nowy kalkulator(); polecenia = nowe RunCalcCommand(calc); // Kod w obsłudze naciśnięcia klawiatury // Uzyskaj wciśnięte klawisze HotKey *hotkey = catchHotKey(); // Jeśli jest to anulowanie, wywołaj odpowiednią metodę if (hotkey->str() == "ctrl-z") ( lastCommand->undo(); ) // Przetwarzanie innych kombinacji

Tutaj po prostu przechowujemy wskaźnik do ostatniego polecenia użytego w zmiennej lastCommand i wywołujemy odpowiednią metodę po naciśnięciu Ctrl-Z. Dodatkowo stosujemy małą sztuczkę wykorzystując pusty obiekt poleceń NoCommand. Kod tej klasy wygląda następująco:

Puste polecenie NoCommand klasa NoCommand: polecenie publiczne ( public: void wykonaj() (); void cofnij() (); )

Takie obiekty pośredniczące są używane dość często. Są potrzebne, aby zmniejszyć liczbę kontroli wskaźnika zerowego. Gdyby lastCommand miało wartość NULL, to przed wywołaniem metody undo() musielibyśmy sprawdzić poprawność wartości tego wskaźnika, co jest niepożądane, gdyż pewnego dnia moglibyśmy o tym zapomnieć, w wyniku czego program by się zawiesił . Zaleca się używanie tych samych obiektów pośredniczących dla innych klawiszy skrótu, którym nie przypisano odpowiednich poleceń.

Nawiasem mówiąc, kod obsługi klawiatury można zmodyfikować tak, aby obsługiwał anulowanie nie tylko ostatniej operacji, ale także wszystkich łańcuchów wykonanych poleceń. Aby to zrobić, powinieneś użyć stosu zamiast prostego wskaźnika do ostatniego polecenia. Podczas przetwarzania dowolnego klawisza skrótu do stosu zostanie dodany wskaźnik do odpowiedniego polecenia. Otrzymamy w ten sposób pełną historię wywołań poleceń, co pozwoli nam anulować wszystko po kolei za pomocą ctrl-z.


Makra

Makra są jednym z największych wynalazków ludzkości, pomagającym im zaoszczędzić mnóstwo czasu. Nasz wzorzec pozwala na implementację makropoleceń za pomocą zaledwie kilku dodatkowych linijek kodu. Najpierw zdefiniujmy klasę odpowiedzialną za logikę grupowego wykonywania operacji.

Klasa makropoleceń MacroCommand: public Command ( Command *commands; int comCount; public: MacroCommand(Command *comArray, int elemCount) ( Commands = comArray; comCount = elemCount; ) void wykonaj() ( for (int i = 0; i< comCount; i++) { commands[i]->wykonać(); ) ) void undo() ( for (int i = 0; tj< comCount; i++) { commands[i]->Cofnij(); ) ) )

Jak widać, klasa MacroCommand jest następcą klasy Command i zastępuje te same metody wykonywania i cofania. W interfejsie różni się od zwykłego polecenia jedynie swoim konstruktorem. Klasa ta nie akceptuje wskaźnika do modułu wykonawczego, ale tablicę wskaźników do prostych poleceń. Kod wykonywania() po prostu przechodzi przez elementy tablicy i wywołuje każdy z nich. undo() zachowuje się w ten sam sposób. Osoba obsługująca klawiaturę, uzyskując dostęp do obiektu polecenia, nie ma pojęcia, czy jest to makro, czy zwykła pojedyncza operacja - najważniejsze jest to, że wszystkie zapewniają funkcje wykonywania() i cofania().

Zaawansowane funkcje wzorca „Team”.

Nasz wzór można wykorzystać nie tylko do przetwarzania skrótów klawiszowych. Można go używać do organizowania kolejek żądań. Załóżmy, że mamy pulę wątków, która musi wykonać pewne zadania. Wszystkie zadania są obiektami, które implementują znany już interfejs poleceń. Polecenia są ustawiane w kolejce, do której wątki uzyskują dostęp sekwencyjnie. Pobierają polecenia z tej kolejki i uruchamiają swoje metody wykonywania(). Wątków nie interesuje, co robią te obiekty, o ile obsługują wywoływanie funkcji generate(). Polecenia można zapisywać na dysku twardym i stamtąd przywracać. Aby to zrobić, należy nieco rozszerzyć ich podstawowy interfejs.

Polecenie z obsługą zapisywania i ładowania klasy Polecenie ( public: void wykonanie() = 0; void undo() = 0; void loading() = 0; void store() = 0; )

Metoda Load() służy do przechowywania polecenia w dzienniku, a store() do jego przywracania. Kod tych metod może wykorzystywać mechanizmy serializacji języka programowania, jeśli są dostępne. Funkcjonalność ta jest potrzebna do pracy z dużą ilością danych, których nie da się zapisać po wykonaniu na nich każdej akcji. Jeśli program się nie powiedzie, będziemy mogli wczytać zapisane polecenia i sekwencyjnie zastosować je do istniejącej kopii danych, aby zaktualizować te dane.

Wniosek

Używając wzorca „Polecenie”, byliśmy w stanie całkowicie oddzielić różne moduły wykonawcze od klienta – modułu obsługi klawiatury. Jeśli w przyszłości w programie pojawią się nowe moduły, możemy łatwo dodać odpowiednie polecenia i przypisać do nich skróty klawiszowe. Będzie to rozwiązanie proste, eleganckie i efektowne.