Цитата

«Качество надо производить, а не обеспечивать в результате контроля»(с)nmivan

вторник, 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();
        }
    }
}

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

1 комментарий:

Kriks комментирует...

NOI API можно получить через Allbau Software. Это не бесплатно, но стоит вменяемых денег. Кроме того заключается небольшой договор. Версия API должна соответствовать используемой у вас версии Allplan. Надо сказать что NOI API штука насколько мощная настолько и сложная. Основной язык C++. Взаимодействие с пользователем можно решать используя C# - в частности WPF или WinForms. API содержит более тысячи классов. И позволяет очень глубоко расширять возможности программы. Несколько примеров: можно создавать объекты BIM модели, запрашивать информацию об элементах модели, отслеживать события в модели, можно настроить автоматический запуск плагинов при запуске Allplan, можно создавать модальные и немодальные диалоговые окна и т.д. Разработчики кладут в пакет поставки API набор компонентов интерфейса для WPF если вы хотите что бы ваш плагин визуально соответствовал стилю Allplan. Если у вас в штате есть опытные программисты на C++ то все реально.