Добрый день,
Пишу ноды на C# под Dynamo. Доселе писал чисто вычислительные сценарии, работавшими с числами не трогая RevitAPI
и не знал проблем; вот захотел попробовать в рамках метода прочесть параметры объектов Revit (в данном случае - базовой точки), и намертво встал на моменте как получить доступ к текущему проекту Revit.
Ниже извращенное решение с помощью Python-скрипта, как посоветовали на форуме dynamobim.org [Я не пойму - как эту фразу переписать на C#, если это конечно, будет решение проблемы...]

Притом, что сам код ожидает на вход параметр
Autodesk.Revit.DB.Document doc
Ну и сам выглядит ниже:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.DB;
using Autodesk.DesignScript.Runtime;
namespace BasePoint_coord2
{
public class RevitAPI
{
[MultiReturn(new[] { "BasePoint_X", "BasePoint_Y", "BasePoint_Z", "BasePoint_Angle" })]
public static Dictionary<string, object> GetCoordOfRevitBasePoint(Autodesk.Revit.DB.Document doc)
{
var basePoint = new FilteredElementCollector(doc).OfClass(typeof(BasePoint)).Cast<BasePoint>().Where(p => !p.IsShared).ToList().FirstOrDefault(); //https://adn-cis.org/forum/index.php?topic=8972.msg36051#msg36051
//Инициация параметров
double BasePoint_X = 0;
double BasePoint_Y = 0;
double BasePoint_Z = 0;
double BasePoint_Angle = 0;
//Присвоение переменным значений
BasePoint_Y = basePoint.get_Parameter(BuiltInParameter.BASEPOINT_NORTHSOUTH_PARAM).AsDouble();
BasePoint_X = basePoint.get_Parameter(BuiltInParameter.BASEPOINT_EASTWEST_PARAM).AsDouble();
BasePoint_Z = basePoint.get_Parameter(BuiltInParameter.BASEPOINT_ELEVATION_PARAM).AsDouble();
BasePoint_Angle = basePoint.get_Parameter(BuiltInParameter.BASEPOINT_ANGLETON_PARAM).AsDouble();
string result = BasePoint_Y + "," + BasePoint_X + "," + BasePoint_Z + "," + BasePoint_Angle;
return new Dictionary<string, object>
{
{"BasePoint_X", BasePoint_X},
{"BasePoint_Y", BasePoint_Y},
{"BasePoint_Z", BasePoint_Z},
{"BasePoint_Angle", BasePoint_Angle},
};
}
}
}
Суть моего вопроса - как это сделать изнутри метода?
Конструкция типа ниже не распознается как код вообще, (если оно конечно корректно с точки зрения программирования). Не распознается = то есть в Dynamo не отображаются как ноды
public Autodesk.Revit.UI.Result Execute (ExternalCommandData revit, ref string message, ElementSet elements)
{
UIApplication app = revit.Application;
Document doc_find = app.ActiveUIDocument.Document;
ref Document doc = ref doc_find;
return Result.Succeeded;
}
[MultiReturn(new[] { "BasePoint_X", "BasePoint_Y", "BasePoint_Z", "BasePoint_Angle" })]
public static Dictionary<string, object> GetCoordOfRevitBasePoint(ref Document doc)
{... //далее как в коде выше
Помогите, пожалуйста, я совсем уже запутался
