Перейти к содержанию
CheerfulCoon

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

Рекомендуемые сообщения

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) в комментариях к вашему релизу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересен ваш результат :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:) нате

Dim str
str = "Hello, world!"
MsgBox str

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Добрый день!

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

Не могли бы Вы поделиться опытом, как Вы смогли переделать свои библиотеки для работы под наноКАД? Может быть, есть описание функций наноКАДа? Я работаю с автоКАДом из 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 в наноКад и добавить свои пункты в меню при его запуске (если у кого есть готовые решения может быть поделитесь).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот, как раз, вопрос с 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 получить, весьма любопытно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выкладываю nanoCAD_TLB и OdaX_TLB.

 

Могет кому помогет.

nano_TLB.zip

Поделиться сообщением


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

 

 

посмотри тут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

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

Изменено пользователем vud81

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос 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 не удалось.

 

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

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

ОК

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

nCAD.exe /register

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

nCAD.exe /register

 

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

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...