вторник, 30 января 2018 г.

Allplan - кое что об автоматизации

В свете последних событий в строй отрасли, вопрос о расширении спектра выпускаемой продукции за счет "BIM" появляется все чаще.
В свое время, смотрели на Ревит, но это как была архитектурная программа, так ею и осталась.
Потребности конструктора она совсем не удовлетворяет . На рынке, помимо решения от Автодеска, присутствуют еще некоторое количество "BIM" программ: Текла, Аллплан и несколько поменьше.
Программы достаточно обширные и возможности у них много шире чем у Ревита, однако всегда найдется место для затачивания программы под себя.
Про написание скриптов под Теклу, можно посмотреть на канале Сени Бусина и массе других каналов ютуба, а вот по поводу Аллплан, все очень компактно.
Вернее не совсем тихо, но касается в основном СмартПартс и ПайтонПартс, однако хотелось бы большего.
Решил поискать для себя информацию по поводу Allplan API и нашел вот это: proektant.org
Если коротко, то есть 3 вида доступа:
  1. COM
  2. Allplan API Basic в рамках Nemetschek Opened Interface - без доступа к архитектурным и конструкторским объектам
  3. Allplan API BIM в рамках Nemetschek Opened Interface - полный доступ
Найти и скачать где бы то ни было NOI мне так и не удалось, а потому принялся за СОМ.
Тут все несколько проще, на картинке в теме по ссылке выше, можно заметить, что СОМ в Аллплан названа Allcom, вот ее то найти достаточно просто: help.allplan-connect.com/Allcom

Беглый просмотр модели приводит в уныние...


Однако на всякий случай добавляю код простой программы на C#, основой для нее послужила вот эта программка на VBA 
 
Для того, что бы все заработало, нужно подключить библиотеку
 C:\Program Files\Nemetschek\Allplan\Prg\NemAll_AllplanComServer10.dll

using System;
using NALLCOMSERVERLib;

namespace Main
{
    class Program
    {
        static void Main(string[] args)
        {
            AllplApplication objApplication;
            CadElements objCadElements;
            Line2D objLine;

            objApplication = new AllplApplication();
            objCadElements = new CadElements();
            objLine = new Line2D();

            objLine.SetGeometry(1000, 0, 3000, 3000);

            objCadElements.Add( objLine as CadElement );
            objApplication.ActiveDocument.Create( objCadElements as CadElements);
            objApplication.ActiveDocument.ShowAll();
        }
    }
}

Для начала достаточно, а там посмотрим. Как то так. 

Комментариев нет: