Здравствуйте, знатоки Revit API.
Есть код по созданию нескольких осей.
// вертикальные оси
for (i = 0; i < kol_sh_X; i++)
{
startPoint = new XYZ(startPoint.X + ShagX[i] * ku, startPoint.Y, 0);
endPoint = new XYZ(startPoint.X, endPoint.Y, 0);
geomLine = Autodesk.Revit.DB.Line.CreateBound(endPoint, startPoint);
// Create a grid using the geometry line
lineGrid = document.Create.NewGrid(geomLine);
} // End of for block
Все работает.
В другом приложении есть код образмеривания нескольких выбранных на экране осей.
Document doc = m_revit.Application.ActiveUIDocument.Document;
ElementSet selections = new ElementSet();
foreach (ElementId elementId in m_revit.Application.ActiveUIDocument.Selection.GetElementIds())
{
selections.Insert(m_revit.Application.ActiveUIDocument.Document.GetElement(elementId));
}
ReferenceArray referenceArray = new ReferenceArray();
foreach (Grid grid in selections)
{
//for grid in selection:
referenceArray.Append(grid.Curve.Reference);
}
Autodesk.Revit.DB.XYZ p1 = new XYZ(0, 0, 0);
Autodesk.Revit.DB.XYZ p2 = new XYZ(10, 0, 0);
Line line = Line.CreateBound(p1, p2);
Transaction t = new Transaction(m_revit.Application.ActiveUIDocument.Document, "create dimension");
t.Start();
doc.Create.NewDimension( doc.ActiveView, line, referenceArray );
t.Commit();
Тоже все работает.
Хочу объединить эти два куска в один. Т. е. теперь задача - программно отрисовать несколько осей и проставить размеры между ними. Казалось, все просто… однако, добавляю строки из второго кода в первый
// вертикальные оси
//Autodesk.Revit.DB.ReferenceArray referenceArray;
//referenceArray = new Autodesk.Revit.DB.ReferenceArray();
ReferenceArray referenceArray = new ReferenceArray();
for (i = 0; i < kol_sh_X; i++)
{
startPoint = new XYZ(startPoint.X + ShagX[i] * ku, startPoint.Y, 0);
endPoint = new XYZ(startPoint.X, endPoint.Y, 0);
geomLine = Autodesk.Revit.DB.Line.CreateBound(endPoint, startPoint);
// Create a grid using the geometry line
lineGrid = document.Create.NewGrid(geomLine);
referenceArray.Append(lineGrid.Curve.Reference);
} // End of for block
и НЕ работает.
В самом коде при построении ошибок не показывает. Но при запуске надстройки в самом Ревите обнаруживает исключение на строке
referenceArray.Append(lineGrid.Curve.Reference);
Пожалуйста, подскажите, что не так.