Obyektlər üzərində əməliyyatlar. Obyektlərin formalaşdırılması üçün əmrlər Obyektlər üzərində əmrlər və əməliyyatlar

  • 10.01.2024

Komanda tərtibatçının istifadəçi tərəfindən yerinə yetirilməsi nəzərdə tutulan hərəkətləri təsvir edə biləcəyi konfiqurasiya obyektidir.

Ümumi əmrlər var - obyektə xas olmayan və ya standart əmrlərdən istifadə etməyən obyektlər üzərində hərəkətləri yerinə yetirmək üçün istifadə olunan əmrlər.

Əmrlər fərdi konfiqurasiya obyektləri üçün də mövcud ola bilər. Onlar bu xüsusi obyektlə əlaqəli əməliyyatları yerinə yetirmək üçün istifadə olunur.

Əmrlər parametrləşdirilə bilər, yəni alqoritmlərində platforma tərəfindən verilən bəzi dəyərdən istifadə edə bilərlər. Bu dəyərin növü konfiquratorda təyin edilir və belə parametrləşdirilmiş əmr yalnız əmr parametri ilə eyni tipli detallara malik olan formalarda göstərilir.

Komanda tərəfindən yerinə yetirilən hərəkətlər əmr modulunda daxili dildə təsvir olunur.

Faydalı bağlantılar:

  • Konfiqurasiya obyektləri
  • İnkişaf vasitələri.

Əmr

Komanda istifadəçinin proqramda yerinə yetirə biləcəyi hərəkətdir. Bütün əmrləri bir neçə şəkildə təsnif etmək olar.

Standart və tərtibatçı tərəfindən yaradılmış əmrlər

Komandanın konfiqurasiyada necə göründüyünə görə bütün əmrləri aşağıdakılara bölmək olar:

  • Standart,
  • Tərtibatçı tərəfindən yaradılmışdır.

Standart əmrlər platforma tərəfindən avtomatik olaraq verilir. Konfiqurasiya obyektləri, eləcə də forma genişləndirmələri və element uzantıları standart əmrləri təmin edə bilər Cədvəl, şəklində yerləşir. Daha çox oxu...

Məsələn, bir kataloq Qarşı tərəflərəmrləri verə bilər Qarşı tərəflər, Podratçı: yaratmaqPodratçılar: qrup yaradın.

Tərtibatçı özü konfiqurasiyada ixtiyari əmrlər yarada bilər. O, filiala Command obyekti əlavə edə bilər Ümumidir, xüsusi konfiqurasiya obyektinə Əmr obyekti əlavə edin və ya əmri xüsusi formada daxili dildə prosedur kimi təsvir edin. Daha çox oxu...

Məsələn, ümumi əmrlər əlavə edilə bilər Barkod Skanerini quraşdırın, Barkod Skaneri Quraşdırın və qeyriləri.

Naviqasiya və Fəaliyyət Əmrləri

Bir əmrin yerinə yetirilməsinin nəticəsi ilə əlaqədar olaraq, bütün əmrləri aşağıdakılara bölmək olar:

  • Naviqasiya əmrləri
  • Fəaliyyət əmrləri.

Naviqasiya əmrləri cari pəncərədə formaları açır. Bir qayda olaraq, bəzi siyahılara keçid belə həyata keçirilir. Daha çox oxu...

Məsələn, naviqasiya əmri Anbarlarəsas pəncərədə anbarların siyahısını açacaq.

Fəaliyyət əmrinin icrası nəticəsində köməkçi pəncərə açılır. Bir qayda olaraq, siz obyekt formasına və ya hesabat/emal formasına belə gedirsiniz. Daha çox oxu...

Məsələn, hərəkət əmri Səhm yeni anbarın məlumatlarını redaktə etmək üçün köməkçi pəncərə açacaq.

Müstəqil və parametrləşdirilə bilən əmrlər

Daxili quruluşuna görə bütün əmrləri aşağıdakılara bölmək olar:

  • Müstəqil,
  • Parametrləşdirilə bilən

Müstəqil əmrlərin icrası üçün heç bir əlavə məlumat tələb olunmur. Daha çox oxu...

Məsələn, müstəqil komanda Qarşı tərəflər icrası üçün heç bir əlavə məlumat tələb etmir. Sadəcə olaraq bütün qarşı tərəflərin siyahısını açır.

Parametrləşdirilə bilən əmrləri yerinə yetirmək üçün əlavə məlumat tələb olunur - komanda parametrinin dəyəri. Daha çox oxu...

Məsələn, parametrləşdirilə bilən əmr Cari hesablar (Object.Supplier) konkret qarşı tərəfin cari hesablarının siyahısını açır. Buna görə də, onu həyata keçirmək üçün hansı qarşı tərəfin cari hesablarının açılmasının lazım olduğunu bilməlisiniz. Yəni qarşı tərəf bu komandanın parametridir.

Qlobal əmrlər və yerli forma əmrləri

Əmrlərin müəyyən bir forma münasibətinə görə bütün əmrləri bölmək olar.

Ümumi əmrlər- 1C 8.3 konfiqurasiyasında tez-tez istifadə olunan əmrləri təsvir etmək üçün hazırlanmış platforma mexanizmi.

Bir çox konfiqurasiya obyektinə bir əmr lazım olduqda ümumi və ya qlobal əmrlərdən istifadə etmək rahatdır. Məsələn, sənədin subordinasiya strukturunu göstərmək üçün düymə, sənəd yerləşdirmələrini göstərmək üçün əmr, obyekt dəyişiklikləri haqqında hesabat.

Parametrləri əmrə ötürə bilərsiniz, məsələn, hansı obyektin çağırıldığı formasından.

1C-də ümumi komandanın qurulması və xüsusiyyətləri

Yeni komanda əlavə etmək və ümumi formanı fərdiləşdirmək olduqca sadədir, gəlin bu prosesə daha ətraflı baxaq:

1C-də 267 video dərsi pulsuz əldə edin:

  • Qrup— gələcək komandanın interfeysdə yeri.
  • Komanda parametr növü— gələcək əmrin göstəriləcəyi obyektlər toplusunu müəyyən edir.
  • Parametrdən istifadə rejimi— komanda parametri kimi bir və ya bir neçə dəyəri ötürmə qabiliyyətini təyin edir.
  • Verilənləri dəyişdirir— qeyd qutusu işarələnibsə, əmr yerinə yetirildikdə, forma serverdən yenidən hesablanacaq.
  • Komanda modulu— klientdə icra edilən əmrin icrası işləyicisi.

Nümunə əmr modulu:

&ClientCommand Emalı Prosedurunda(Əmr Parametri, Əmr İcra Parametrləri) Dəyər Doldurulursa(Əmr Parametri) Onda OpenForm( "Ümumi forma. Tabeçiliyin strukturu", Yeni Struktur ("Seçmə Obyekti" , Komanda Parametri) , Komandanın İcra Parametrləri. Mənbə, Komandanın İcra Parametrləri. Mənbə. Unikallıq Açarı, Komandanın İcra Parametrləri. Pəncərə); EndIf; EndProcedure

Burada CommandParameter əmri çağıran obyektdir. Və Əmr İcra Parametrlərində Mənbəni (Forma adlandırılan), Pəncərəni (Müştəri Tətbiqi Pəncərəsi), Unikallığı təsvir edən struktur artıq açıq formanın axtarılıb tapılmamasını göstərir.

1c komanda qrupları

Komandadan istifadə etməklə FASİLƏ obyekt istifadəçi tərəfindən müəyyən edilmiş nöqtədə və ya nöqtələrdə qırılır. Əmrlərdən istifadə PAHÇA (PAHÇA)FİLƏ) paxlar və filetolar yaradılır

Çox vaxt bir uzun seqment çəkmək və sonra onu iki və ya daha çox hissəyə bölmək bir neçə seqment çəkməkdən daha asandır. Komanda FASİLƏƏn tez-tez qapı və pəncərə açılışlarında divarları parçalamaq üçün memarlıq planları yaratarkən istifadə olunur. Bir obyektdə iki nöqtə göstərsəniz, AutoCAD arasında olan hər şeyi siləcək. Tipik olaraq, bu nöqtələri müəyyən etmək üçün obyekt snap istifadə olunur. Bəzən bunun üçün əmrdən istifadə edə bilərsiniz Kəsmək lakin kəsici kənarları müəyyən etməkdə çətinlik çəkirsinizsə, əmrdən istifadə etmək daha yaxşıdır FASİLƏ.

Aşağıdakı AutoCAD obyektləri qırıla bilər: xətlər, çoxlu xətlər, splaynlar, xlinelər, şüalar, dairələr, qövslər və ellipslər.

Komandadan istifadə etməklə PAHÇA (PAHÇA) iki qeyri-paralel seqmentin meydana gətirdiyi künclərdə pahlar yaradılır. Bu əmr düz xətlər, şüalar və polixəttlərlə də işləyə bilər. Seqmentləri kəsişənə qədər uzatmaqla bucaq yaradıla bilər və ya pah yarada bilərsiniz. Bir pah yaradılarsa, o, ya iki ayaqla, ya da bir ayaqla və kənarlardan birinə nisbətən pahın bucağı ilə müəyyən edilir.

Bir pah yaratmaq prosesi iki mərhələdən ibarətdir. Birincisi, pah parametrləri təyin olunur. Bunlar ya iki ayaq, ya da bir ayaq və bir pah bucağı ola bilər. Dəyərləri daxil etdikdən sonra AutoCAD əmri tamamlayacaq CHAMFER(CHAMFER). Bundan sonra, bu əmri yenidən işə salmalı və aralarında pahın yaradıldığı kənarları təmsil edən iki sətir seçməlisiniz. AutoCAD əvvəlki addımda əldə edilən məlumatlardan istifadə edərək pah yaradacaq.

Komanda FİLET (YOLDAĞI) qövslə iki seqmentin hamar birləşməsini qurmaq üçün istifadə olunur. Bu əməliyyat tez-tez mexaniki təsvirlər yaratarkən istifadə olunur. Bəzi hallarda əmr FİLET (YOLDAĞI)əmrinin yerinə istifadə edilə bilər ARC (ARC) qövslər yaratmaq. Komandadan istifadə edərkən olduğu kimi CHAMFER(CHAMFER) əmrindən istifadə edərək FİLƏ(MATCHES) siz paralel ola bilən seqmentləri, düz xətləri, şüaları və ya polixəttləri cütləşdirə bilərsiniz. Lakin, bu obyektlərə əlavə olaraq, dairələr, qövslər və ellipslər də birləşdirilə bilər. Cütləşmə qövsü yaratmaq əmrində onun radiusunu təyin etməlisiniz

Cütləşmə prosesi də iki addımlıdır. Əvvəlcə cütləşmə qövsünün radiusu müəyyən edilir. Bu əməliyyatdan sonra AutoCAD əmri bitirir. İndi əmri yenidən işə salmalısınız FİLET (YOLDAĞI) və iki cütləşən seqment seçin. AutoCAD mövcud məlumatlara uyğun olaraq xətləri cütləşdirəcəkdir.

Qruplar.


Qrup şəklində manipulyasiya etməyin mənasız olan xüsusi obyektlər dəstiniz varsa və kifayət qədər mürəkkəb təkrar istifadə edilə bilən seçim rəsmləri ilə işləyirsinizsə, o zaman obyektlərin birləşmə mexanizmindən istifadə edərək yorucu yenidən seçim prosedurunun təkrarlanmasının qarşısını ala bilərsiniz. qrup.

Qrupların yaradılması və dəyişdirilməsi. Qrup yaratmaq və ya dəyişdirmək üçün əmr satırına daxil olmalısınız qrup və beləliklə, bir dialoq qutusu açın Obyektlərin qruplaşdırılması(Obyektlərin qruplaşdırılması).

Yeni qrup yaratmaq üçün bir sıra addımları yerinə yetirin.

1. Daxiletmə sahəsində Qrup adı qrup adı daxil edin. Ad boşluq olmadan 31 simvoldan ibarət ola bilər. Siz daxil etdiyiniz adın istənilən yerində defis (-) və alt xətt (_) istifadə edə bilərsiniz. .

2. İstənilən halda sahədə Təsvir Siz 64 simvol uzunluğunda şərh daxil edə bilərsiniz. Şərhdə boşluqlar qeyd edə bilərsiniz.

3. Düyməni basın Yeni. AutoCAD cizgiyə qayıdır və əmr satırında sorğu göstərir Obyektləri seçin: Bu sorğuda qrupa daxil etmək istədiyiniz obyektləri seçin. Klikləməklə obyektlərin seçilməsini tamamlayın . AutoCAD dialoq qutusunu ekrana qaytarır.

4. üzərinə klikləyin tamam.

İndi onunla daha da işləmək üçün qrup yaradılıb.

Bir obyekt bir neçə qrupa aid ola bilər.

zonada Qrup identifikasiyası dialoq qutusu Obyektlərin qruplaşdırılması düyməsi də var Adı tapın. Bu düymə seçilmiş obyektin aid olduğu qrupun adını axtarmaq üçün istifadə olunur. AutoCAD sizə obyekt seçməyə imkan verir və sonra müvafiq qrupun (və ya qrupların) adını göstərir.

Bir düyməyə basmaq Vurğulayın verilmiş qrupu vizual olaraq vurğulamağa imkan verir. Siyahıdan birincisi Qrup adı qrup seçilir və düyməni basdıqdan sonra Vurğulayın AutoCAD rəsmə qayıdır və qrupdakı bütün obyektləri seçir. Düyməni basdıqdan sonra Davam et AutoCAD dialoq qutusuna qayıdır. Düymə Vurğulayın sonrakı iş üçün siyahıdan qrupun düzgün seçilməsinə inamın olmadığı hallarda istifadə olunur.

Dialoq qutusunun Qrup sahəsini dəyişdirin Obyektlərin qruplaşdırılması Qrup idarəçiliyində çeviklik təmin edir. Qrupu dəyişdirmək üçün qruplar siyahısında olmalıdır Qrup adı Dialoq qutusunun yuxarı hissəsində hər hansı bir qrup adına klikləyin. Bundan sonra, zonadakı bütün düymələr Qrupu dəyişdirin mövcud olmaq. Gəlin onların məqsədini təsvir edək.

Sil. Bu seçimi təyin etsəniz, AutoCAD rəsmin ekranın qrafik sahəsinə çıxarılmasına keçir və əmr satırında bir sorğu göstərir. Qrupdan silinəcək obyektləri seçin.... Rəsmdən xaric edilməli olan obyektləri seçin. Əməliyyatı başa çatdırmaq üçün basın . tamam.

əlavə et. Bu seçimi təyin etsəniz, AutoCAD rəsm sahəsinə keçir və əmr sətirində sorğu göstərir Qrupa əlavə etmək üçün obyektləri seçin. . . (Qrupa əlavə etmək üçün obyektləri seçin...). Qrupa əlavə edilməli olan obyektləri seçin. Əməliyyatı başa çatdırmaq üçün basın . AutoCAD dialoq qutusuna qayıdacaq. Basın tamam.

Adını dəyişdirin. Bu seçim göstərildikdə, adı dəyişdiriləcək qrup seçilir və daxiletmə sahəsindədir Qrup adı onun adı dəyişir. düyməni basın Adını dəyişdirin. Siyahıda qrup adı Qrup adı də dəyişməlidir. Basın tamam.

Yenidən sifariş edin. Qrupdakı hər bir obyektə 0-dan başlayaraq nömrələr verilir. Bəzi hallarda qrupda obyektlərin yerləşdirilməsi ardıcıllığı (məsələn, qrupdakı obyektlər üzərində işləyən proqramı icra edərkən) əhəmiyyət kəsb edir. Obyektlərin sırasının dəyişdirilməli olduğu qrupu seçin. AutoCAD dialoq qutusu açacaq Sifariş Qrupu. Bir qrupdakı obyektləri mövcud olanlara tərs qaydada təşkil etmək istəyirsinizsə, düymələri basın Əks Sifariş.Əks halda, düymələri basın Vurğulayın və Əvvəlki. Bu pəncərənin aşağı sağ küncündə

Təsvir. Bu seçim qrup təsvirini yeniləyir.

partlatmaq. Bu seçim qrupu öz komponentlərinə bölür. Bütün obyektlər rəsmdə qalır, lakin onlar qrup olmağı dayandırır.

Seçilə bilər. Qrup seçilə bilərsə, bir qrup obyektinin seçilməsi bütün qrupu seçir. Bu seçim qrupu parçalamadan müvəqqəti olaraq tək obyektlərin manipulyasiya rejiminə keçməyə imkan verir.

FƏSİL 4

Obyektlər üzərində əmrlər və əməliyyatlar

  • Əsas əmrlər və əməliyyatlar
  • Obyektlərin seçilməsi
  • Obyektlərin seçilməsi və əmrin yerinə yetirilməsi
  • Alt obyektlərin seçilməsi
  • Obyektin görünməsinə nəzarət
  • Obyektlərin klonlanması
  • Obyektlərin qruplaşdırılması
  • Obyekt çevrilmələri

2. Əsas əmrlər və əməliyyatlar

Əsas əmrlər və əməliyyatlar

Max mühitində obyektlər üzərində əsas əmrlər və əməliyyatlar aşağıdakı qruplarla müəyyən edilə bilər:

  • Obyektlərin seçilməsi;
  • Obyektlərin seçilməsi və əmrin yerinə yetirilməsi;
  • Alt obyektlərin seçilməsi;
  • Obyektlərin görünməsinə nəzarət etmək; Obyektlərin klonlanması;
  • Obyektlərin qruplara birləşdirilməsi.
  • Obyekt çevrilmələri
  • Onların hər birinə daha ətraflı baxaq.

3. Obyektlərin seçilməsi

Obyektlərin seçilməsi

Obyekt seçimi əməliyyatlarını yerinə yetirmək və idarə etmək üçün bir neçə üst-üstə düşən üsullar mövcuddur. Onlardan ən ənənəvi olanına əlavə olaraq - seçilmiş obyektin üzərinə sol klikləməklə, bu prosedur bir qrup element vasitəsilə həyata keçirilə bilər. seçin açılan menyudan Redaktə et(Şəkil 4.01).

Aşağıda funksiyalarının qısa təsviri ilə bu elementlərin siyahısı verilmişdir:

  • Hamısını seç- bütün görünməyən və "dondurulmuş" obyektləri seçməyə imkan verir (bu terminlərin mənası aşağıda təsvir olunacaq).
  • Heç birini seçin- səhnədəki bütün obyektlərin seçimini ləğv edir.
  • Ters çevir seçin- bütün seçilməmiş obyektləri tərsinə seçir.

ŞƏKİL 4.01. Obyekt seçim nöqtələri

  • Rəngə görə seçin- göstərilən obyekt rənginə əsasən seçim yaradın
  • Ada görə seçin- dialoq qutusu vasitəsilə ümumi siyahıdan bir və ya bir neçə obyekti adına görə seçin (şək. 4.02).


ŞƏKİL 4.02. Siyahıdan adla obyektlərin seçilməsi

  • Region- obyekt seçim rejimini təyin edən iki açarı var:
  • Pəncərə- V komplektə seçim sahəsinə tam uyğun gələn obyektlər daxildir;
  • Keçid- obyektlər yalnız seçim sahəsinə toxunsalar belə seçilirlər.

Həmçinin, obyektlərin seçilməsi əməliyyatı aşağıdakı düymələr qrupundan istifadə etməklə həyata keçirilə bilər (Şəkil 4.03):

ŞƏKİL 4.03.Əsas Alətlər Panelində obyektləri seçmək üçün düymələr qrupu

  • Obyekt seçin- sol siçan klikləməklə obyektləri seçmək rejiminə imkan verən modal düymə. Hər sol kliklə, əvvəlki seçim sıfırlanır və obyektlərdən yalnız biri, sonuncusu seçilir. Sıfırlamadan setə yeni obyekt əlavə etmək üçün düyməni basıb saxlayaraq siçanın sol düyməsini sıxın , seçilmiş obyekti dəstdən çıxarmaq üçün - düymə ilə birlikdə klikləyin .
  • Seçim Bölgəsi- obyektin seçim sahəsinin formasını dəyişdirmək üçün düymələrin siyahısı. kimi təyin edilə bilər Düzbucaqlı, Dairəvi və ya Hasar (Polyline).

İstədiyiniz formanı seçmək üçün bu düyməni vurun (bütün siyahı görünənə qədər) və sol siçan düyməsini basıb, kursoru müvafiq düyməyə buraxaraq siyahı üzrə hərəkət etdirin.

Ada görə seçin Ad) - əvvəllər qeyd olunan dialoq qutusunu çağıran düymə Obyektləri seçin(Şəkil 4.02). Onun parametrləri üzərində dayanaq.

Əsas məlumat sahəsi səhnə obyektlərinin siyahısını ehtiva edir və çeşidləmə sırası və göstərmə üsulu parametrlər qruplarından asılıdır Çeşidləmə və Siyahı Növləri.

Onlardan birincisi səhnə obyektlərinin adlarının çeşidlənməsi üsulunu təyin etməyə imkan verir Əlifba sırası, Növ, Rəng və Ölçüyə görə.

Qrup onay qutuları Siyahı növləriümumi siyahıda Max obyektlərinin hansı kateqoriyalarının göstəriləcəyi və hansının gizlədilməsi qaydasına nəzarət edin. Düymələr Hamısı, Yox və Ters bütün qrup bayraqlarını tez idarə etmək üçün lazımdır.

Pəncərənin sol altındakı qeyd qutularının əlavə siyahısı aşağıdakı seçimləri idarə edir:

  • Alt ağacı göstərin- iyerarxik əlaqələri və ya açıq qrupları olan obyektlərin göstərilməsini təmin edin (qruplar daha sonra müzakirə olunacaq).
  • Alt ağac seçin- belə obyektlərin seçilməsinə imkan verin.
  • Hərflərə Həssas- yuxarı mətn sahəsində müəyyən edilmiş adda hərfin təsiri.
  • Asılıları seçin- obyektin seçilməsi onun hamısının eyni vaxtda seçilməsinə səbəb olacaq Nümunələr və İstinadlar.

Düymələr AI (hamısı), Yoxdur və Çevir bu siyahıdan yuxarı obyekt adlarının seçimi üzərində sürətli nəzarət etməyə imkan verir. Və nəhayət, siyahı Seçim dəstiəvvəlcədən yaradılmış və adlandırılmış bir neçə obyekt dəstindən birini seçməyə imkan verir. Bu fəsildə daha sonra bu cür dəstlərin yaradılması haqqında ətraflı məlumat verəcəyik.

Seçimin aparıldığı obyektlərin kateqoriyasını seçmək üçün istifadə etməlisiniz Seçim filtri. Bu siyahı sizə işləmək üçün obyektlərin bir və ya bir neçə kateqoriyasını seçməyə və digərlərini istisna etməyə imkan verir.

Siyahı dəyəri Hamısı (Bütün Obyektlər) səhnədəki bütün obyektlərə tətbiq edilir və bütün məhdudiyyətləri aradan qaldırır.

Şəkil:

Şəkil:

4. Obyektlərin seçilməsi və əmrin yerinə yetirilməsi

Obyektlərin seçilməsi və əmrin yerinə yetirilməsi

Təsvir edilən qrupda qalan düymələr Əsas Alətlər Paneli hamısı modaldır və seçim etdikdən sonra müvafiq əmrin icrasına davam etməyə imkan verir:

  • Seçin və Bağlayın- növlər üzrə tabeli səhnə obyektlərinin iyerarxik əlaqəsi əməliyyatını yerinə yetirir Valideyn-Uşaq.
  • Seçin və Köçürün- seçim başa çatdıqdan dərhal sonra obyekti və ya obyektləri köçürməyə başlamağa imkan verir.
  • Seçin və Döndürün- seçilmiş obyektlərdə fırlanma əməliyyatı üçün eynidir.
  • Seçin və Ölçəkləyin- düymələr siyahısının cari vəziyyətindən asılı olaraq Ölçəkəməliyyat ola bilər Uniforma, Uniforma olmayan miqyaslama və Squash seçim başa çatdıqdan dərhal sonra.

Yaratmaq üçün Adlandırılmış Seçim Dəsti istədiyiniz obyektləri seçmək və ad siyahısı mətn sahəsinə unikal ad daxil etməlisiniz Əsas Alətlər Paneli(Şəkil 4.04).

Hər bir yeni ad adlar siyahısına əlavə edilir və Max layihə faylında saxlanılır. Adlandırılmış dəstləri konfiqurasiya etmək və dəyişdirmək üçün dialoq qutusundan istifadə edin Adlandırılmış Seçim Dəsti(Şəkil 4.05), əmri ilə çağırılır adlı Seçim Dəstlər menyuda Redaktə et, və ya əsas alətlər panelindəki eyni adlı düymə.


DÜYÜ. 4.04. Adlandırılmış dəstlərin siyahısı


ŞƏKİL 4.05. Adlandırılmış dəstləri redaktə etmək

Bu pəncərənin yuxarı hissəsində yerləşən düymələr sizə imkan verir:

  • yeni dəstlər yaratmaq;
  • dialoq qutusunda seçilmiş obyekti dəstdən silmək və ya bütün dəsti silmək;
  • proqram pəncərəsində seçilmiş obyekti komplektə əlavə etmək;
  • proqram pəncərəsində seçilmiş obyekti dəstdən silmək;
  • proqram pəncərəsində dialoq qutusunda seçilmiş topluluğa daxil olan obyektləri seçin;
  • dialoq qutusundan istifadə edərək obyektləri adlarına görə seçin Obyektləri seçin.
  • dialoq qutusunda seçilmiş obyektləri vurğulayın.

Şəkil:

Şəkil:

5. Alt obyektlərin seçilməsi

Alt obyektlərin seçilməsi

İşləmək imkanı Alt-obyektlər(Subobjects) seçilmiş obyekt çoxsəviyyəli struktura malik olduqda baş verir. Max mühitində alt obyektlər səviyyələrdir Vertex, Segment və Spline in tipli obyektlər Forma; Vertex (Vertex), Kenar (Kənar), Üz (Üz), Poliqon (Müstəvi) və Element (Element) tipli obyektlərdə Mesh (Çərçivə) və s. Modifikatorlardan hər hansı biri - obyektlərin daxili strukturunu dəyişdirmək üçün xüsusi alətlər - səviyyəyə malik ola bilər Alt-Obyekt pəncərədə nə göstərilir Modifikator yığını.Əgər dəyişdirici adının yanında “+” işarəsi yoxdursa, o zaman dəyişdirici alt obyekt səviyyəsi ilə işləməyə imkan vermir və əksinə (şək. 4.06).


ŞƏKİL 4.06. Sub-Obyekt Səviyyə Seçimi

Rejimə keçmək asanlığı üçün Alt-Obyekt və geri seçilmiş obyektin kontekst menyusuna sağ klikləməklə çağırılan eyni adlı elementi ehtiva edir (Şəkil 4.07).


ŞƏKİL 4.07. Kontekst Menyusunda Alt Obyekt Səviyyəsi

Rejimdə olarkən Sub-obyekt mümkündür həm də yaradır Adlandırılmış Seçim Dəsti alt obyektlər üçün, lakin onlar yalnız bu rejimdə mövcud olacaq.

Şəkil:

Şəkil:

6. Obyektlərin görünməsinə nəzarət

Obyektin görünməsinə nəzarət

Max mühitində səhnə obyektlərinin görünməsinə nəzarət etmək üçün çox çevik sistem hazırlanmışdır. İnkişaf etmiş komanda sisteminə əlavə olaraq, bir-birini tamamlayan parametrlər və parametrlər dəsti var, bu da işi optimallaşdırmağa və yalnız hazırda ehtiyac duyulan obyektləri və ya obyekt qruplarını "görməyə" imkan verir. Obyektin görünməsi məsələsi xüsusilə mürəkkəb, zəngin səhnələrdə aktualdır, burada bəzən ekranın yenilənməsini (yenidən çəkilməsini) uzun müddət gözləməli olursunuz (xatırlamalısınız ki, bütün gizli və ya donmuş obyektlərə məhəl qoyulmur).

Bütün görünürlük nəzarətləri paneldə cəmlənib Displey və Floater-də açılan menyudan çağırıla bilər Alətlər.

Səhnə obyektlərinin hər biri bir neçə görmə səviyyəsinə malik ola bilər:

  • Obyekt həm görünüş pəncərələrində, həm də səhnəni göstərərkən görünür.
  • Obyekt baxış pəncərələrində görünür, lakin səhnədə göstərilmir və ya göstərilmir.
  • Obyekt baxış pəncərələrində görünür və səhnəni göstərərkən göstərilir, lakin seçim və redaktə əmrləri üçün “dondurulmuşdur” (əlçatan deyil).
  • Obyekt gizlidir və baxış pəncərələrində və ya təsvirlərdə görünmür.

Düzünü desək, obyektlərin görünməsi üçün daha bir neçə variant var, lakin onlar daha az tipikdir və üzərində dayanmağa dəyməz.

Obyektləri idarə etməyin ən əlverişli yolu vasitəsilə Floater göstərin Buna görə də, daha ətraflı təhlil edək. Bu panel (şəkil 4.08) iki tabdan ibarətdir Gizlət / Dondur və Obyekt Səviyyəsi.

Onlardan birincisi bütün əsas panel əmrlərini təkrarlayır Ekran bəzi nadir hallarda istifadə olunanlar istisna olmaqla. İki qrup qaldırılmış düymə əmrlərə cavabdehdir Gizlət (Gizlət) və Gizlət (Göstər), daha çox iki - Dondurun və Açın. Yoxlama qutusu Dondurulmuş obyekti gizlədin eyni zamanda obyektləri dondurmağa və gizlətməyə imkan verir. Qabartma düymələri gizlətməyə/dondurmağa imkan verir Seçilmiş, Seçilməmiş obyektlər, seçim edin Adı və Hit ilə.

Əlfəcin Obyekt Səviyyəsi parametrini idarə edir Kateqoriyaya görə gizlədin və onay qutuları dəsti Ekran Xüsusiyyətlər. Floater Panelini göstərin istənilən vaxt ekrandan silinə bilər (bağlamaq düyməsini sol klikləməklə) və ya yenidən çağırıla bilər.

ŞƏKİL 4.08.Üzən Ekran Paneli

Şəkil:

7. Obyektlərin klonlanması

Obyektlərin klonlanması

Max-də obyektlərin surətlərini yaratmağın bir neçə yolu var. Ən çox istifadə edilən, kopyalanan obyekti və ya obyektlər qrupunu seçmək və transformasiya əmrlərindən birini istifadə etməkdir - Köçürün, Döndürün və ya Ölçək düyməni basmaqla . Komanda yerinə yetirildikdən sonra dialoq qutusu çağırılır (şək. 4.09), burada yaradılacaq obyektin tipini və ya obyektlər qrupunu təyin etməlisiniz. Üç növ var:


ŞƏKİL 4.09. Klon rejimlərinin seçilməsi

  • Soru (kopya)- yeni obyekt orijinalın bütün xassələrini miras alır (həndəsə, materiallar, baxış pəncərələrində göstərmə rejimləri və s.).

Nüsxəyə və ya orijinala edilən hər hansı dəyişiklik unikaldır və yalnız dəyişdirilən obyektə aiddir.

  • Nümunə- yeni obyekt orijinalın tam surətidir və onlar arasında aşağıdakı ikitərəfli məntiqi əlaqə yaradılır: orijinala edilən hər hansı dəyişiklik dərhal onun bütün nüsxələrində əks olunur və əksinə.
  • İstinad- nümunənin bir variantı, lakin birtərəfli əlaqə ilə. Yalnız orijinala edilən dəyişikliklər bütün keçidlərdə eyni dəyişikliklərə səbəb olur. Obyekt istinadlarına edilən hər hansı dəyişiklik yalnız dəyişdirilən xüsusi istinad obyektinə aiddir.

Pəncərəni əlavə etmək qalır Klon Seçimləri mətn sahəsində yaradılmış obyektlər üçün ad təyin etməyə imkan verir ad(Ad) və sayğacdan istifadə edərək yeni nüsxələrin sayını seçin Nüsxələrin sayı.

Elementdən istifadə edərək obyektlərin klonlanması üçün seçim var Klon açılan menyuda Redaktə et. Onun istifadəsi eyni pəncərəni gətirir Klon Seçimləri lakin 1-ə bərabər olan yaradılmış nüsxələrin sayını dəyişmək imkanı olmadan. Obyektlərin nüsxələrini yaratmaq üçün bu seçim nüsxələrin orijinal ilə eyni koordinatlara malik olması şərtilə əlverişlidir.

Başqa bir klonlama variantı əmrlərdən istifadə etməkdir Güzgü (Güzgü) və Array (Array).

Onlardan birincisi düymə ilə çağırılır Seçilmiş Obyektləri əks etdirinƏlavə dialoq qutusundan Güzgü: Ekran Koordinatları(Şəkil 4.10) surət oxunu - X, Y, Z və ya surət müstəvisini - seçməyə imkan verir. XY, YZ, ZX.


ŞƏKİL 4.10. Obyektlərin güzgü nüsxələrinin yaradılması

Mövqeyi dəyişdirin Klon seçimi yaradılacaq nüsxələrin növünü və mövqeyini seçməyə imkan verir Klon yoxdur (Klon edir) surətlər yaratmadan orijinal obyektin güzgü şəklini yerinə yetirir.

Komanda Massiv alətlər panelində yerləşən düymələr siyahısından çağırılır Ox Məhdudiyyətləri. Eyni adlı dialoq qutusu Massiv surət çıxarma metodunu, massiv ölçüsünü (1,2 və ya 3D), həmçinin çevrilmə növünü təyin etməyə imkan verir. (Hərəkət edin, Döndürün və ya miqyas) hər nüsxəyə tətbiq olunacaq (şək. 4.11).


ŞƏKİL 4.11. Massivlərin yaradılması

Şəkil:

Şəkil:

Şəkil:

Şəkil:

8. Obyektlərin qruplara birləşdirilməsi

Obyektlərin qruplaşdırılması

Obyektlərin dəstlərini idarə etməyi asanlaşdırmaq və obyektlə zəngin səhnələri sadələşdirmək üçün əmrdən istifadə edin Qrup. Eyni adlı açılan menyu elementi vasitəsilə çağırılır Qrup və seçilmiş obyektlərə tətbiq edilir. Yaradılacaq qrupun adını daxil etmək üçün pəncərə görünür (şək. 4.12). Qrup adı təsdiq edildikdən sonra yeni səhnə obyekti yaradılır.


ŞƏKİL 4.12. Qrup adının yığılması

Müəyyən meyarlara (mürəkkəb obyektin komponent elementləri, eyni tipli obyektlərin tez-tez təkrarlanan dəstləri və s.) uyğun olaraq qrupa birləşdirilən obyektlərlə seçim, klonlaşdırma, materialların təyin edilməsi, çevrilmə və s. kimi əməliyyatları yerinə yetirmək çox rahatdır. daha çox. Qruplar çoxsəviyyəli daxili struktura malik ola bilər. Max mühitində obyekt qrupları ilə işləmək imkanlarını nəzərdən keçirək. Bütün idarəetmə əmrləri əvvəllər qeyd olunan Qrup açılan menyusunda cəmləşmişdir:

  • Qrup- seçilmiş obyektləri eyni adlı dialoq qutusuna yazılan yeni adla qrupa birləşdirir (şək. 4.12). Qrupun adı Ad sahəsində qalın hərflərlə və ya Obyektləri seçin dialoq qutusunda kvadrat mötərizədə göstərilir (Şəkil 4.13).


ŞƏKİL 4.13. Obyekt siyahılarında qruplar göstərilir

Açıq - qruplaşdırmanı qismən aradan qaldırır, açılmış qrupa daxil olan istənilən obyekti seçmək, dəyişdirmək və çevirmək imkanı verir. Bu halda, qrupun bütün obyektlərinin uyğunlaşdığı və yaradıldığı zaman adı göstərilən ölçülü konteyner olan əlavə bir obyekt görünür. Bu qab ekranda qırmızı rəngdə çəkilmişdir.

Bağla - Qrupu standart vəziyyətinə qaytarır, obyekti qrup adı ilə gizlədir və qrupdakı bütün obyektlərə tam qruplaşdırmanı qaytarır.

  • Qrupu ayırın- seçilmiş qrupa daxil olan obyektlərin qruplaşdırılmasını aradan qaldırır, onların hər biri üzərində ayrıca işləməyə imkan verir.
  • partlatmaq- çoxsəviyyəli, yuvalanmış qrupu təşkil edən obyektlərin qruplaşmasını silir.
  • Ayırmaq- qrupdan seçilmiş obyekti (və ya obyektləri) seçir. Bu əmri yerinə yetirmək üçün əvvəlcə qrupu komanda ilə açmalısınız Açıq.
  • əlavə edin- seçilmiş obyektləri siçanın sol düyməsi ilə müəyyən edilmiş qrupa əlavə edir.

Şəkil:

Şəkil:

9. Obyektlərin çevrilmələri

Obyekt çevrilmələri

Transformasiya növləri

Max mühitində üç əsas transformasiya əməliyyatı istənilən obyekt, bir neçə obyekt və ya qrup dəsti ilə həyata keçirilə bilər - Köçür, Döndür və Ölçək bir ümumi terminlə birləşdirilən - Çevrilir. Bütün çevrilmələr müvafiq düymələrə təyin olunur Əsas Alətlər Paneli və Ölçək- düymələrin siyahısı. Yer dəyişdirmə transformasiyası obyektin üçölçülü məkanda mövqeyini, fırlanma - onun istiqamətini və miqyasını - obyektin xətti ölçülərini dəyişməyə imkan verir. Üstəlik, son çevrilmə üç növ ola bilər:

  • Uniforma- X, Y, Z üç koordinat oxu boyunca vahid miqyaslama;
  • Qeyri-vahid- obyektin oxlarından və ya müstəvilərindən biri boyunca yerinə yetirilir;
  • Squash- oxlardan biri və digər ikisinin müstəvisi boyunca qarşılıqlı əks eyni vaxtda miqyaslama və ya əksinə.

Bütün transformasiya əmrləri obyektin kontekst menyusunda təkrarlanır və seçilmiş obyektin üzərinə sağ klikləməklə çağırıla bilər.

Tipik olaraq, səhnə obyektlərində transformasiyaların yerinə yetirilməsi mövqenin, oriyentasiyanın və ya miqyasın vizual qavranılmasına uyğun olaraq təxmini dəqiqliklə (“gözlə”) həyata keçirilir. Bununla belə, metoddan istifadə edilən parametrlərin dəqiq daxil edilməsinin zəruri olduğu hallar var. Yazın. Müvafiq dialoq qutusu element vasitəsilə çağırıla bilər Transform Type-In (Transformasiya Parametrlərinin Dəqiq Girişi) açılan menyu Alətlər. Seçilmiş transformasiya növündən asılı olaraq bir pəncərə çağırılır Köçürün, Döndürün və ya Ölçək Dönüştürmə Tipi (Daşıma, Döndürmə və ya Ölçələmə), iki qrup sayğac ehtiva edir - Mütləq: Dünya və Ofset: Ekran(Şəkil 4.14).


ŞƏKİL 4.14. Dəqiq Parametr Girişi

Başlanğıcda, bu pəncərə çağırıldıqda, birinci qrupun sayğacları seçilmiş obyektin üçölçülü məkanda mövqeyinin, istiqamətinin dəqiq dəyərlərini göstərir. Başqa bir çevrilmə növünə keçərkən (müvafiq modal düymələrdən istifadə etməklə Əsas Alətlər Paneli və ya redaktə olunan obyektin kontekst menyusuna zəng etməklə), Type-In pəncərəsi dərhal müvafiq birinə dəyişir.

Max-də çevrilmələrin parametrlərini idarə edən əlavə alətlərdir Məhdudiyyət modal düymələr qrupu tərəfindən müəyyən edilir, İstinad Koordinat Sistemi düymələr siyahısından seçilə bilər. Onların hamısı alətlər panelində yerləşir Ox Məhdudiyyətləri(Şəkil 4.15). Düymələrin başqa bir siyahısı Point Center (Transformasiya Mərkəzi),çevrilmələri idarə etmək üçün nəzərdə tutulmuş, üzərində yerləşir Əsas Alətlər Paneli.

ŞƏKİL 4.15. Məhdudiyyətlər düymələri qrupu Gəlin onların hər birinə daha ətraflı baxaq.

Ən müasir proqram təminatı proqramçılar komandaları tərəfindən hazırlanır. Kimsə istifadəçi interfeysinə, kimsə nüvəyə, kimsə isə əlavə modullara cavabdehdir. Bütün bu insanların əməyinin boşa getməməsini təmin etmək üçün onun mümkün genişlənməsini unutmadan layihənin müxtəlif hissələrini düzgün birləşdirmək lazımdır. Bunu etmək üçün bizə tapşırığın icraçısını və onun şərtlərini əhatə edən "Komanda" dizayn nümunəsinə ehtiyacımız olacaq.

Təsəvvür edək ki, biz mürəkkəb çoxkomponentli proqram təminatı yazan şirkətdə işləyirik. Layihə yüksək dərəcədə ixtisaslaşmışdır və çoxlu müxtəlif modullara malikdir, onların sayı zamanla genişlənə bilər. Bizim vəzifəmiz bu proqram üçün çevik və rahat hotkey sistemi yazmaqdır. Mümkün birləşmələr dəsti qısa düymələrlə məhdudlaşır əvvəl , və həmçinin hərəkəti ləğv etmək üçün ctrl-z kombinasiyası daxildir.

Deyəsən, hər şey sadədir: müxtəlif düymə birləşmələri basıldıqda modulun bu və ya digər funksiyasını çağıran və sevinən böyük bir keçid blokunu kodladım. Lakin, birincisi, bu yanaşma çevik deyil. Layihə yeni modullar və ya isti düymələr əlavə etdikdə, bu şişmiş filial bəyanatının kodunu dəyişdirməli olacağıq ki, bu da onun daha da şişməsinə səbəb olacaq. İkincisi, rəhbərlik böyük qırmızı hərflərlə yazdı ki, istifadəçi bu isti düymələri yenidən təyin edə bilməlidir. Beləliklə, biz qətiliklə əmrləri keçid koduna kodlaşdıra bilməyəcəyik.

Layihə modullarının koduna və onların isti düymələrə təyin edilə bilən əmrlərinin siyahılarına baxdıqda, bütün bunlar üçün az və ya çox işləyən bir arxitektura ortaya qoymazdan əvvəl çox əziyyət çəkməli olacağımıza daha da əminik.

Modul interfeysləri HotKeys sinif Kalkulyatoru (ictimai: void runCalc(); void closeCalc(); ) sinif Printer (ictimai: void printDocument(); void printImage(); void printEmail(); ) sinif Brauzer ( ictimai: void runBrowser() vasitəsilə əldə edilə bilər. ); void closeBrowser();

Komanda Modeli

Sözləri bir kənara qoyaraq, bu çətin işdə bizə kömək etməli olan "Komanda" nümunəsini öyrənməyə davam edək. Əvvəlcə nəyə sahib olduğumuzu anlamalıyıq. Bizim müxtəlif API-lərə malik çoxlu modullarımız var. Bizdə həmçinin istifadəçinin siyahıdan modullar tərəfindən verilən əmrlərdən birini seçə və onu xüsusi klaviatura qısayoluna təyin edə biləcəyi bir pəncərəmiz var.

Formal olaraq desək, klaviatura işləyicisi klientdir, isti düymələrlə çağırılan modulların API funksiyaları tapşırıqlardır və bu tapşırıqları təmin edən modullar icraçılardır. İsti düymələrin parametrləri pəncərəsi, icra olunan əməliyyatların bütün detallarını gizlədən müştəri ilə ifaçı arasında bir növ vasitəçidir. Bu struktur müştərini icraçıdan tamamilə ayırmağa imkan verir, yəni istifadəçi müəyyən düymələr kombinasiyası basıldıqda hansı modulun işlədiyini və onun nə işlə məşğul olduğunu bilmir. Və bu çox yaxşıdır, çünki kodun hissələri bir-birindən nə qədər yaxşı təcrid olunsa, proqram daha etibarlı işləyir.

Belə izolyasiya üçün komanda obyektini və buna görə də müvafiq interfeysi təyin etməliyik. Bu olduqca sadədir və modullardan hər hansı birinin metodunu yerinə yetirməli olan yalnız bir execute() metodunu müəyyən edir.

“Əmrlər” obyekt sinfinin interfeysi Əmr ( ictimai: void execute() = 0; )

Konkret obyekti müəyyən etmək üçün biz sadəcə olaraq Komanda interfeysini miras alan yeni sinif elan edirik və onun execute() metodunu təyin edirik. Tutaq ki, kalkulyatoru işə salan komanda yaratmaq istəyirik. Bunun üçün biz Kalkulyator modulunun runCalc() metodunu çağırmaq üçün Komanda interfeysini miras alacaq və execute() funksiyasını ləğv edəcək RunCalcCommand sinfi yaradacağıq.

Kalkulyatorun işə salınması əmr sinfi RunCalcCommand: ictimai Əmr ( Kalkulyator *calc; ictimai: RunCalcCommand(Kalkulyator *excalc) ( calc = excalc; ) void execute() ( calc->runCalc(); ) )

Əgər komanda koduna diqqətlə baxsanız, RunCalcCommand sinfinin konstruktorunda Kalkulyator moduluna göstəricinin ötürüldüyünü görəcəksiniz. Bu, daha çox çeviklik üçün edilir. Gələcəkdə hesablama proqramının təkmil versiyasını çağıran ModernCalculator sinfimiz ola bilər. Kompozisiyadan istifadə etməklə, yəni ifaçını kodda ciddi şəkildə fiksasiya etmədən, kodun izolyasiyasını artırırıq ki, bu da gələcəkdə vaxta qənaət edəcəkdir.

İndi əmri isti düymə ilə əlaqələndirməlisiniz. Bunun üçün siz Command sinfinin obyektlərinə göstəricilər massivi yarada bilərsiniz. Massivin ölçüsü dəstəklənən isti düymələrin sayına bərabər olacaq. Komanda massivinin hər bir elementi xüsusi isti düymə ilə əlaqələndirilir. Bizim vəziyyətimizdə bunun üçün Ctrl ilə birlikdə mümkün kombinasiyalardan hər hansı birini təşkil edən düymənin qiymətini ədədi qiymətə çevirə bilərik. Əgər ctrl-a-dan ctrl-k kimi qısa yollardan istifadə etsəydik, bir az fərqli yanaşma lazımdır.

Basılan düymələr kombinasiyasının kodunu aldıqdan və onu əmrlər massivi üçün müvafiq indeksə çevirdikdən sonra, göstəricisi massivin istədiyiniz xanasında yerləşən obyektin execute() metodunu etibarlı şəkildə çağıra bilərik.

İsti düyməyə komandanın təyin edilməsi və onun işə salınması // Komanda və isti düymənin başlanğıc kodu const int comCount = 10; Command* əmrləri; Kalkulyator *calc = yeni Kalkulyator(); əmrlər = yeni RunCalcCommand(calc); // Klaviatura mətbuat idarəçisində kod // Basılan düymələri əldə edin hotkey = catchHotKey(); // Onları indeksə çevirin və əmri icra edin int index = hotkey2index(hotkey); əmrlər->icra ();

Hər şey olduqca sadədir. Siz xüsusi hərəkətləri yerinə yetirəcək və onları isti düymələrlə əlaqələndirəcək daha bir neçə Əmr nəslini təyin edə bilərsiniz. Bu arxitektura müştərini icraçılardan tamamilə ayırmağa imkan verir. Klaviatura işləyicisinin hansı modulun əmri emal etdiyi və tam olaraq nə etdiyi barədə heç bir fikri yoxdur və modullar da öz növbəsində onlara başqa yolla deyil, isti düymələrdən istifadə etməklə daxil olmaq barədə heç bir təsəvvürü yoxdur.

Ləğv et əmri

Deyəsən, hər şey qaydasındadır, amma ləğv etməyi tamamilə unutmuşuq. Ctrl-z klaviatura qısa yolu son əmrin təsirini ləğv etməlidir. Ləğv etmək olduqca sadədir, baxmayaraq ki, ilk baxışdan belə görünməsə də. Bunun üçün komanda interfeysini bir az dəyişəcəyik.

Sinfi ləğv etməyi dəstəkləyən komanda sinfi Command ( public: void execute() = 0; void undo() = 0; ) class RunCalcCommand: public Command ( Calculator *calc; public: RunCalcCommand(Calculator *excalc) ( calc = excalc; ) void execute() ( calc->runCalc(); ) ləğv et() ( calc->closeCalc(); ) )

Biz sadəcə olaraq nəsil siniflərində ləğv edilməli olan undo() metodunu əlavə etdik. Ləğv metodunun hansı modul funksiyasından istifadə edəcəyinə proqramçı özü qərar verir. Beləliklə, RunCalcCommand üçün undo() metodu Kalkulyator modulunun closeCalc() funksiyasını çağıracaq. Klaviatura idarəedici kodunu da bir az tənzimləməliyik.


"Komanda" nümunəsi haqqında Vikipediya. Ləğv dəstəyi ilə klaviatura işləyicisi // Komanda və isti düymənin başlanğıc kodu const int comCount = 10; Command* əmrləri; Komanda *lastCommand = yeni NoCommand(); Kalkulyator *calc = yeni Kalkulyator(); əmrlər = yeni RunCalcCommand(calc); // Klaviatura mətbuat idarəçisində kod // Basılan düymələri əldə edin HotKey *hotkey = catchHotKey(); // Əgər bu ləğvetmədirsə, o zaman müvafiq metodu çağırın, əgər (isti düymə->str() == "ctrl-z") ( lastCommand->geri al (); ) // Digər kombinasiyaların işlənməsi

Burada sadəcə olaraq lastCommand dəyişənində istifadə olunan sonuncu əmrin göstəricisini saxlayırıq və ctrl-z düymələrini basarkən müvafiq metodu çağırırıq. Bundan əlavə, biz NoCommand boş əmr obyektindən istifadə edərək kiçik bir hiyləyə müraciət edirik. Bu sinif üçün kod belə görünür:

Boş komanda NoCommand sinfi NoCommand: ictimai Əmr ( ictimai: void execute() (); void geri al () (); )

Belə stub obyektləri olduqca tez-tez istifadə olunur. Onlar null göstərici yoxlamalarının sayını azaltmaq üçün lazımdır. Əgər lastCommand NULL olsaydı, geri qaytarma () metodunu çağırmazdan əvvəl biz bu göstəricinin dəyərinin düzgünlüyünü yoxlamalı olardıq, bu arzuolunmazdır, çünki bir gün biz bunu etməyi unuda bilərik, nəticədə proqram çökəcək. . Müvafiq əmrlər təyin olunmayan digər isti düymələr üçün eyni stub obyektlərindən istifadə etmək tövsiyə olunur.

Yeri gəlmişkən, klaviatura işləyicisi kodu dəyişdirilə bilər ki, o, təkcə son əməliyyatı deyil, həm də yerinə yetirilən əmrlərin bütün zəncirlərini ləğv etməyi dəstəkləyir. Bunu etmək üçün son əmrə sadə göstərici əvəzinə yığından istifadə etməlisiniz. İstənilən isti düyməni emal edərkən yığına müvafiq əmrə göstərici əlavə olunacaq. Beləliklə, biz ctrl-z istifadə edərək hər şeyi bir-bir ləğv etməyə imkan verən əmr çağırışlarının tam tarixini əldə edəcəyik.


Makrolar

Makrolar bəşəriyyətin ən böyük ixtiralarından biridir və onlara tonlarla vaxta qənaət etməyə kömək edir. Nümunəmiz sizə bir neçə əlavə kod xətti ilə makro əmrləri həyata keçirməyə imkan verir. Əvvəlcə əməliyyatların qrup icrasının məntiqinə cavabdeh olan sinfi müəyyən edək.

Makro komanda sinfi MacroCommand: ümumi Əmr ( Əmr *əmrlər; int comCount; ictimai: MacroCommand(Command *comArray, int elemCount) ( əmrlər = comArray; comCount = elemCount; ) void execute() ( (int i = 0; i üçün)< comCount; i++) { commands[i]->icra etmək(); ) ) void undo() ( for (int i = 0; i).< comCount; i++) { commands[i]->geri al (); )))

Gördüyünüz kimi, MacroCommand sinfi Command-ın davamçısıdır və eyni icra və geri qaytarma üsullarını ləğv edir. İnterfeysdə o, adi komandadan yalnız konstruktorunda fərqlənir. Bu sinif icra moduluna göstəricini qəbul etmir, sadə əmrlər üçün göstəricilər massivini qəbul edir. execute() kodu sadəcə massivin elementlərindən keçir və hər birini çağırır. undo() eyni şəkildə davranır. Klaviatura işləyicisi komanda obyektinə daxil olarkən onun makro və ya adi tək əməliyyat olması barədə heç bir fikri yoxdur - əsas odur ki, onların hamısı execute() və geri qaytarma() funksiyalarını təmin edir.

"Komanda" modelinin qabaqcıl xüsusiyyətləri

Nümunəmiz yalnız klaviatura qısa yollarını emal etmək üçün istifadə edilə bilməz. Sorğu növbələrini təşkil etmək üçün istifadə edilə bilər. Tutaq ki, bəzi tapşırıqları yerinə yetirmək üçün lazım olan bir iplik hovuzumuz var. Bütün tapşırıqlar artıq tanış olan Komanda interfeysini həyata keçirən obyektlərdir. Əmrlər növbə ilə düzülür və bu sıralara iplər vasitəsilə daxil olur. Onlar bu növbədən əmrlər alır və execute() metodlarını işlədirlər. Execute() çağırışını dəstəklədiyi müddətcə mövzular bu obyektlərin nə etdiyinə əhəmiyyət vermir. Əmrləri sabit diskinizdə saxlamaq və oradan bərpa etmək olar. Bunu etmək üçün onların əsas interfeysini bir qədər genişləndirməlisiniz.

Sinif saxlama və yükləmə dəstəyi ilə əmr Əmr ( ümumi: void execute() = 0; void geri qaytarma() = 0; void load() = 0; void store() = 0; )

load() metodu əmri jurnalda saxlamaq üçün, store() isə onu oradan bərpa etmək üçündür. Bu metodların kodu, əgər varsa, proqramlaşdırma dilinin seriallaşdırma mexanizmlərindən istifadə edə bilər. Bu funksionallıq üzərində hər bir hərəkət yerinə yetirildikdən sonra saxlanıla bilməyən böyük həcmli məlumatlarla işləmək üçün lazımdır. Proqram uğursuz olarsa, biz saxlanılan əmrləri yükləyə və bu məlumatları yeniləmək üçün onları ardıcıl olaraq verilənlərin mövcud nüsxəsinə tətbiq edə biləcəyik.

Nəticə

"Əmr" nümunəsindən istifadə edərək, biz müxtəlif icraçı modulları müştəridən - klaviatura işləyicisindən tamamilə ayıra bildik. Gələcəkdə proqramda yeni modullar görünsə, biz asanlıqla müvafiq əmrləri əlavə edə və onlara isti düymələr təyin edə bilərik. Bu sadə, zərif və təsirli bir həll olacaq.