Qısaca
- Revit-də kateqoriya, Family, FamilySymbol və FamilyInstance fərqli təsnifat səviyyələrini ifadə edir.
- API vasitəsilə otaq müəyyən mərtəbə və mövqedə yaradıla bilər.
- Otaq sərhədləri qapalı sahədən və ətraf elementlərin Room Bounding vəziyyətindən asılıdır.
- Autodesk University-nin başlanğıc təlimində RevitPythonShell, Revit Lookup və pyRevit alətləri nəzərdən keçirilir.
Bu bələdçidə nə öyrənəcəksiniz?
Bu bələdçi Revit API-də kateqoriya və otaq anlayışlarını başa düşmək, Autodesk-in tərtibatçı sənədlərindəki nümunələri düzgün kontekstdə dəyərləndirmək istəyənlər üçün hazırlanıb. Əvvəlcə Revit elementinin kateqoriya, ailə, növ və instans kimi necə təsnif edildiyinə baxacağıq. Sonra API vasitəsilə otaq yaratmağın iki yolunu və otaq sərhədlərini oxuyarkən yoxlanmalı şərtləri izah edəcəyik.
Məqsəd hər layihədə birbaşa işləyəcək hazır plagin təqdim etmək deyil. Kod nümunələri API-nin hansı obyektlər və layihə şərtləri ilə işlədiyini göstərir. Mənbələrdəki nümunələr C# dilindədir; buna görə onları Python kodu kimi Python alətinə yapışdırmaq düzgün deyil.
Tələblər və əhatə dairəsi
Autodesk University-nin başlanğıc təlimində Revit, RevitPythonShell, Revit Lookup və pyRevit alətlərindən istifadə olunur. Təlim üçün əsas Revit bilikləri və başlanğıc səviyyəsində Python biliyinin tələb olunduğu qeyd edilir. Bu, aşağıdakı izahlarda istifadə olunan API nümunələrinin də Python dilində olması demək deyil: Autodesk-in otaq və kateqoriya sənədlərindəki kod parçaları C# dilində təqdim edilib.
İstinad edilən tərtibatçı sənədlərindən biri Revit 2018, digəri isə Revit 2024 sənədləşdirmə səhifəsidir. Mənbələrdə bu nümunələrin müxtəlif Revit versiyaları ilə uyğunluğu izah olunmur. Buna görə nümunəni real layihədə istifadə etməzdən əvvəl hədəf versiyanın API sənədlərini yoxlayın. Hesab tələbləri, alətlərin cari versiyaları və lisenziya şərtləri təqdim edilən mənbələrdə açıqlanmayıb.
1. Kateqoriya və ailə strukturunu fərqləndirin
Kateqoriya elementin ümumilikdə hansı növə aid olduğunu və Revit-də necə işlənəcəyini müəyyən edən təsnifatdır. Divarlar, qapılar və otaqlar müxtəlif kateqoriyalara nümunədir. Kateqoriyalar cədvəllərin hazırlanması, parametrlərin redaktəsi, görünürlük və qrafik görünüşün idarə olunması kimi funksiyalarla əlaqəlidir.
Ailə strukturu daha ətraflıdır. Family bütün ailəni, FamilySymbol həmin ailənin müəyyən növünü, FamilyInstance isə layihəyə yerləşdirilmiş tək bir instansı təmsil edir. Məsələn, qapı ailəsində müxtəlif növlər ola bilər; layihədə istifadə olunan hər qapı yerləşdirməsi isə ayrıca instans sayılır. API-də bu fərqi nəzərə almaq elementin ümumi kateqoriyasını konkret növü ilə qarışdırmamaq üçün vacibdir.
Autodesk-in kateqoriya nümunəsi açıq sənəddəki kateqoriya kolleksiyasına daxil olmağı və daxili kateqoriyalardan birini seçməyi göstərir. Sənəddə kateqoriya adlarının Revit interfeysinin dilindən asılı olaraq dəyişə biləcəyi barədə xəbərdarlıq da var. Dil fərqlərindən yayınmaq üçün ad mətninə əsaslanmaq əvəzinə BuiltInCategory kimi daxili kateqoriya təyinlərindən istifadə etməyi nəzərdən keçirin.
2. Otaq yaratma üsulunu seçin
API sənədlərində otaq yaratmaq üçün iki ayrı ssenari təsvir olunur. Birinci ssenaridə otaq mərtəbə və mövqe məlumatı ilə yaradılır. Nümunədə mövqe UV tipli dəyərlə ifadə olunur və yaradılma nəticəsinin etibarlı olub-olmadığı yoxlanılır. Burada əsas məqam budur: otaq yaratma çağırışı yalnız otaq obyektindən deyil, onun hansı mərtəbədə və harada yerləşəcəyinə dair məlumatdan da asılıdır.
İkinci ssenaridə otaq əvvəlcə layihə mərhələsi ilə əlaqələndirilərək otaq cədvəlində yaradılır, daha sonra plan dövrəsinə əlavə olunur. Burada əsas şərt plana əlavə ediləcək girişin yalnız otaq cədvəlində olması və hələ heç bir plan görünüşündə yerləşdirilməməsidir. Plan dövrəsi müvafiq mərtəbənin plan topologiyası vasitəsilə tapılır. Yerləşdirmə uğurlu olduqda həmin ad və nömrəyə malik model otağı plan dövrəsinin yerləşdiyi görünüşdə yaranır.
Bu iki yanaşmanı tətbiq etməzdən əvvəl hansı nəticəyə ehtiyacınız olduğunu müəyyənləşdirin: müəyyən nöqtədə otaq yaratmaq, yoxsa cədvəldə gözləyən otağı plan dövrəsinə yerləşdirmək? İkinci axında otağın cədvəldə olması şərtini nəzərə almamaq əməliyyatın gözlənilən girişlərlə işləməməsinə səbəb ola bilər.
3. Otaq sərhədlərini və yenilənmələri araşdırın
Otaq sərhədləri qapalı sahə yaradan model elementlərindən asılıdır. Autodesk sənədlərində divar, model xətti, sütun və dam sərhədlə əlaqəli elementlərə nümunə kimi göstərilir. Sərhəd seqmentlərini oxumaq üçün SpatialElement.GetBoundarySegments() metodundan istifadə olunur. Qaytarılan məlumat bir və ya bir neçə sahəni və hər sahənin seqmentlərini iç-içə siyahılar şəklində ehtiva edə bilər.
Hər vəziyyətdə sərhəd məlumatı qaytarılmaya bilər. Otaq qapalı sahədə deyilsə və ya yalnız otaq cədvəlində mövcuddursa, metod null qaytara bilər. Buna görə nəticə alınmadıqda yalnız API çağırışını deyil, modelin qapalı otaq yaradıb-yaratmadığını və otağın plan görünüşündə olub-olmadığını da yoxlayın.
Divar, sütun və dam kimi elementlərin otaq sərhədinə daxil olmasında Room Bounding ayarı vacibdir. Otaq ayırıcı xətlər də sərhəd yarada bilər. API vasitəsilə divar kimi element əlavə edildikdə otağın sərhədi dəyişə biləcəyi üçün əməliyyatdan əvvəl alınmış sərhəd məlumatını dəyişiklikdən sonra aktual hesab etməyin. Autodesk nümunəsində element yaratma əməliyyatı transaction daxilində tamamlandıqdan sonra sərhədlərin yenidən oxunması göstərilir.
Otağın yerini dəyişmək üçün onu əvvəlcə mövcud mövqeyindən çıxarmaq da mümkündür. Sənəddə Room.Unplace() metodu ilə otağın yerləşdiyi mövqedən çıxarıla biləcəyi, lakin layihədə istifadə üçün mövcud qalacağı izah olunur. Bu, obyekti layihədən silməklə yerləşimini dəyişmək arasındakı fərqi anlamağı tələb edir.
4. Memarlıq və vizuallaşdırma iş axınına təsiri
Otaq sərhədlərini və kateqoriya əlaqələrini anlamaq otaq məlumatları ilə işləyən, model elementlərini təsnif edən və ya təkrarlanan əməliyyatları avtomatlaşdırmağı nəzərdən keçirən memarlıq və interyer dizaynı komandalarına kömək edə bilər. Otaq sərhədləri modeldəki ətraf elementlərdən və onların ayarlarından asılı olduğuna görə avtomatlaşdırmaya başlamazdan əvvəl modeldə bu əlaqələrin düzgün qurulduğunu yoxlamaq lazımdır.
Bu mənbələr birbaşa render və ya vizuallaşdırma ayarlarını təsvir etmir. Bununla belə, otaq və kateqoriya məlumatları ilə işləyən BIM proseslərində modelin ardıcıllığı vacibdir. Tətbiqə başlamazdan əvvəl istifadə olunan Revit versiyasını, otağın yerləşmə vəziyyətini, müvafiq Room Bounding ayarlarını və layihə mərhələsini yoxlayın. Tələbələr üçün kiçik sınaq modeli yaratmaq sərhəd məlumatının divar və ya başqa ətraf element dəyişdikdə necə təsirləndiyini müşahidə etmək üçün uyğun başlanğıcdır.
Tez-tez edilən səhvlər
Kateqoriya adlarının bütün Revit dillərində eyni olacağını güman etmək. Autodesk dil fərqlərindən yayınmaq üçün daxili kateqoriya təyinlərindən istifadə etməyi tövsiyə edir.
Otaq qapalı sahədə olmadığı halda sərhəd seqmentləri gözləmək. Sənədə görə metod bu halda null qaytara bilər.
Plan dövrəsinə əlavə ediləcək otağı əvvəlcədən plan görünüşündə yerləşdirmək. Giriş yalnız otaq cədvəlində olmalıdır.
Ətraf elementlərin Room Bounding vəziyyətini nəzərdən qaçırmaq. Bu ayar elementin otaq sərhədinə daxil olub-olmamasına təsir edir.
Yeni model elementi yaratdıqdan sonra köhnə sərhəd məlumatından istifadə etməyə davam etmək. Dəyişiklik tamamlandıqdan sonra sərhəd məlumatını yenidən alın.
C# nümunələrini Python kodu kimi qəbul etmək. Mənbələrdə Python alətlərindən bəhs edilsə də, otaq və kateqoriya API nümunələri C# dilindədir.
Növbəti addımlar
Əvvəlcə Autodesk-in kateqoriya izahlarını nəzərdən keçirin və mövcud layihədə kateqoriya, ailə, növ və instans fərqini müşahidə edin. Sonra sınaq sənədində otaq yaratma ssenarilərini müqayisə edin: mövqe məlumatı ilə yaratmaq və cədvəldən plan dövrəsinə yerləşdirmək. Hər addımda otağın hansı görünüşdə olduğunu qeyd edin.
Sonda qapalı otaq sahəsinin ətrafındakı elementləri dəyişdirərək sərhəd məlumatını yenidən yoxlayın. Bu iş API-nin qaytardığı dəyəri modelin vəziyyətindən ayrı düşünməməyə kömək edəcək. Daha geniş avtomatlaşdırmaya keçərkən Autodesk University-nin başlanğıc təlimində nəzərdən keçirilən element filtrlərini, transaction-ları və istifadəçi interfeysi mövzularını da qiymətləndirin.
Mənbə və lisenziya
Bələdçi Autodesk Revit API tərtibatçı sənədlərindəki otaq mövzularından (K1), kateqoriya və ailə təsnifatlarından (K2), həmçinin Autodesk University-nin Revit API-yə giriş təlimindən (K4) istifadə edilərək öz ifadələrimizlə hazırlanıb. Mənbələrdə lisenziya=azad kimi qeyd olunub; təqdim edilən mətnlərdə konkret lisenziya adı göstərilmədiyi üçün burada ayrıca lisenziya növü aid edilməyib.
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.
Kateqoriyalar və otaq sərhədləri Revit modelindəki məlumatları avtomatlaşdırmaya bağlamaq istəyən ofislər üçün faydalı başlanğıc nöqtəsidir. Ən praktik qazanc API çağırışının nəticəsini yalnız kodla deyil, otağın cədvəldə və ya planda olma vəziyyəti, eləcə də ətraf elementlərlə birlikdə dəyərləndirməyi öyrənməkdir.
Türkiyədəki ofislər və tələbələr bu yanaşmanı kiçik sınaq layihəsində yoxlayıb real modelə tətbiq etməlidirlər. Mənbələrdə alətlərin cari uyğunluğu, lisenziya qiyməti və ya avadanlıq tələbləri göstərilmədiyindən investisiya qərarından əvvəl bunları ayrıca dəqiqləşdirmək lazımdır. Bu sənədlərdən render performansı ilə bağlı iddia da çıxarmaq olmaz.
Tez-tez verilən suallar
Revit API ilə otaq sərhədləri necə oxunur?
Autodesk sənədlərində sərhəd seqmentlərinin SpatialElement.GetBoundarySegments() metodu ilə alına biləcəyi bildirilir. Otaq qapalı sahədə deyilsə və ya yalnız cədvəldə mövcuddursa, metod null qaytara bilər.
Revit API-də otağı cədvəldən plana necə əlavə etmək olar?
Sənəddə otaq əvvəlcə layihə mərhələsi ilə əlaqələndirilərək otaq cədvəlində yaradılır, sonra PlanCircuit vasitəsilə plana yerləşdirilir. Giriş otaq cədvəlində olmalı və heç bir plan görünüşündə yerləşdirilməməlidir.
Revit API-də kateqoriya adları dilə görə dəyişirmi?
Autodesk Category.Name dəyərinin Revit dilindən asılı olaraq dəyişə biləcəyini bildirir. Dil fərqlərindən yayınmaq üçün BuiltInCategory istifadə etmək tövsiyə olunur.



