Bileşenleri Grasshopper 2’ye taşıma
Grasshopper 1 bileşenlerini GH2’ye taşımak yalnız sınıf adlarını değiştirmek değildir. Paket biçimi, değişmez veri yapıları, çok iş parçacıklı çözüm, meta veri ve tür dönüşümleri birlikte ele alınmalıdır. Bu rehber C# ile GH1 bileşeni geliştirme deneyimi olanlara yöneliktir.
GHA’dan RHP’ye ve eklenti kimliği
GH2 bileşen kitaplıkları .rhp olarak dağıtılır ve Grasshopper2.Framework.Plugin sınıfından türeyen bir sınıf içerir. Ad, sürüm ve yazarlık gibi bilgiler assembly özniteliklerinden okunabilir. Aynı dosya hem Rhino hem Grasshopper eklentisi olabilir.
Dağıtım PackageManager üzerinden yapılır. Geliştirme dosyaları GH2Plugins penceresinden kaydedilebilir; bu pencere yüklenen, başarısız olan veya atlanan eklentileri incelemek için de kullanılır.
Bileşen kimliği ve parametreler
GH_Component yerine Component kullanılır. ComponentGuid özelliğinin yerini IoId özniteliği alır; ad, açıklama ve tuvaldeki konum Nomen içinde toplanır. Kalıcı veriyi geri yüklemek için IReader alan ek kurucu gerekir.
RegisterInputParams ve RegisterOutputParams yerine AddInputs ve AddOutputs kullanılır. Varsayılan değerler Set ile atanır. Optional yerine MustExist, MayBeNull ve MayBeMissing durumları bulunan Requirement kullanılır; eksik ve null girdiler aynı şey değildir.
Yeni veri türleri
Field uzamsal konuma göre değer üretir; Angle açı birimini açıkça temsil eder. Numeric, sayısal türler için filtrelenebilir bir parametredir. Function, Gradient, RandomEngine, Region ve Locus gibi türler eski sayısal girdilerin amacını daha doğru ifade edebilir.
Eğri üzerindeki konumu çıplak sayı, yüzey üzerindeki konumu iki bağımsız sayı olarak taşımak yerine ilgili Locus türlerini kullanmak düşünülmelidir. Dönüşüm matrisleriyle çalışırken quaternion olarak kodlanmış değerler de dikkate alınır.
Çok iş parçacığı ve iptal
SolveInstance yerine Process kullanılır ve yinelemeler varsayılan olarak birden fazla iş parçacığında çalışır. Sınıf alanlarında paylaşılan değişken durum tutmak yarış koşullarına yol açabilir. Kod eşzamanlı çalışmaya uygun değilse bileşenin Threading ayarı SingleThreaded olarak ele alınmalıdır.
Uzun işlemlerde access.Solution.Token üzerinden iptal istekleri izlenmelidir. Expire nesneyi geçersiz kılar; yeni çözümü başlatmak ayrı bir işlemdir. Hızlı tekrarlanan arayüz olaylarında DelayedExpire kullanılması gereksiz çözüm başlatmalarını azaltır.
Twig, Tree ve meta veriyı koruma
GH1’deki dal kavramı GH2’de Twig olarak adlandırılır. Tree ve Twig değişmez yapılardır; değerler önce değiştirilebilir koleksiyonlarda biriktirilip sonuç yapısı oluşturulur. Meta veri, değerle birlikte taşınır.
Değerler sıralanırken, süzülürken veya başka dallara aktarılırken meta verinın doğru değerle eşleşmesi korunmalıdır. GetPear ve SetPear değer ile meta veri çiftlerini işler; yalnız GetItem ve SetItem kullanmak her senaryoda yeterli değildir.
Tür yardımcıları ve dönüşüm
IGH_Goo sarmalayıcılarının yerine değerler kendi türleriyle saklanır. TypeAssistantServer üzerinden bulunan yardımcılar, türün çizim, kopyalama, uzunluk veya bake gibi yeteneklerini tanımlar. Zupports özellikleri, ilgili işlemin desteklenip desteklenmediğini bildirir.
Eğri ve yüzey yardımcılarıyla çalışmak, başka eklentilerin eklediği türlerle de uyumu kolaylaştırır. Dönüşümler ConversionServer içinde kaydedilir; Merit dönüşümün ne kadar uygun olduğunu belirtir. CurveBroker ve SurfaceBroker, doğrudan Rhino geometrisi gerektiğinde dönüşümü kolaylaştırır.
Arayüz, önizleme ve kaydetme
Önizleme geometrisi PopulateDisplay ile merkezi olarak önbelleğe alınır. Girdi panelleri, eski bağlam menülerinin yerini alır. Eto tabanlı özel arayüz hem Windows hem Mac üzerinde çalışmalıdır; vektör simgeler önerilir.
Write/Read yaklaşımı Store(IWriter) ve IReader alan kurucuya dönüşür. Basit ayarlar için CustomValues değerlendirilebilir. Taşıma sonrası testler; eksik girdiyi, meta veri sırasını, çözüm iptalini ve dosyayı yeniden açmayı da kapsamalıdır.
Kaynaklar
Bu sayfadaki teknik ve hukuki bilgiler aşağıdaki resmî kaynaklara dayanır.