Нумерация листов в Tekla Structures

Переодически в Текле возникает необходимость в сквозной нумерации группы чертежей в модели. Задача эта может быть решена разными способами. Лично я предпочитаю делать это с помощью простенького скрипта. Всего то и надо  — пройтись по списку чертежей и каждому присвоить номер.

Чтобы это сделать надо вопервых получить список выбранных чертежей. Во вторых пройтись по нему, и в третьих назначить пользовательское свойство, в моем случае Page — которое потом можно использовать на ряду с другими своствами в шаблоне. Например в штампе.

Кстати, по списку можно пробежать и еще разок, присвоив общее число страниц в качестве свойства например Pages.

Собственно сам листинг скрипты который позволяет это сделать получился довольно не большим так, что привожу его здесь полностью.

namespace Tekla.Technology.Akit.UserScript
{
    using TSD = Tekla.Structures.Drawing;
    using System.Windows.Forms; //used for messageBox.show()
    
    public class Script
    {
        public static void Run(Tekla.Technology.Akit.IScript akit)
        {
		MessageBox.Show("Total number of drawings: " + CAD_NumberSelectedDrawings().ToString());
        }


      static int CAD_NumberSelectedDrawings()
        {
        try
           {
            int i = 0; //register number counter
            var CurrentDrawingHandler = new TSD.DrawingHandler(); // get current drawing handler
            var drawingsEnum = CurrentDrawingHandler.GetDrawingSelector().GetSelected(); //list of selected drawings
            while(drawingsEnum.MoveNext()) //going through it one by one
            {
                var _drawing = drawingsEnum.Current as TSD.Drawing;  //particular drawing
		i++;
		//and finally set number as "DRAWING.USERDEFINED.Page" UDA property.
		_drawing.SetUserProperty("Page", i.ToString()); //change "Page" to name of your UDA
            }
	return i;
          }
        catch (Exception ex)
           { MessageBox.Show("Something goes wrong: " + ex.Message); }
        }
    }
}

Еще по теме: