Jump to content

Первые шаги в мир программирования под nanoCAD


Recommended Posts

1. есть ли как таковая возможность СОЗДАНИЯ динамического блока?

2. не могли бы выложить кусочек кода для подключения nanocad к экселю (делаю автоматизацию расчета гидравлики и черчения по ним аксонометрических схем). с автокадом я такое провернул по аэродинамике, но подключал там эксель к автокаду по примеру:

 

dim objExc as Excel.Application

 

sub MySub ()

set objexcel = getobject ("Excel.Application")

[код]

end sub (это в VBA под автокад)

 

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

3. имеется ли VBA-подобная собственная среда у вашего продукта?

4. имеется ли аналог "поля", как у офиса или акада, позволяющий создавать текстовые шаблоны?

5. имеется ли возможность передавать скрипты в командную строку?

6. командная строка тут никак не связана с Autolisp как в акаде?

 

эти же вопросы я оставил на rustracker.org (ex-torrents.ru) в комментариях к вашему релизу

Link to comment
Share on other sites

  • 2 weeks later...

Статья, посвященная написанию скриптов под nanoCAD на VBS и JS:

http://habrahabr.ru/company/nanosoft/blog/86970/

 

Думаю, что может быть полезна для пользователей nanoCAD.

Плюс приглашаю к обсуждению.

Link to comment
Share on other sites

  • 4 weeks later...

1. есть ли как таковая возможность СОЗДАНИЯ динамического блока?

2. не могли бы выложить кусочек кода для подключения nanocad к экселю (делаю автоматизацию расчета гидравлики и черчения по ним аксонометрических схем). с автокадом я такое провернул по аэродинамике, но подключал там эксель к автокаду по примеру:

 

dim objExc as Excel.Application

 

sub MySub ()

set objexcel = getobject ("Excel.Application")

[код]

end sub (это в VBA под автокад)

 

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

3. имеется ли VBA-подобная собственная среда у вашего продукта?

4. имеется ли аналог "поля", как у офиса или акада, позволяющий создавать текстовые шаблоны?

5. имеется ли возможность передавать скрипты в командную строку?

6. командная строка тут никак не связана с Autolisp как в акаде?

 

эти же вопросы я оставил на rustracker.org (ex-torrents.ru) в комментариях к вашему релизу

 

Я пользуюсь вот этим...

 

procedure Start_nanoCad(var nanoCadApp: InanoCADApplication);

begin

try

GetActiveOleObject('nanoCad.Application').QueryInterface(InanoCADApplication, nanoCadApp);

except

nanoCadApp := nil;

end;

if not (Assigned(nanoCadApp)) then begin

try

nanoCadApp := CoApplication.Create;

nanoCadApp.Visible := True;

except

if (Assigned(nanoCadApp)) then begin

nanoCadApp.Quit;

end;

end;

end;

end;

Link to comment
Share on other sites

К стати очень легко перевел свои DLL с AutoCad на nanoCad и сделал их универсальными работают в обоих Кадах практически без изменений.

Link to comment
Share on other sites

Еще одна статья для любителей программирования на скриптах "nanoCAD и сбоку бантик" :rolleyes:

Интересно, кто из вас уже попробовал писать скрипты для nanoCAD?

Кстати, на скриптами едиными - практически весь nanoCAD доступен через COM.

Link to comment
Share on other sites

будет ли в версии для разработчиков присутствовать инструментарий для разработки специализированных решений таких как nanoCAD СПДС (например, nanoCAD МНЛЗ) с созданием панелей, меню и т.п.?

Link to comment
Share on other sites

Боюсь даже начинать что-то изучать для нано... Идеи есть конечно, что попробовать реализовать, но боюсь столкнуться еще и с проблемой багов самой платформы. Всетаки на сегодняшний день нано еще пока сыроват. Если у меня и получится прикрутить какойнить функционал к нанокаду, то я думаю предприятие моё не поскупиться купить N-ое количество лицензий.

Пока попробую побаловаться с программированием. Потом отпишусь что получилось:)

Link to comment
Share on other sites

Есть 2 подхода при написании приложений для платформ САПР:

1. Все своё ношу с собой, то есть интерфейс к платформе сводится к разумному минимуму, при этом все что можно написать в интерфейсе пользователя без привлечения средств платформы так и делается

2. Максимальная интеграция с платформой

 

Оба подхода имеют плюсы и минусы, но среди минусов 2 подхода - полное попадалово при каких-либо телодвижениях разработчика платформы. Это проверено на опыте.

 

Поэтому совет - используйте 1 подход и вам не потребуются интерфейсные "бантики" от Нанософт. Более того, если писать приложения так, чтобы их можно было легко переносить с AutoCAD на Нанокад и далее - везде, вам будет счастье.

 

Что касается прямого ответа на ваш вопрос, то - да, будут. Но оно вам надо?

Link to comment
Share on other sites

ну nanoCAD и сбоку бантик поинтереснее будет :-)

Link to comment
Share on other sites

К стати очень легко перевел свои DLL с AutoCad на nanoCad и сделал их универсальными работают в обоих Кадах практически без изменений.

Добрый день!

Не могли бы Вы поделиться опытом, как Вы смогли переделать свои библиотеки для работы под наноКАД? Может быть, есть описание функций наноКАДа? Я работаю с автоКАДом из Delphi через COM-объекты (примерно так же, как Вы описывали выше создание экзепляра наноКАДа).

С уважением, Михаил.

Link to comment
Share on other sites

Добрый день!

Не могли бы Вы поделиться опытом, как Вы смогли переделать свои библиотеки для работы под наноКАД? Может быть, есть описание функций наноКАДа? Я работаю с автоКАДом из Delphi через COM-объекты (примерно так же, как Вы описывали выше создание экзепляра наноКАДа).

С уважением, Михаил.

 

День добрый!

 

в Delphi создал два файла Type Library (nanoCAD_TLB и OdaX_TLB). Добавил их в проект и сделал проверку на присутствие наноКада или автоКада, т.е. если наноКад есть его запускает, если нет, то автоКад.

 

function Start_nanoCad(var nanoCadApp: InanoCADApplication): Boolean;
begin
 try
   GetActiveOleObject('nanoCad.Application').QueryInterface(InanoCADApplication,nanoCadApp);
   Result := True;
   Exit;
 except
   try
     CreateOleObject('nanoCad.Application').QueryInterface(InanoCADApplication,nanoCadApp);
     Result := True;
     Exit;
   except
     nanoCadApp := nil;
   end;
 end;
 Result := False;
end;

function Start_AutoCad(var AutoCadApp: OleVariant): Boolean;
begin
 try
   AutoCadApp := GetActiveOleObject('AutoCad.Application');
   Result := True;
   Exit;
 except
   try
     AutoCadApp := CreateOleObject('AutoCad.Application');
     Result := True;
     Exit;
   except
     AutoCadApp := Null;
   end;
 end;
 Result := False;
end;



   If Start_nanoCad(nanoCad) then begin //проверка наноКада
     ncad := nanoCad.ActiveDocument; //Цепляемся к активному документу
     ...  //Выполняем нужные действия
   end else If Start_AutoCad(AutoCad) then begin //проверка автоКада
     acad := AutoCad.ActiveDocument; //Цепляемся к активному документу
     ...  //Выполняем нужные действия 
   end else begin
     ShowMessage('Не найдены ни АвтоКад, ни наноКад. Обратитесь к администратору');
     exit;
   end;

 

у наноКада функции теже, что и у автоКада, поэтому сам код менять практически не пришлось.

 

P.S. Однако при программном запуске наноКада у него отсутствуют все панели (как их загрузить пока не знаю, просто сказал юзерам сначала запускать наноКад, а потом нажимать кнопку). Сейчас разбираюсь как подгрузить DLL в наноКад и добавить свои пункты в меню при его запуске (если у кого есть готовые решения может быть поделитесь).

Link to comment
Share on other sites

  • 2 months later...

Я пробовал подключаться к nanocad через COM из под делфи.

Команды, которые работали в autocad работают и в nanocad, это радует

А вот выделени объектов, получение количества выделенных объектов не работает. Выделение объектов, в частности, вообще вываливается с эксепшеном. Да и добавление уже существующего слоя также валится, хотя в автокаде все проходит гладенько.

Так что работать, имхо, есть над чем, к тому же отечественная САПР - это здорово.

Может у кого есть решение указанных проблем? Был бы рад услышать совет от коллег по цеху :)

Link to comment
Share on other sites

Вот, как раз, вопрос с COM.

Использую "Delphi 2007" и "nanoCAD Механика".

 

Для начала, пытаюсь получить описание библиотеки типов, для того, чтобы воспользоваться всеми преимуществами раннего связывания. Увы, при выполнении операции импорта RAD Studio выдает ошибку. Неприятно, ну да ладно…

 

Пробую подключиться к серверу автоматизации nanoCAD, используя позднее связывание:

Var

App: OleVariant;

Doc: Olevariant;

MSpace: OleVariant;

VPoint: Olevariant;

begin

App:= CreateOleObject('nanoCad.Application');

Doc:= Var.ActiveDocument;

 

Проходит на «ура», связь с сервером установлена:

ShowMessagae(App.Name +’: ’+ Doc.Name); //наблюдаем «nanoCAD: Без имени0»

 

Пытаюсь отрисовать в пространстве модели точку:

VPoint:= VarArrayCreate([0, 2], VarDouble);

VPoint[0]:= x;

VPoint[1]:= y;

VPoint[2]:= 0;

MSpace:= Doc.ModelSpace;

MSpace.AddPoint(VPoint);

 

Ошибка! EOleSysError: «Ошибка при загрузке библиотеки». В выражении «MSpace:= Doc.ModelSpace;».

И как сие понимать? Как будто нет у документа nanoCAD свойства ModelSpace. Или объектная модель nanoCAD не повторяет объектную модель AutoCAD?

Кто уже разобрался, подскажите, плиз! И, как все же, *_TLB.pas получить, весьма любопытно.

Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

В nanoCad 2.5 не работают мои dll-ки. В подробности вдаваться не стал, нет времени, но факт. Поэтому дальнейшие испытания новой версии проводиться не будут, а жаль...

Link to comment
Share on other sites

vud81, по всей видимости GUIDы у интерфейсов поменялись... обновитесь и будет счастье :-)

Link to comment
Share on other sites

vud81, по всей видимости GUIDы у интерфейсов поменялись... обновитесь и будет счастье :-)

 

Не подскажешь чаго обновить и где их взять?

 

OdaX.tlb я обновил, а вот из ncauto.dll не хочет формироваться nanoCAD_TLB.

 

Может быть вы их сами официально выложите, для скачивания. <_<

 

А то, то что в папке "Nanosoft\nanoCAD 2.5\help\api" присутствует помощь это хорошо, но ведь и делом надо это закрепить.

Edited by vud81
Link to comment
Share on other sites

Вопрос 1: вы 2.5 версию как поставили? снесли 2.0 и поставили заново 2.5 или обновили 2.0 до 2.5?

Вопрос 2: вы после перезагрузки компа пытались создать tlb-файл?

 

у вас похоже не зарегистрировалась dll. Проверьте регистрацию библиотеки в системе...

Link to comment
Share on other sites

Вопрос 1: вы 2.5 версию как поставили? снесли 2.0 и поставили заново 2.5 или обновили 2.0 до 2.5?

Вопрос 2: вы после перезагрузки компа пытались создать tlb-файл?

 

у вас похоже не зарегистрировалась dll. Проверьте регистрацию библиотеки в системе...

 

Ответ 1: пытался ставить обоими способами (результат тот же).

Ответ 2: да, при установке dll-ки не регистрируется ни ncauto.dll, ни OdaX_csd.dll. После сам зарегистрировал OdaX_csd.dll, а ncauto.dll не хочет

выдает ошибку:

 

---------------------------

RegSvr32

---------------------------

D:\Program Files\Nanosoft\nanoCAD 2.5\bin\ncauto.dll была загружена, но найти точку входа для DllRegisterServer не удалось.

 

Зарегистрировать этот файл невозможно.

---------------------------

ОК

---------------------------

Link to comment
Share on other sites

чтобы зарегистрировать nanoCAD нужно запустить программу с ключем /register

nCAD.exe /register

Link to comment
Share on other sites

чтобы зарегистрировать nanoCAD нужно запустить программу с ключем /register

nCAD.exe /register

 

Вот после этого поехало!!!

Спасибо!

Link to comment
Share on other sites

  • 2 months later...

Как поставить VB-скрипт в автозагрузку nanoCADа? А то получается нужно каждый раз после запуска nanoCADа использовать команду VBS и путь к файлу. В АвтоКАДе, например, есть "Инструменты/Загрузить приложение/Исходный набор".

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...