Qısaca
- Sketchup.active_model açıq modelə daxil olmaq üçün başlanğıc nöqtəsidir.
- Model.entities əsas model geometriyasını, active_entities isə redaktə olunan qrupun və ya komponentin məzmununu qaytarır.
- ComponentDefinition təkrar istifadə edilə bilən komponentin tərifini, ComponentInstance isə modeldə yerləşdirilmiş nümunəsini təmsil edir.
- Entities#each ilə kolleksiyaları gəzmək indekslə müraciətlə müqayisədə, ümumiyyətlə, daha səmərəli üsuldur.
SketchUp Ruby API açıq modelin məzmununu oxumaq və dəyişdirmək üçün model, geometriya və komponent siniflərindən istifadə edir. SketchUp-ın rəsmi Ruby API sənədlərindəki bu bələdçi xüsusilə model məlumatlarına daxil olmaq, komponent nümunələrini idarə etmək və geometriya kolleksiyalarını emal etmək iş axınını əhatə edir. Sənədlərdə əsas siniflər üçün SketchUp 6.0 versiya məlumatı göstərilsə də, bəzi metodların daha yeni versiya tələbləri var; buna görə istifadə ediləcək metodun ayrıca versiya qeydləri də yoxlanmalıdır.
1. Model məzmununa düzgün kontekstdən daxil olun
Avtomatlaşdırma iş axını Sketchup.active_model vasitəsilə əldə edilən açıq model obyekti ilə başlayır. Model obyekti vasitəsilə kök geometriyasına, komponent təriflərinə, materiallara və seçim kolleksiyası kimi bölmələrə daxil olmaq mümkündür. Beləliklə, üzərində işlənəcək məlumatın modelin hansı hissəsində olduğu aydınlaşır.
model = Sketchup.active_model
entities = model.entities
definitions = model.definitions
materials = model.materials
selection = model.selectionmodel.entities modelin kök səviyyəsindəki qrafik elementlərini əhatə edir. İstifadəçi qrupu və ya komponenti redaktə edirsə, model.active_entities həmin açıq redaktə kontekstindəki elementləri qaytarır. Açıq qrup və ya komponent yoxdursa, bu kolleksiya entities ilə eyni olur. Bu fərq əmrin yanlış kontekstdəki geometriyanı dəyişməsinin qarşısını almağa kömək edir.
Məsələn, seçilmiş elementlər üzərində işləyən alət üçün seçim kolleksiyası, cari redaktə kontekstində işləyən alət üçün isə aktiv elementlər kolleksiyası başlanğıc nöqtəsi ola bilər. Əməliyyatın əhatə dairəsini müəyyən etmədən birbaşa modelin bütün məzmununu dəyişdirmək istənməyən model dəyişikliklərinə səbəb ola bilər.
2. Komponent tərifini nümunədən ayırın
SketchUp komponentlərində tərif və nümunə eyni şey deyil. ComponentDefinition komponentdəki elementləri müəyyən edir; ComponentInstance isə həmin tərifin modeldəki yerləşməsini və çevrilməsini təmsil edir. Eyni tərifdən bir neçə nümunə yaratmaq mümkündür. Tərifdə edilən dəyişikliklər ondan istifadə edən nümunələrdə də əks olunur.
Nümunənin hansı tərifə bağlı olduğunu definition metodu ilə öyrənə bilərsiniz. Nümunəni başqa tərifə keçirmək də mümkündür; sənədlərə əsasən, bu dəyişiklik zamanı nümunənin modeldəki yerləşmə çevrilməsi qorunur.
instance = model.entities[0]
definition = instance.definition
puts definition.nameBu nümunədə ilk elementin komponent nümunəsi olduğu fərz edilir. Real plaqində kolleksiyadakı hər elementin növünü yoxlamaq və boş nəticə ehtimalını nəzərə almaq lazımdır. Komponent tərifi vasitəsilə count_instances və count_used_instances metodları ilə istifadə sayını hesablaya bilərsiniz: birincisi fərqli nümunələri, ikincisi isə modeldə bu tərifdən istifadə edən ümumi nümunələrin sayını qaytarır.
Tək bir nümunənin ayrıca redaktə edilməsi lazım olduqda make_unique istifadə edilə bilər. Bu metod həmin nümunə üçün başqa nümunələrlə paylaşılmayan tərif yaradır. Buna görə toplu redaktəyə başlamazdan əvvəl dəyişikliyin ümumi tərifə, yoxsa yalnız seçilmiş nümunəyə tətbiq ediləcəyi müəyyənləşdirilməlidir.
3. Geometriya kolleksiyalarını səmərəli emal edin
Entities modeldə və ya komponent tərifində olan elementlərin kolleksiyasıdır. Sənədlərdə elementləri bir-bir gəzmək üçün indekslə müraciət əvəzinə, ümumiyyətlə, each metodundan istifadənin daha səmərəli olduğu bildirilir. Bu yanaşma kolleksiya üzərində axtarış aparan skriptlərdə kodun daha oxunaqlı olmasına da kömək edir.
model.entities.each do |entity|
puts entity.typename
endMüəyyən indeksə müraciət etmək lazım gəldikdə entities[index] istifadə edilə bilər; lakin etibarlı indeks sıfır ilə kolleksiyanın uzunluğunun bir əskik qiyməti arasındadır və element tapılmadıqda nil qaytara bilər. Buna görə istifadəçinin seçdiyi indeksdən asılı əməliyyatlarda bu nəticəni yoxlamaq vacibdir.
Tək xətt yaratmaq üçün add_line, dairə üçün add_circle, səth üçün isə add_face kimi metodlar var. Çoxsaylı geometriya elementlərini performansı nəzərə alaraq yaratmaq üçün Entities#build metodu EntitiesBuilder yaradır. Sənədlərdə bu metod toplu geometriya yaratmaq üçün nəzərdə tutulub; lakin konkret sürət artımı və ya aparat tələbi göstərilmir. Buna görə real layihədəki fayda istifadə olunan geometriya və plaqin iş axını üzrə ölçülməlidir.
Əməliyyat geri qaytarıla bilən addım kimi qeydə alınacaqsa, model səviyyəsindəki start_operation və commit_operation metodlarından istifadə etmək olar. Xəta baş verdikdə rəsmi sənədlərdə başladılmış əməliyyatı ləğv etmək üçün abort_operation metodu göstərilir. Sənəddə həmçinin şəffaf əməliyyatın ləğv edilməməli olduğu barədə xəbərdarlıq var.
model.start_operation("Model düzenlemesi")
begin
# Geometri işlemlerini burada yürütün.
model.commit_operation
rescue
model.abort_operation
raise
end4. Memarlıq və vizuallaşdırma iş axınında istifadə
Memarlıq modelləşdirməsi və interyer layihələrində bu API təkrarlanan elementləri komponent kimi təşkil etmək, model məzmununu yoxlamaq və təkrarlanan geometriya əməliyyatlarını skriptlərlə icra etmək üçün istifadə oluna bilər. Məsələn, eyni mebel tərifinin fərqli yerləşmələrini idarə etmək üçün təriflə nümunə arasındakı fərqi düzgün anlamaq lazımdır. Elementi müstəqil etmək lazım gəldikdə make_unique seçimi, ümumi yeniləmə tələb olunursa paylaşılan tərif yanaşması nəzərdən keçirilməlidir.
Ofis avtomatlaşdırma skripti hazırlayarkən əvvəlcə əhatə dairəsi müəyyənləşdirilməlidir: kök model geometriyası, açıq qrupun məzmunu, yoxsa seçilmiş elementlər emal olunacaq? Sonra komponent tərifi ilə nümunə arasındakı əlaqə nəzərə alınmalıdır. Plaqinin SketchUp versiyası ilə uyğunluğunu yoxlamaq üçün istifadə edilən metodların rəsmi sənədlərdəki versiya məlumatları nəzərdən keçirilməlidir. Sənədlərdə aparatla bağlı konkret tələb göstərilmədiyindən, xüsusi aparat tövsiyəsi vermək mümkün deyil; çoxlu geometriya ilə işləyərkən performansı hədəf modeldə sınaqdan keçirmək daha məqsədəuyğundur.
Tez-tez edilən səhvlər
entitiesvəactive_entitieskolleksiyalarından eyni əhatə dairəsinə malikmiş kimi istifadə etmək.Ümumi tərifdə edilən dəyişikliyin komponent nümunələrində də əks olunacağını nəzərə almamaq.
İndekslə əldə edilən elementin tapılmaya biləcəyini və nəticənin
nilola biləcəyini gözdən qaçırmaq.Əməliyyat başladıqdan sonra uğurlu iş axınında
commit_operation, xəta axınında isə uyğun bağlanma addımını idarə etməmək.
Bu bələdçi SketchUp Ruby API-də sənədləşdirilmiş əsas model, komponent və geometriya siniflərinə əsaslanır. İnterfeys menyularının yolları, lisenziya şərtləri və ya aparat tələbləri bu sənəd parçalarında açıqlanmadığından, burada fərziyyə irəli sürülmür.
Mənbələr
3 mənbəMənbə mətnləri yenidən dərc edilmir; qısa sitatlar işarələnir, qalanı bizim xülasə və şərhimizdir.
Türkiyədə memarlıq və vizuallaşdırma ofisləri üçün Ruby API-nin praktiki dəyəri təkrarlanan model işlərini öz istehsal qaydalarına uyğun avtomatlaşdıra bilməsindədir. Xüsusilə komponent tərifi ilə nümunə arasındakı fərqi düzgün anlamaq dəyişikliyin bütün yerləşmələrə, yoxsa yalnız bir nümunəyə tətbiq olunacağını idarə etməyə imkan verir.
Bununla belə, avtomatlaşdırmanın qazancı istifadə olunan skriptin əhatə dairəsindən və layihə modelindən asılıdır; sənədlərdə konkret sürət artımı və ya aparat həddi göstərilmir. Plaqin hazırlayan komandalar metodların versiya məlumatlarını yoxlamalı, əməliyyat axınında xəta idarəçiliyini nəzərdən qaçırmamalı və performansı öz fayllarında sınaqdan keçirməlidirlər.
Tez-tez verilən suallar
SketchUp Ruby API-də açıq modelə necə daxil olmaq olar?
`Sketchup.active_model` açıq model obyektini qaytarır. Bu obyekt vasitəsilə model geometriyasını, komponent təriflərini, materialları və seçim kolleksiyasını əldə etmək mümkündür.
`entities` ilə `active_entities` arasındakı fərq nədir?
`entities` modelin kök geometriyasını əhatə edir. Açıq qrup və ya komponent redaktə edilirsə, `active_entities` həmin kontekstdəki elementləri qaytarır; belə bir kontekst yoxdursa, hər ikisi eyni olur.
SketchUp komponentində `make_unique` nə işə yarayır?
Bu metod seçilmiş komponent nümunəsi üçün başqa nümunələrlə paylaşılmayan tərif yaradır. Beləliklə, həmin tərifi müstəqil şəkildə redaktə etmək mümkün olur.



