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


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


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

#21 dows

    Активист

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

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

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

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

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

#22 vud81

    Посетитель

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

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

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

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

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

#23 dows

    Активист

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

Отправлено 16 Сентябрь 2010 - 14:27

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

С уважением,
Денис Ожигин

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

#24 vud81

    Посетитель

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

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

Просмотр сообщенияdows (16 Сентябрь 2010 - 14:27) писал:

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

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

#25 shurik5b

    Новичок

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

Отправлено 01 Декабрь 2010 - 10:04

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

#26 mitja

    Посетитель

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

Отправлено 11 Январь 2011 - 17:04

задам совсем детский вопрос, как нарисовать линию на JS ? :huh:

#27 dows

    Активист

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

Отправлено 12 Январь 2011 - 11:39

Просмотр сообщенияmitja (11 Январь 2011 - 17:04) писал:

задам совсем детский вопрос, как нарисовать линию на JS ? :huh:
mitja, все очень подробно описано тут: http://habrahabr.ru/...oft/blog/86970/
А в папке C:\Program Files\Nanosoft\nanoCAD 2.5\help\api есть документация с примерами.

Но если говорить о линии на JS, то так:

Цитата

var ms = ThisDrawing.ModelSpace;
var x = 0;
var y = 0;
var z = 0;
ms.AddLine(x + "," + y + "," + z, (x + 2000) + "," + (y + 4000) +"," + z);

С уважением,
Денис Ожигин

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

#28 mitja

    Посетитель

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

Отправлено 13 Январь 2011 - 16:41

спасибо,почитаю. :rolleyes:

#29 Archr

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Город:Иваново
  • Интересы:ГИС

Отправлено 27 Февраль 2011 - 03:44

А можно привести какой-нибудь пример по использованию селекции объектов или ссылку в help, где есть пример. Использую vbs.

#30 ISL

    Клуб разработчиков

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

Отправлено 05 Март 2011 - 20:32

Для начала нужно обновить OdaX_csd.dll ftp://ftp.nanocad.ru/nc20/NC25(1114)_OdaX_fix.zip

appName = "nanoCAD.Application"
On Error Resume Next
Set app = GetObject("", appName)
If Err <> 0 Then
        Set app = CreateObject(appName)
        app.Visible = True
End If

Set ThisDrawing = app.ActiveDocument

set lines = ThisDrawing.SelectionSets.Add("Lines")
set lines = ThisDrawing.SelectionSets("Lines")

lines.Select 5, Nothing, Nothing, 0, "LINE"

echo lines.Count & " lines out of " & ThisDrawing.ModelSpace.Count & " objects"

i=1
For Each e in lines
    echo "processing line " & i & "..."
    echo "" & e.Handle & " from " & pt_toString(e.StartPoint) & " to " & pt_toString(e.EndPoint)
    i=i+1 
Next

Function pt_toString(pt) 
    p = ThisDrawing.Utility.CreateSafeArrayFromVector(pt)
    pt_toString =  "<" & p(0) & "," & p(1) & ">"
End Function

Sub echo(msg)
   ThisDrawing.Utility.Prompt msg
   WScript.StdOut.WriteLine msg
End Sub

Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#31 Archr

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Город:Иваново
  • Интересы:ГИС

Отправлено 06 Март 2011 - 18:25

Спасибо. То что нужно. При запуске примера заметил, что функция pt_toString не работает.

#32 ISL

    Клуб разработчиков

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

Отправлено 09 Март 2011 - 20:54

Странно. При наличии чертежа, в котором есть линии, получается так:

4 lines out of 4 objects
processing line 1...
353 from <25359.1087639363,36653.7614767467> to <45911.5935698963,36653.7614767467>
processing line 2...
354 from <45911.5935698963,36653.7614767467> to <15735.3261960661,12675.86253646>
processing line 3...
355 from <15735.3261960661,12675.86253646> to <43301.7542294569,7293.06889680383>
processing line 4...
356 from <43301.7542294569,7293.06889680383> to <23727.9591761617,15122.5869181219>

Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#33 Archr

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Город:Иваново
  • Интересы:ГИС

Отправлено 10 Март 2011 - 22:13

Я тоже ждал такого вывода, но у меня только так:
Script file path или [./]: C:\test\test.vbs
3 lines out of 3 objects
processing line 1...
processing line 2...
processing line 3...
обработчик ошибок: processing line 1...err: "Ошибка выполнения Microsoft VBScript" raised an exception "Недопустимый вызов или аргумент процедуры" at line 26 pos 4
p = ThisDrawing.Utility.CreateSafeArrayFromVector(pt)

#34 nicolas

    Посетитель

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

Отправлено 16 Июнь 2011 - 14:35

Здравствуйте. После переустановки нанокада на версию 3.0 возникли проблемы следующего характера.
Ранее под версию 2.5 написал на vb в среде visual studio 2008 программу, которая через COM-объекты нанокада рисовала в нем некую графику. При этом использовал СОМ-объекты nanoCAD Type Library и OdaX 3.03 Type library, которые были расположены в файлах NCAuto.dll и OdaX_csd.dll соответственно. При установке нанокада 2.5 эти объекты автоматически зарегистрировались в системе и все было здорово.
Теперь после установки версии 3.0 автоматически зарегистрировался в системе только nanoCAD Type Library, OdaX нет (причем соответствующие файлы в сборке присутствуют). Ручная регистрация в visual studio и подключение этих файлов к проекту VB успехов не имели - visual studio пишет, что в данном файле нет СОМ-объекта.
В результате программа, написанная под 2.5 не работает под 3.0.
Прошу помочь.
Еще один небольшой ньанс (это вдогонку). СОМ-объект в файле OdaX_csd.dll в сборке версии 2.5 тоже работал нестабильно: на домашнем компе он регистрировался в системе при установке нанокада, на рабочем нет. Эту проблему я так и не победил - программировал под нанокад на домашнем компе. теперь же в версии 3.0 СОМ-объект OdaX_csd.dll и на домашнем компе перестал регистрироваться. Прокоментируйте пожалуйста эту ситуацию.
P.S. Дома система нелицензионная версия WinXP Professional версия 2002 SP3(была установлена со ZverDVD)
На работе все тоже самое, только лицензионное (установлена с лицензионного диска).

#35 nicolas

    Посетитель

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

Отправлено 16 Июнь 2011 - 16:58

После долгих попыток мне удалось зарегистрировать оба компонента на домашнем компе (регистрировал СОМ-объекты вручную с помощью команды regsvr32 *.dll, а потом добавлял компонент в vb проект). В результате это сработало, правда не с первого раза. Эту же процедуру проверил в Win7 - работает. А вот рабочий комп так и не поддается. ручная регистрация терпит неудачу. могу предположить что СОМ-объекты имеют какие-то зависимости от других библиотек, которых у меня на рабочем компе нет и из-за этогоь не проходит регистрация СОМ-объектов.
Прошу сообщить минимальный набор библиотек необходимый для регистрации nanoCAD Type Library и OdaX 3.04 Type library или предложить какой-то альтернативный путь решения проблемы.

#36 nicolas

    Посетитель

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

Отправлено 12 Июль 2011 - 14:23

Указанная мной проблема решилась в сборке 1194 файлы NCAuto.dll и OdaX_csd.dll успешно зарегистрировались.
Но тут возникла еще одна непонятная ситуация
следующий код
Public objNanoCADApp As nanoCAD.Application
Public doc As nanoCAD.Document
Public ms As OdaX.AcadModelSpace

objNanoCADApp = CreateObject("NanoCAD.Application")
doc = objNanoCADApp.Documents.Open("test.dwg")
ms = doc.ModelSpace

не работает
visual studio пишет, что интерфейс ModelSpace не зарегистрирован {Exception from HRESULT 0x80040155}
(ранее в версии 2.5 этот код работал)

#37 nicolas

    Посетитель

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

Отправлено 12 Июль 2011 - 14:41

Есть предположение что OdaX 3.04 все же как-то неправильно зарегистрировался, потому как в интерфейсе nanoCAD.Document много интерфейсов из OdaX (в том числе и ModelSpace ) и все они помечены в visual studio как "интерфейс не зарегистрирован {Exception from HRESULT 0x80040155}
Заранее благодарен

#38 ISL

    Клуб разработчиков

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

Отправлено 12 Июль 2011 - 18:47

Сборка 1194 не отличается от сборки 1193 в части COM интерфейса. Видимо, дело в том, что Вы переустановили продукт.
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#39 ISL

    Клуб разработчиков

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

Отправлено 12 Июль 2011 - 19:47

Попробуйте NCad.exe /register

Создал тестовый проект, работает.

AddReference->COM->nanoCAD Type Library 2.0. OdaX подключился сам.

Module Module1
Public objNanoCADApp As nanoCAD.Application
Public doc As nanoCAD.Document
Public ms As OdaX.AcadModelSpace

Sub Main()
objNanoCADApp = CreateObject("NanoCAD.Application")
doc = objNanoCADApp.Documents.Open("c:\\TEMP\\test.dwg")
ms = doc.ModelSpace
End Sub

End Module

То же для C#

namespace TestNCadCom
{
class Program
{
static void Main(string[] args)
{
var objNanoCADApp = new nanoCAD.Application();
var doc = objNanoCADApp.Documents.Open("c:\\TEMP\\test.dwg", false, "");
var ms = doc.ModelSpace;
}
}
}
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.

#40 nicolas

    Посетитель

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

Отправлено 13 Июль 2011 - 10:48

спасибо, за быстрый ответ. помогло частично, есть один нюанс.
изначально пробовал ncad.exe/register под учетной записью не имеющей админских прав - проблемма осталась.
попробовал все тоже самое под учетной записью с правами администратора - все заработало.
причем и в 1 и во 2 случае nanoCAD Type Library 2.0 и OdaX в системе зарегистрировались (по крайней мере они доступны в visual studio по ссылке AddReference->COM), но не под админом интерфейсы OdaX работать не хотят - возникает ошибка выполнения при обращении к ним (компилируется код без проблем)
Это для меня критично, поскольку exe-шник откомпилированный и работающий под админской учетной записью не работает под учетными записями пользователей, а это важно (нельзя всем пользователям раздать админские права). Я попробовал расшарить папку где установлен нанокад для всех пользователей - не помогло.
может тут что-то посоветуете?





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

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