Перейти к содержимому


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


Сообщений в теме: 203

#1 CheerfulCoon

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 04 Март 2010 - 10:37

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

#2 dows

    Активист

  • Продукт-менеджеры
  • PipPipPipPip
  • 2 914 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:САПР

Отправлено 15 Март 2010 - 13:19

Статья, посвященная написанию скриптов под nanoCAD на VBS и JS:
http://habrahabr.ru/...oft/blog/86970/

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

Сайты: www.archicad.ru, www.nanocad.ru

#3 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 08 Апрель 2010 - 16:20

Просмотр сообщенияCheerfulCoon (04 Март 2010 - 10:37) писал:

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;

#4 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 08 Апрель 2010 - 17:05

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

#5 dimpop

    Участник

  • Администраторы
  • PipPipPip
  • 65 сообщений
  • Пол:Мужчина

Отправлено 12 Апрель 2010 - 18:30

Еще одна статья для любителей программирования на скриптах "nanoCAD и сбоку бантик" :rolleyes:
Интересно, кто из вас уже попробовал писать скрипты для nanoCAD?
Кстати, на скриптами едиными - практически весь nanoCAD доступен через COM.

#6 vb2005

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 14 Апрель 2010 - 08:30

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

#7 shoorup

    Активист

  • Пользователи
  • PipPipPipPip
  • 190 сообщений
  • Пол:Мужчина
  • Город:Минск
  • Интересы:Железнодорожник

Отправлено 14 Апрель 2010 - 09:16

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

#8 dows

    Активист

  • Продукт-менеджеры
  • PipPipPipPip
  • 2 914 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:САПР

Отправлено 15 Апрель 2010 - 10:12

Интересен ваш результат :-)
С уважением,
Денис Ожигин

Сайты: www.archicad.ru, www.nanocad.ru

#9 shoorup

    Активист

  • Пользователи
  • PipPipPipPip
  • 190 сообщений
  • Пол:Мужчина
  • Город:Минск
  • Интересы:Железнодорожник

Отправлено 16 Апрель 2010 - 13:32

:) нате
Dim str
str = "Hello, world!"
MsgBox str

Низшие умы обсуждают людей. Средние умы обсуждают события. Великие умы обсуждают идеи.

#10 dimpop

    Участник

  • Администраторы
  • PipPipPip
  • 65 сообщений
  • Пол:Мужчина

Отправлено 16 Апрель 2010 - 14:34

Есть 2 подхода при написании приложений для платформ САПР:
1. Все своё ношу с собой, то есть интерфейс к платформе сводится к разумному минимуму, при этом все что можно написать в интерфейсе пользователя без привлечения средств платформы так и делается
2. Максимальная интеграция с платформой

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

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

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

#11 dows

    Активист

  • Продукт-менеджеры
  • PipPipPipPip
  • 2 914 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:САПР

Отправлено 20 Апрель 2010 - 20:19

ну nanoCAD и сбоку бантик поинтереснее будет :-)
С уважением,
Денис Ожигин

Сайты: www.archicad.ru, www.nanocad.ru

#12 mike-k20

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 28 Апрель 2010 - 10:11

Просмотр сообщенияvud81 (08 Апрель 2010 - 17:05) писал:

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

#13 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 29 Апрель 2010 - 07:45

Просмотр сообщенияmike-k20 (28 Апрель 2010 - 10:11) писал:

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

#14 crucified

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 07 Июль 2010 - 15:03

Я пробовал подключаться к nanocad через COM из под делфи.
Команды, которые работали в autocad работают и в nanocad, это радует
А вот выделени объектов, получение количества выделенных объектов не работает. Выделение объектов, в частности, вообще вываливается с эксепшеном. Да и добавление уже существующего слоя также валится, хотя в автокаде все проходит гладенько.
Так что работать, имхо, есть над чем, к тому же отечественная САПР - это здорово.
Может у кого есть решение указанных проблем? Был бы рад услышать совет от коллег по цеху :)

#15 AlexUkolov

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 13 Июль 2010 - 08:43

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

#16 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 19 Август 2010 - 07:28

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

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

Прикрепленные файлы

  • Прикрепленный файл  nano_TLB.zip   97,01К   103 Количество загрузок:


#17 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 19 Август 2010 - 07:31

Цитата

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


посмотри тут

#18 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 08 Сентябрь 2010 - 15:53

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

#19 dows

    Активист

  • Продукт-менеджеры
  • PipPipPipPip
  • 2 914 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:САПР

Отправлено 15 Сентябрь 2010 - 11:57

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

Сайты: www.archicad.ru, www.nanocad.ru

#20 vud81

    Посетитель

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина
  • Город:Набережные Челны
  • Интересы:Программирование

Отправлено 15 Сентябрь 2010 - 12:48

Просмотр сообщенияdows (15 Сентябрь 2010 - 11:57) писал:

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

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

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

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

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

Сообщение отредактировал vud81: 15 Сентябрь 2010 - 13:00






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей