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.
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. C++ rehberi RunCommand(mouse) üzerinden OnRunCommand bağlamında belge işlemi yapılmasını gösterir.
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.