Görünüm penceresi içi kullanıcı arayüzü
Rhino 9’un görünüm penceresi arayüz SDK’sı, kontrolleri ve tutamaçları modelin yanında göstermeye yarar. Kullanıcıyı ayrı bir panele göndermek yerine ilgili geometri üzerinde etkileşim kurulabilir. API hem RhinoCommon hem C/C++ SDK üzerinden kullanılabilir.
Yön, döndürme ve metin tutamaçları
Yön tutamaçları çizgi boyunca mesafe, yükseklik veya ofset ayarlamak için kullanılır. Döndürme tutamaçları bir düzlem ve yarıçapla oluşturulur; OnRotationDrag işaretli açıyı radyan olarak alır. Metin noktaları sürüklenmez ama tıklanabilir işaretçi olarak kullanılabilir.
Denetimler, klavye odağı ve ızgara düzeni
Kaydırıcılar, onay kutuları, radyo düğmeleri, metin kutuları ve etiketler aynı denetim altyapısını kullanır. UserInterfaceGrid alt denetimleri satır ve sütunlara yerleştirir. Metin kutuları klavye odağını alabilir; Enter ile onaylama ve Escape ile iptal olayları ayrı işlenir.
Rhino içindeki kullanım örnekleri
ArrayCrvAdvanced eğri üzerinde tutamaçlar, Patch süreklilik rozetleri, GlobalEdgeContinuity numaralı kenar işaretleri kullanır. ScaleEach ve RotateEach kaydırıcıları, Markup’ın yüzen arayüzü ve Grasshopper görünüm penceresi araçları da aynı altyapıya örnektir.
Dünya uzayı ve ekran uzayı
Dünya uzayındaki nesneler modelde bir 3B noktaya bağlıdır; kaydırma ve yakınlaştırmayla birlikte hareket eder. Tutamaçlar eğri veya çember gibi geometrilere kısıtlanabilir ve nesne yakalamalarını kullanabilir.
Ekran uzayındaki kontrollerin boyutu yakınlaştırmadan bağımsızdır. Bir 3B takip noktası verilirse modelle birlikte ekran üzerinde hareket ederken ekrana hizalı kalırlar. Bu ayrım, kontrolün bir geometrik konumu mu yoksa bir arayüz işlemini mi temsil ettiğine göre seçilir.
Belgeye ekleme ve yaşam süresi
Arayüz nesneleri bir grup kimliğiyle belgeye eklenir ve aynı kimlikle kaldırılır. Komut sona erdiğinde otomatik silinmezler; sahipleri komut değil belgedir. Eklenti kapanışı, belge kapanışı ve tekrar çalıştırma durumlarında temizleme sorumluluğu geliştiricidedir.
Ekleme, kaldırma veya özellik değiştirme işlemleri kendiliğinden yeniden çizim oluşturmaz. RhinoCommon’da doc.Views.Redraw(), C++ tarafında CRhinoDoc::Redraw() çağrılmalıdır.
Sürüklenebilir tutamaçlar
Tutamaç sınıfından türeyip OnDrag uygulanarak kullanıcının taşıdığı konum alınır. Taban sınıfın OnDrag davranışı tutamacı gerçekten hareket ettirir; çağrılmazsa konumu geliştirici güncellemelidir.
Şekil, yarıçap, dolgu ve çizgi renkleri özelleştirilebilir. Constrain ile eğri, çember, doğru veya yay boyunca hareket sınırlandırılabilir.
Ekran kontrolleri ve DPI
Konum ve boyutlar mantıksal piksel cinsindendir; DPI ölçeklemesini Rhino yapar. Ek bir ölçek çarpanı uygulamak yanlış boyuta yol açabilir. SVG simgeler farklı ekran yoğunluklarında net sonuç için önerilir.
Boyut sıfır bırakıldığında kontrol kendi içeriğinden boyut hesaplayabilir. Sabit bir yer kaplaması gerektiğinde açık boyut verilmelidir.
Fare olaylarından belgeyi değiştirme
Fare olayları komut bağlamında çalışmaz. OnDrag veya Click içinde doğrudan nesne eklemek ya da silmek geri alma kayıtlarını bozabilir. Hem RhinoCommon hem C++ tarafında RunCommand(mouse) üzerinden OnRunCommand bağlamında belge işlemi yapılabilir. Enter ile metin onaylama gibi fare durumu olmayan değişiklikler RhinoDocUndoRecord içine alınmalıdır; C++ karşılıkları BeginUndoRecordEx ve EndUndoRecord yöntemleridir.
Fare işleyicileri arayüz iş parçacığında çalışır ve uzun sürerse görünüm penceresini bloke eder. Ağır hesaplama ayrı yürütülmeli; sonuç uygun biçimde arayüz iş parçacığına taşınmalıdır.
Kaynaklar
Bu sayfadaki teknik ve hukuki bilgiler aşağıdaki resmî kaynaklara dayanır.