View Categories

Revit için V-Ray Genel API’si

14 dakika okuma

Genel Bakış #


Hizmet Tanımı (public_api.proto) #


hizmet ApiServer {

  rpc GetProjectName (GetProjectNameRequest) şunu döndürür: (GetProjectNameResponse);

  rpc GetProjectChangedNotificationStream(GetProjectChangedNotificationStreamRequest) returns (stream ProjectChangedNotification);

  rpc GetViews(GetViewsRequest) returns (GetViewsResponse);

  rpc SelectView(SelectViewRequest) returns (SelectViewResponse);

  rpc SetBatchRenderView(SetBatchRenderViewRequest) returns (SetBatchRenderViewResponse);

  rpc GetProperties(GetPropertiesRequest) returns (GetPropertiesResponse);

  rpc GetProperty(GetPropertyRequest) returns (GetPropertyResponse);

  rpc SetProperty(SetPropertyRequest) returns (SetPropertyResponse);

  rpc ExportVRScene(ExportVRSceneRequest) returns (ExportVRSceneResponse);

  rpc GetVRayMaterials(GetVRayMaterialsRequest) returns (GetVRayMaterialsResponse);

  rpc SaveVRayMaterialToFile (SaveVRayMaterialToFileRequest) returns (SaveVRayMaterialToFileResponse);

}

Proje Adını Al #


mesaj GetProjectNameRequest {

google.protobuf.Empty empty = 1;

}

  • GetProjectNameRequest’in hiçbir özelliği yok.

mesaj GetProjectNameResponse {

bool success_status = 1;
string message = 2;
string project_name = 3;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

  • proje_adı: Revit’te şu anda aktif olan projenin adı.

GetProjectChangedNotificationStream #


mesaj GetProjectChangedNotificationStreamRequest {

google.protobuf.Empty empty = 1;

}

  • GetProjectChangedNotificationStreamRequest’in hiçbir özelliği yok.

mesaj ProjeDeğiştirildiBildirimi {

string project_name = 1;

}

  • project_name : Revit’te şu anda aktif olan projenin adını içeren bir metin dizisi.

Görünümleri Al #


mesaj GetViewsRequest {

google.protobuf.Empty empty = 1;

}

  • GetViewsRequest’in hiçbir özelliği yoktur.

mesaj GetViewsReponse {

bool success_status = 1;
string message = 2;
ViewMap view_map = 3;

}

  • success_status : RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

  • haritayı görüntüle:

     Aktif projedeki tüm 3 boyutlu görünümler hakkında bilgi içerir.

mesaj ViewMap {

map<string, View> değerleri = 1;

}

  • Değerler: Tüm görünümleri içeren bir harita  ; burada anahtar, her bir görünümün benzersiz kimliğidir. 

    ve değeri şudur: 

     kendisi.

Mesajı Görüntüle {

string unique_id = 1;
string name = 2;
bool batch_render = 3;

}

  • unique_id : Görünümün benzersiz kimliğini temsil eden GUID biçiminde bir dize.

  • name: Görünümün adını içeren bir metin dizisi, yani kullanıcının Revit’te gördüğü şey.

  • batch_render:  Bu görünümün Toplu İşleme (Batch Render) kapsamında işlenip işlenmeyeceğini belirten bir boolean değer.

SelectView #


mesaj SelectViewRequest {

string unique_id = 1;

}

  • unique_id: Görünümün benzersiz kimliğini temsil eden GUID biçiminde bir dize. Bu, aynı zamanda ile elde edilen dizedir. 

mesaj SelectViewReponse {

bool success_status = 1;
string message = 2;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

SetBatchRenderView #

SetBatchRenderViewRequest #

mesaj SetBatchRenderViewRequest {

string unique_id = 1;
bool batch_render = 2;

}

  • unique_id:  Görünümün benzersiz kimliğini temsil eden GUID biçiminde bir dize. Bu, GetViews RPC’si ile elde edilen dizeyle aynıdır.

  • batch_render:  Görünümün toplu olarak işlenip işlenmeyeceğini belirten bir boolean değer.

SetBatchRenderViewResponse #

mesaj SelectViewReponse {

bool success_status = 1;
string message = 2;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj:  RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

GetProperties #


mesaj GetPropertiesRequest {

google.protobuf.Empty empty = 1;

}

  • GetPropertiesRequest’in hiçbir özelliği yok.

mesaj GetPropertiesResponse {

bool success_status = 1;
string message = 2;
PropertyMap property_map = 3;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

  • özellik haritası: A 

     Aktif projenin tüm özelliklerini içerir.

mesaj Özellik Haritası {

map<string, Property> değerleri = 1;

}

  • Değerler : Tüm özellikleri içeren bir harita  ; burada anahtar, özelliğin benzersiz adıdır ve değer ise özelliğin kendisidir.

mesaj Özelliği {

string unique_name = 1;
string readable_name = 2;
string type = 3;
PropertyCategory category = 4;
PropertyValue value = 5;

}

  • unique_name: Özelliğin benzersiz adını içeren bir dize.

  • readable_name: Özelliğin insan tarafından kolayca okunabilir adını içeren bir dize.

  • type: Özelliğin türünü içeren bir dize, örneğin bool, int, string, vb.

  • Kategori: Mülkün kategorisini içeren bir PropertyCategory, örneğin Kamera, Ortam vb.

  • değer: Mülkün değerini içeren bir PropertyValue nesnesi.

enum PropertyCategory {

Küresel = 0;
Malzeme = 1;
Ortam = 2;
Kamera = 3;
Yerel = 4;
Sürü = 5;
Kanal = 6;
Vekil = 7;
VRayMaterial = 8;

};

  • PropertyCategory, tüm olası özellik kategorilerini içeren bir numaralandırmadır. Şu anda, V-Ray for Revit Genel API’si yalnızca Kamera, Kanal, Ortam ve Yerel kategorilerindeki özellikleri döndürmektedir.

mesaj Özellik Değeri {

değerlerden biri
{

bool bool_value = 1;
int32 int_value = 2;
float float_value = 3;
string string_value = 4;

LightingAnalysisQuantity LightingAnalysisQuantity_value = 5;
LightingAnalysisScale LightingAnalysisScale_value = 6; LightingAnalysisDisplay LightingAnalysisDisplay_value = 7
;
DenoiserMode DenoiserMode_value
= 8; DenoiserEngine DenoiserEngine_value = 9; DenoiserRadiusType DenoiserRadiusType_value
= 10;
VRayRenderEngine VRayRenderEngine_value = 11;
VRayResolutionRatio VRayResolutionRatio_value = 12;
VRayResolutionDPIType VRayResolutionDPIType_value = 13;
VRayResolutionPrinterUnit VRayResolutionPrinterUnit_value = 14;
EnvironmentType EnvironmentType_value = 15;
ScreenPlacementType ScreenPlacementType_value = 16;
BackgroundType BackgroundType_value = 17;
VRaySceneQuality VRaySceneQuality_value = 18;
VRayImageSamplerType VRayImageSamplerType_value = 19;
VRayGIEngine VRayGIEngine_value = 20;
VRayLightEvaluation VRayLightEvaluation_value = 21;
VRayCameraMode VRayCameraMode_value = 22;
VRayCameraStereoLayout VRayCameraStereoLayout_value = 23;
VRayCameraFocusSource VRayCameraFocusSource_value = 24;
LightMixGroupBy_value = 25;
VRaySkyModel_value = 26;
VolumeVRayToonWidthUnits_value = 27;

AColor AColor_value = 28;
Renk Renk_değeri = 29;

}

}

  • Değer: Özelliğin türüne bağlı olarak olası değerlerden birini  içerir .

Mülk Al #


mesaj GetPropertyRequest {

string unique_name = 1;

}

  • unique_name: Özelliğin benzersiz adını içeren bir dize.

mesaj GetPropertyReponse {

bool success_status = 1;
string message = 2;
Property property = 3;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

  • Özellik: İstenen özelliği temsil eden bir Property örneği.

Özelliği Ayarla #


mesaj SetPropertyRequest {

string unique_name = 1;
PropertyValue value = 2;

}

  • unique_name: Özelliğin benzersiz adını içeren bir dize.

  • değer: Özelliğe atanacak değeri içeren bir PropertyValue nesnesi.

mesaj SetPropertyReponse {

bool success_status = 1;
string message = 2;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

ExportVRScene #


mesaj ExportVRSceneRequest {

string export_file_path = 1;
bool export_compressed = 2;
bool export_hex_format = 3;
bool export_as_archive = 4;

}

  • export_file_path: V-Ray sahnesinin dışa aktarılacağı mutlak yolu içeren bir dize.

  • export_compressed: Liste halindeki eklenti özellik değerlerinin sıkıştırılıp sıkıştırılmayacağını belirten bir boolean değer. export_hex_format değerinin true olması gerekir.

  • export_hex_format: V-Ray Sahnesinde diziler ve dönüşümler için onaltılık formatın kullanılıp kullanılmayacağını belirten bir boolean değer.

  • export_as_archive: V-Ray sahnesinin, referans verilen tüm varlıklarla (dokular, HDR’ler, resimler vb.) birlikte 7-Zip arşivi olarak dışa aktarılıp aktarılmayacağını belirten bir boolean değeri.

mesaj ExportVRSceneResponse {

bool success_status = 1;
string message = 2;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • Mesaj: Eğer RPC başarılı olursa, bu mesaj dışa aktarılan sahnenin gerçek yolunu içerecektir. Eğer RPC başarısız olursa, bu bir hata mesajı içeren bir dize olacaktır.

GetVRayMaterials #


mesaj GetVRayMaterialsRequest {

google.protobuf.Empty empty = 1;

}

  • GetVRayMaterialsRequest’in hiçbir özelliği yok.

mesaj GetVRayMaterialsReponse {

bool success_status = 1;
string message = 2;
repeated string material_names = 3;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • mesaj: RPC’nin herhangi bir nedenle başarısız olması durumunda bir hata mesajı içeren metin.

  • material_names:   Projedeki tüm V-Ray materyallerinin adlarını içeren, tekrarlanan bir dize alanı.

SaveVRayMaterialToFile #


mesaj SaveVRayMaterialToFileRequest {

string material_name = 1;
string file_path = 2;

}

  • material_name: Kaydedilmesi gereken V-Ray materyalinin adını içeren bir dize.

  • file_path: V-Ray materyalinin kaydedileceği mutlak yolu içeren bir dize.

mesaj SaveVRayMaterialToFileResponse {

bool success_status = 1;
string message = 2;

}

  • success_status: RPC’nin başarılı olup olmadığını gösteren bir boolean değer.

  • Mesaj: Eğer RPC başarısız olursa, bu bir hata mesajı içeren bir metin olacaktır.

Enum’lar ve özel türler #


enum LightingAnalysisQuantity {

ParlaklıkCD = 0;
AydınlatmaLX = 1;

}

  • LuminanceCD: Oluşturulan karenin aydınlatma şiddetini lüks cinsinden kullanır.

  • IlluminanceLX: Oluşturulan karenin parlaklığını kandela cinsinden kullanır.

enum LightingAnalysisScale {

Doğrusal = 0;
Logaritmik = 1;

}

  • Doğrusal: Renkler doğrusal ölçekte eşlenmiştir.

  • Logaritmik: Renkler logaritmik ölçekte eşleştirilmiştir.

enum LightingAnalysisDisplay {

Yanlış Renkler = 0;
Izgara Kaplaması = 1;

}

  • FalseColors: Çerçeveyi mavi (düşük değerler) ile kırmızı (yüksek değerler) arasında değişen bir gradyanla doldurur. Aralık dışı değerler için sırasıyla siyah ve beyaz kullanır.

  • GridOverlay: Çerçeve üzerindeki farklı ızgara noktalarındaki değerleri görüntüler. Aynı renk tonlarını kullanırlar.

enum Gürültü Azaltma Modu {

ReplaceRGB = 0;
DoNotCalculate = 1;
GenerateChannel = 2;

}

  • ReplaceRGB: Gürültü giderme için gerekli tüm işleme öğelerini oluşturur, ancak görüntünün gürültüsü giderilmiş bir sürümünü hesaplamaz ve VRayDenoiser işleme öğesi de mevcut değildir.

  • DoNotCalculate: VRayDenoiser kanalı VFB’de ayrı olarak bulunmamaktadır. effectsResult kanalı, gürültüden arındırılmış görüntü ile oluşturulur.

  • GenerateChannel: VRayDenoiser ve effectsResult kanalları oluşturulur.

enum Gürültü AzaltıcıMotor {

Varsayılan = 0;
NVIDIA = 1;

}

  • Varsayılan: Varsayılan V-Ray Gürültü Azaltıcı

  • NVIDIA: NVIDIA Yapay Zeka Gürültü Azaltıcı

enum DenoiserRadiusType {

Özel Tip = 0;
Hafif = 1;
Normal = 2;
Şiddetli = 3;

}

  • CustomType: Mukavemet ve yarıçap parametrelerinin özel değerlere ayarlanmasına olanak tanır.

  • Hafif: Varsayılan ön ayardan daha incelikli bir gürültü azaltma seviyesi uygular.

  • Normal: Varsayılan gürültü azaltma işlemini uygular.

  • Güçlü: Varsayılan ön ayardan daha güçlü bir gürültü azaltma seviyesi uygular.

enum VRayRenderEngine {

CPU = 0;
GPU = 4;
RTX = 7;

}

  • İşlemci: İşlemci

  • GPU: CUDA(GPU)

  • RTX: RTX (GPU)

enum VRayResolutionRatio {

Geniş Ekran = 0;
Ekran = 1;
Kare = 2;
Resim = 3;
Yatay = 4;
Dikey = 5;
Kırpma Bölgesi = 6;
Özel = 7;

}

  • Geniş Ekran: 16:9 – Geniş Ekran

  • Ekran: 8:5 – Ekran

  • Kare: 1:1 – Kare

  • Resim: 4:3 – Resim

  • Manzara: 5:4 – Manzara

  • Portre: 4:5 – Portre

  • CropRegion: Revit’in Kırpma Bölgesi’nin tam sınırını oluşturmaya olanak tanıyan varsayılan En Boy Oranı.

  • Özel: Görüntünün oranlarının manuel olarak girilmesine olanak tanır.

enum VRayResolutionDPIType {

UnusedVRayResolutionDPIType = 0;
DPI75 = 75;
DPI96 = 96;
DPI150 = 150;
DPI300 = 300;
DPI600 = 600;

}

  • DPI75: 75 dpi

  • DPI96: 96 dpi

  • DPI150: 150 dpi

  • DPI300: 300 dpi

  • DPI600: 600 dpi

enum VRayResolutionPrinterUnit {

İnç = 0;
Milimetre = 1;

}

  • İnç: İnç

  • Milimetre: Milimetre

enum EnvironmentType {

Güneş = 0;
Kubbe = 1;
Yok = 2;

}

  • Güneş: V-Ray Güneş

  • Kubbe: V-Ray Kubbe Işığı

  • Yok: V-Ray Işıkları Yok

enum ScreenPlacementType {

Ekran Yerleşimi = 0;
Küresel Yerleşim = 1;

}

  • Ekran Yerleşimi: Ekran Yerleşimi

  • SphericalPlacement: SphericalPlacement

enum BackgroundType {

Arka plan yok = 0;
Özel arka plan = 1;
Revit arka planı = 2;

}

  • NoBackground: Arka plan yok

  • ÖzelArkaPlan: Özel Arka Plan

  • RevitBackground: Revit Background

enum VRaySceneQuality {

Taslak = 0;
Düşük = 1;
Orta = 2;
Yüksek = 3;
Çok Yüksek = 4;

}

  • Taslak: Taslak Kalitesi

  • Düşük: Düşük Kalite

  • Orta: Orta Kalite

  • Yüksek: Yüksek Kalite

  • VeryHigh: Çok Yüksek Kalite

enum VRayImageSamplerType {

KullanılmayanVRayImageSamplerType = 0;
Kovalar = 1;
Aşamalı = 3;

}

  • UnusedVRayImageSamplerType: BU DEĞERİ ASLA KULLANMAYIN. PROTO SÖZ DİZİMİ SINIRLAMALARI NEDENİYLE EKLENMİŞTİR.

  • Kovalar: Bu örnekleyici, piksel ile komşuları arasındaki yoğunluk farkına bağlı olarak piksel başına değişken sayıda örnek alır.

  • Aşamalı: Bu, V-Ray for Revit’te varsayılan görüntü örnekleme ayarıdır. Görüntünün tamamını aşamalı olarak geçişler halinde işler.

enum VRayGIEngine {

IrradianceMap = 0;
BruteForce = 2;
LightCache = 3;

}

  • IrradianceMap: Dolaylı aydınlatma, sahnedeki birkaç nokta için hesaplanır. Geri kalan noktalar için enterpolasyonlu değerler kullanılır. Uyarlanabilir şekilde oluşturulur ancak görünüme bağlıdır.

  • BruteForce: Her gölgeli yüzey noktası için dolaylı aydınlatmanın ayrı ayrı hesaplandığı en basit yaklaşım.

  • LightCache: Kameradan birden fazla yolu izler. Görüş açısına bağlıdır, ancak ayrıntıları ve köşeleri daha iyi işler.

enum VRayLightEvaluation {

Tam = 0;
Uyarlanabilir = 2;

}

  • Tam: Tam ışık değerlendirmesi.

  • Uyarlanabilir: Çok sayıda ışık içeren sahnelerde ışık örneklemesini optimize eder.

enum VRayCameraMode {

Standart = 0;
Dikgen = 7;
Küresel Panorama = 9;
Küp = 10;

}

  • Standart: Geleneksel bir iğne deliği kamerası.

  • Ortogonal: Ortogonal bir kamera.

  • SphericalPanorama: Küresel VR kullanımı için enlem-boylam görüntüleri oluşturmada faydalı olan, bağımsız yatay ve dikey görüş alanı seçimine sahip küresel kamera.

  • Küp: Kutu kameranın, küp şeklindeki yüzeylerin tek bir sıra halinde düzenlendiği bir varyantı. Kutu kamera çıktısının aksine, Cube6x1 çıktı görüntüsünde boş alan oluşturmaz ve kübik VR çıktısı üretmek için kullanışlıdır.

enum VRayCameraStereoLayout {

KullanılmayanVRayCameraStereoLayout = 0;
Yan Yana = 1;
ÜstAlt = 2;

}

  • UnusedVRayCameraStereoLayout: BU DEĞERİ ASLA KULLANMAYIN. PROTO SÖZ DİZİMİ SINIRLAMALARI NEDENİYLE EKLENMİŞTİR.

  • SideBySide: Stereoskopik görüntüler yan yana gösterilir.

  • ÜsttenAlt: Stereoskopik görüntüler üstten alta doğru oluşturulur.

enum VRayCameraFocusSource {

Sabit Mesafe = 0;
Sabit Nokta = 2;

}

  • FixedDistance: Kameranın odağını Odak Mesafesi değerine sabitler.

  • Sabit Nokta: Odak mesafesi, render işlemi başlamadan önce otomatik olarak hesaplanır ve kamera konumu ile araç çubuğu menüsündeki Odak Noktası Seç komutu kullanılarak seçilen 3B nokta arasındaki mesafeye eşittir. Hiçbir nokta seçilmemişse, bunun yerine kamera hedefi varsayılan nokta olarak kullanılır.

LightMixGrupBağlantısı
#

enum LightMixGroupBy {

AileTipi = 0;
BireyselIşıklar = 1;
IşıkGrupları = 2;

}

  • AileTipi: Aynı aile tipine ait tüm örnekler ayrı bir Açık Seçim kutusuna yerleştirilir.

  • IndividualLights: Her ışık ayrı bir Işık Seçiciye bağlıdır.

  • Işık Grupları: Her ışık grubu için ayrı ışık seçimi.

VRaySkyModel #

enum VRaySkyModel {

Preetham = 0;
CIEClear = 1;
CIEOvercast = 2;
Hosek = 3;
Geliştirilmiş = 4;

}

  • Preetham: V-Ray Sky prosedür dokusu Preetham ve arkadaşlarına dayalı olarak oluşturulmuştur. Yöntem. (Kullanıcı arayüzü etiketi: Preetham ve ark.)

  • CIEClear: V-Ray Sky prosedürel dokusu, açık gökyüzü için CIE yöntemine göre oluşturulmuştur. (Kullanıcı arayüzü etiketi: CIE Clear)

  • CIEOvercast: V-Ray Sky prosedürel dokusu, bulutlu gökyüzü için CIE yöntemine göre oluşturulmuştur. (Kullanıcı arayüzü etiketi: CIE Overcast)

  • Hosek: V-Ray Sky prosedürel dokusu, Hosek ve diğerlerinin yöntemine göre oluşturulmuştur. (Kullanıcı arayüzü etiketi: Hosek ve diğerleri)

  • Geliştirilmiş: V-Ray Sky prosedürel dokusu, gün doğumu ve gün batımı gökyüzünü iyileştiren Geliştirilmiş yönteme göre oluşturulmuştur. (Kullanıcı arayüzü etiketi: PRG Clear Sky)

VolumeVRayToonGenişlikBirimleri #

enum VolumeVRayToonWidthUnits

Piksel = 0;
Proje = 1;

}

  • Pikseller: Tüm Kontur parametrelerinin piksel cinsinden değerlendirileceğini belirtir.

  • Proje: Tüm Contour parametrelerinin proje birimleri içinde dikkate alındığını belirtir.

mesaj AColor {

float r = 1;
float g = 2;
float b = 3;
float alpha = 4;

}

  • r : Kırmızı renk için 0,0 ile 1,0 arasında bir değer.

  • g : Yeşil renk için 0,0 ile 1,0 arasında bir değer.

  • b : Mavi renk için 0,0 ile 1,0 arasında bir değer.

  • alfa: Alfa değeri için 0,0 ile 1,0 arasında bir değer.

mesaj Rengi {

float r = 1;
float g = 2;
float b = 3;

}

  • r : Kırmızı renk için 0,0 ile 1,0 arasında bir değer.

  • g : Yeşil renk için 0,0 ile 1,0 arasında bir değer.

  • b : Mavi renk için 0,0 ile 1,0 arasında bir değer.

Kod Örnekleri (C#) #


Sunucu Portunu Elde Etme #

“apiSunucuları”: [

{

“PID”: 22920,
“port”: 58538

},
{

“PID”: 14792,
“port”: 58611

}

]

private const int RevitVersion = 2020;
private static readonly string ConfigJsonPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),

$”Chaos \\V-Ray for Revit {RevitVersion}”, “config.json”);

özel statik int GetServerPort()

{

var RunningInRevitAddon = true;

(var reader = new StreamReader(ConfigJsonPath)) kullanarak
{

var json = JObject.Parse(reader.ReadToEnd());

var apiServers = json[“apiServers”] as JArray;

if (apiServers != null && apiServers.Count > 0)
{

JObject apiServer;
if (runningInRevitAddon)
{

apiServer = apiServers.OfType<JObject>().SingleOrDefault(jo => (int)jo[“PID”] == Process.GetCurrentProcess().Id);

}
başka
{

apiServer = apiServers.OfType<JObject>().FirstOrDefault();

}

if (apiServer != null)
{

(int)apiServer[“port”] döndür;

}

}

}

-1 döndür;

}

Sunucuya bağlanılıyor #


public async Task<bool> ConnectAsync()

{

var sunucuPortu = GetServerPort();
if (sunucuBağlantı Noktası != -1)
{

this.channel = new Channel($”localhost:{serverPort}”, ChannelCredentials.Insecure);

var deadline = DateTime.UtcNow.AddSeconds(1);
try
{

this.channel.ConnectAsync(deadline) işlemini bekleyin;

true döndür;

}
(TaskCanceledException) yakala
{

false döndür;

}

}
başka
{

Debug.WriteLine(“Herkese Açık API Sunucusu henüz başlatılmadı!”);
return false;

}

}

Aktif proje adını alın #


public async Task<string> GetProjectNameAsync()
{

denemek
{

var client = new ApiServerClient(this.channel);
var response = await client.GetProjectNameAsync(new GetProjectNameRequest());
if (response.SuccessStatus)
{

yanıtın proje adını döndür;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return string.Empty;

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return string.Empty;

}

}

Aktif projedeki tüm 3 boyutlu görünümleri alın. #


public async Task<IEnumerable<View>> GetViewsAsync()
{

denemek
{

var client = new ApiServerClient(this.channel);
var response = await client.GetViewsAsync(new GetViewsRequest());
if (response.SuccessStatus)
{

return response.ViewMap.Values.Values;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return Enumerable.Empty<View>();

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return Enumerable.Empty<View>();

}

}

3B Görünüm Seçin #


public async Task<bool> SelectViewAsync(string uniqueId)
{

denemek
{

var client = new ApiServerClient(this.channel);
var response = await client.SelectViewAsync(new SelectViewRequest() { UniqueId = uniqueId });

if (response.SuccessStatus)
{

true döndür;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return false;

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return false;

}

}

3B Görünüm için Toplu Oluşturma Ayarı #


public async Task<bool> SetBatchRenderViewAsync(string uniqueId, bool batchRender)
{

denemek
{

var client = new ApiServerClient(this.channel);
var response = await client.SetBatchRenderViewAsync(new SetBatchRenderViewRequest() { UniqueId = uniqueId, BatchRender = batchRender });
if (response.SuccessStatus)
{

true döndür;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error)
return false;

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return false;

}

}

Tüm özelliklere erişin #


public async Task<IEnumerable<Property>> GetPropertiesAsync()
{

denemek
{

var client = new ApiServerClient(this.channel);
var response = await client.GetPropertiesAsync(new GetPropertiesRequest());
if (response.SuccessStatus)
{

yanıtın değerini döndür.

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return Enumerable.Empty<Property>();

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return Enumerable.Empty<Property>();

}

}

Tek bir mülk edinin #


public async Task<Property> GetPropertyAsync(string uniqueName)
{

denemek
{

var client = new ApiServerClient(this.channel);
var response = await client.GetPropertyAsync(new GetPropertyRequest() { UniqueName = uniqueName });
if (response.SuccessStatus)
{

yanıt.Özelliği döndür;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return null;

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return null;

}

}

Özelliği ayarla #


 public async Task<bool> SetPropertyAsync(string uniqueName, PropertyValue propertyValue)
{

denemek
{

var client = new ApiServerClient(this.channel);

var request = new SetPropertyRequest()
{

BenzersizAd = uniqueName,
Değer = propertyValue

};

var response = await client.SetPropertyAsync(request);

if (response.SuccessStatus)
{

true döndür;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return false;

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return false;

}

}


boolean özelliğini ayarla #


var uniqueName = “GlobalArtificialLightsEnabled”;
var propertyValue = new PropertyValue() { BoolValue = true };
SetPropertyAsync(uniqueName, propertyValue);

Set int özelliği #


var uniqueName = “customResolutionWidth”;
var propertyValue = new PropertyValue() { IntValue = 800 };
SetPropertyAsync(uniqueName, propertyValue);

Kayan nokta özelliğini ayarla #


var uniqueName = “GlobalArtificialLightsIntensity”;
var propertyValue = new PropertyValue() { FloatValue = 2.0f };
SetPropertyAsync(uniqueName, propertyValue);

Dize özelliğini ayarla #


var uniqueName = “backgroundImagePath”;
var propertyValue = new PropertyValue() { StringValue = “C:\myimage.png” };
SetPropertyAsync(uniqueName, propertyValue);

Enum özelliğini ayarla #


var uniqueName = “environmentType”;
var propertyValue = new PropertyValue() { EnvironmentTypeValue = EnvironmentType.Dome };
SetPropertyAsync(uniqueName, propertyValue);

AColor özelliğini ayarlayın #


var uniqueName = “EnvFogColor”;
var propertyValue = new PropertyValue() { AColorValue = new AColor() { R = 0.5f, G = 0.5f, B = 0.5f, Alpha = 1.0f } };
SetPropertyAsync(uniqueName, propertyValue);

Renk özelliğini ayarla #


var uniqueName = “SunFilterColor”;
var propertyValue = new PropertyValue() { ColorValue = new Color() { R = 0.5f, G = 0.5f, B = 0.5f } };
SetPropertyAsync(uniqueName, propertyValue);

V-Ray Sahnesini Dışa Aktar #


public async Task<Tuple<bool, string>> ExportVRSceneAsync(string exportFilePath, bool exportAsArchive, bool exportCompressed, bool exportHexFormat)

{

denemek
{

var client = new ApiServerClient(this.channel);
try
{

var response = await client.ExportVRSceneAsync(new ExportVRSceneRequest()
{

ExportFilePath = exportFilePath,
ExportAsArchive = exportAsArchive,
ExportCompressed = exportCompressed,
ExportHexFormat = exportHexFormat

});


// Dışa aktarma başarılı olursa, response.Message dışa aktarılan V-Ray Sahnesinin gerçek dosya yolunu içerecektir. //
return new Tuple<bool, string>(response.SuccessStatus, response.Message);

}
catch (TaskCanceledException e)
{

Debug.WriteLine(e);
return new Tuple<bool, string>(false, e.ToString());

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
await this.ShutdownAsync();
return new Tuple<bool, string>(false, e.ToString());

}

}


Tüm V-Ray Malzeme Adlarını Alın #


public async Task<IEnumerable<string>> GetVRayMaterialsAsync()
{

denemek
{

var client = new ApiServerClient(this.channel);

var response = await client.GetVRayMaterialsAsync(new GetVRayMaterialsRequest());
if (response.SuccessStatus)
{

Yanıtı döndür.MalzemeAdları;

}
başka
{

MessageBox.Show(response.Message, “Hata”, MessageBoxButton.OK, MessageBoxImage.Error);
return Enumerable.Empty<string>();

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return Enumerable.Empty<string>();

}

}


V-Ray materyalini dosyaya kaydet #


public async Task<Tuple<bool, string>> SaveVRayMaterialToFileAsync(string materialName, string filePath)

{

denemek
{

var client = new ApiServerClient(this.channel);
try
{

var response = await client.SaveVRayMaterialToFileAsync(new SaveVRayMaterialToFileRequest()
{

MalzemeAdı = malzemeAdı,
DosyaYolu = dosyaYolu

});

Yanıtın başarı durumunu ve mesajını içeren yeni bir Tuple<bool, string> döndürün;

}
catch (TaskCanceledException e)
{

Debug.WriteLine(e);
return new Tuple<bool, string>(false, e.ToString());

}

}
catch (RpcException e)
{

Debug.WriteLine(e);
return new Tuple<bool, string>(false, e.ToString());

}

}


Proje değişikliği için dinleyin. #


public async void ListenForProjectChangedAsync()
{

denemek
{

var client = new ApiServerClient(this.channel);

(var call = client.GetProjectChangedNotificationStream(new GetProjectChangedNotificationStreamRequest(), null, null, this.cts.Token))
{

while (await call.ResponseStream.MoveNext())
{

var projectName = call.ResponseStream.Current.ProjectName;
Debug.WriteLine(“Proje şu şekilde değişti: ” + projectName);

}

}

}
catch (RpcException e)
{

Debug.WriteLine(e);

}

}

Kaynaklar #


Revit için V-Ray Genel API İstemci Referansı Uygulaması #


V-Ray 7’den önceki sürümler için, C# istemcisinin referans uygulamasının varsayılan konumu C:\Program Files\Chaos Group\V-Ray\V-Ray for Revit\PublicAPIClient.zip’tir.

Telif Hakları #

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir