От полного нуля до ...

Автор Тема: От полного нуля до ...  (Прочитано 30966 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн nolteАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
От полного нуля до ...
« : 16-10-2014, 01:42:14 »
доброго здравия
имею: ЖЕЛАНИЕ, autocad 2014, vs2012, некоторый опыт общения с VLISP.
хотелось бы освоить C# & AutoCAD.
С чего начать, как вообще связать vs с AutoCAD и если можно небольшой пример по построению отрезка или другого примитива в автокаде.
Лень - двигатель прогресса.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #1 : 16-10-2014, 01:56:08 »
Приветствую на форуме!
С чего начать
С чтения литературы по .NET и C#: http://adn-cis.org/forum/index.php?topic=400.0
После этого можно переходить к изучению AutoCAD .NET API.
если можно небольшой пример по построению отрезка или другого примитива в автокаде.
Можно. Вот пример построения контура (замкнутой полилинии). Вершины полилинии указывает пользователь.
http://adn-cis.org/forum/index.php?topic=975.msg4284#msg4284
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн nolteАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #2 : 16-10-2014, 02:15:56 »
литература конечно же изучается и примеров не мало как на форуме так и в инете но вот вопрос, просто записать в файл
using Autodesk.AutoCAD***
не работает надо наверняка подключить какие то библиотеки, короче попытки разобраться самостоятельно не увенчались успехом (хоть что то написанное в vs заработало в каде), вот обратился за помощью.
понятное дело вопрос смешной, но для меня пока что невыполнимый.
Лень - двигатель прогресса.

Оффлайн bakaIIHX

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
Re: От полного нуля до ...
« Ответ #3 : 16-10-2014, 02:24:38 »
литература конечно же изучается и примеров не мало как на форуме так и в инете но вот вопрос, просто записать в файл
using Autodesk.AutoCAD***
не работает надо наверняка подключить какие то библиотеки, короче попытки разобраться самостоятельно не увенчались успехом (хоть что то написанное в vs заработало в каде), вот обратился за помощью.
понятное дело вопрос смешной, но для меня пока что невыполнимый.

Сам я большими познаниями не обладаю, но тут подскажу.
Необходимо подключить библиотеки, в обозреватели решений с правой стороны, нажимаешь добавить ссылки-обзор-в папке с автокадом ищешь acdbmgd.dll и acmgd.dll

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: От полного нуля до ...
« Ответ #4 : 16-10-2014, 07:02:24 »
bakaIIHX забыл про AcCoreMgd.dll (кажется она в 2014 появилась...)
http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-8657D153-0120-4881-A3C8-E00ED139E0D3

Цитировать
The AutoCAD .NET API is made up of different DLL files that contain a wide range of classes, structures, methods, and events that provide access to objects in a drawing file or the application. Each DLL file defines different namespaces which are used to organize the components of the libraries based on functionality.

The main DLL files of the AutoCAD .NET API that you will frequently use are:
•AcCoreMgd.dll. Use when working within the editor, publishing and plotting, and defining commands and functions that can be called from AutoLISP.
• AcDbMgd.dll. Use when working with objects stored in a drawing file.
• AcMgd.dll. Use when working with the application and user interface.
• AcCui.dll. Use when working with customization files.

Оффлайн JohnJ

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 1
  • c# autocad
  • Skype: johnj255work
Re: От полного нуля до ...
« Ответ #5 : 16-10-2014, 07:07:54 »
я начал с этой статьи http://habrahabr.ru/post/148844/

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #6 : 16-10-2014, 09:03:59 »
bakaIIHX забыл про AcCoreMgd.dll (кажется она в 2014 появилась...)
Она появилась в AutoCAD 2013
не работает надо наверняка подключить какие то библиотеки, короче попытки разобраться самостоятельно не увенчались успехом (хоть что то написанное в vs заработало в каде), вот обратился за помощью.
понятное дело вопрос смешной, но для меня пока что невыполнимый.
Вопрос совсем не смешной. Можно вручную подключить, как уже писали, acmgd.dll, acdbmgd.dll и accoremgd.dll - для начала этих трёх должно хватать. Эти dll-файлы есть в каталоге AutoCAD (там же где acad.exe) и в составе ObjectARX SDK в каталоге inc. Autodesk'овцы рекомендуют использовать те, которые в составе ObjectARX SDK. Очень важно если ты самостоятельно их подключаешь устанавливать им свойство Copy Local в FALSE:



Вообще-то Autodesk'овцы сделали специальные помощники (AutoCAD .NET Wizards) для создания проекта в Visual Studio:


Скачать и установить этот помощник можно отсюда: http://www.autodesk.com/developautocad
В частности для AutoCAD 2014 и VS 2012: http://images.autodesk.com/adsk/files/AutoCAD_2014_dotnet_wizards.zip
Разархивируй и установи его (при этом Visual Studio не должна быть запущена).
После этого ты сможешь создавать новые проекты, которые уже настроены.
Вот так выглядит процесс создания нового проекта при помощи AutoCAD .NET Wizard 2014:
https://screencast.autodesk.com/main/details/80359404-12ac-45b7-99fa-40b299c60e1e

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн nolteАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #7 : 16-10-2014, 11:23:04 »
спасибо всем откликнувшимся за помощь. процесс пошел, как говаривал классик.
все потиху становить доступным для понимания.
PS
думаю, не последний мой вопрос.
Лень - двигатель прогресса.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #8 : 16-10-2014, 12:05:43 »
думаю, не последний мой вопрос.
С нетерпением жду!  :)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн nolteАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #9 : 16-10-2014, 23:41:04 »
вот, не выходит каменный цветочек. Затыка в следующем:
я переписываю код из примера по ссылке
JohnJ,
 
я начал с этой статьи http://habrahabr.ru/post/148844/
код компилируется, инициализируется в автокаде, но на команду,вводимую в ком строку, ругается
"неизвестная команда "бла бла бла""
код весь как есть записываю в файл "myPlagin.cs", автокад выдает строку, записанную в блоке initialize,
но команда не проходит. Команды, записанные в файле "myCommands.cs", автокад реагирует нормально то бишь понимает их, но если переместить новую команду в "myCommand.cd" то ругается уже vs.Короче куда ни кинься везде засада.Выручайте.
Да и еще файл ObjectARX, скачанный с сайта аутодеск обзывается так
Autodesk_ObjectARX_2014_Win_64_and_32Bit, другого к сожалению нет или я не нашел.
Лень - двигатель прогресса.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #10 : 17-10-2014, 01:58:04 »
Ты как создавал проект? Вручную или при помощи AutoCAD .NET Wizard?
код весь как есть записываю в файл "myPlagin.cs"
Внимательнее. Файл называется myPlugin.cs
но если переместить новую команду в "myCommand.cd" то ругается уже vs.
1) Зачем её туда перемещать?
2) У тебя снова "засада" с именем файла. он не так называется.

Да и еще файл ObjectARX, скачанный с сайта аутодеск обзывается так
Autodesk_ObjectARX_2014_Win_64_and_32Bit, другого к сожалению нет или я не нашел.
Ты сейчас про ObjectARX SDK 2014 или про AutoCAD .NET Wizard говоришь? Если про ObjectARX SDK 2014 то ты нашел правильно. Его нужно скачать и разархивировать.

Так что немного внимательности и золотой ключик у тебя в руках. Пример на хабре сделан под AutoCAD 2007 - могут быть нестыковки. Я этот пример не смотрел - неинтересно. У нас на форуме их куча. Бери любой и смотри.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн JohnJ

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 1
  • c# autocad
  • Skype: johnj255work
Re: От полного нуля до ...
« Ответ #11 : 17-10-2014, 04:57:03 »
код компилируется, инициализируется в автокаде, но на команду,вводимую в ком строку, ругается
"неизвестная команда "бла бла бла""
В автокаде 2014 помимо этих файлов
acdbmgd.dll
acmgd.dll
нужно ещё подцеплять
accoremgd.dll
и не забыть всем этим подключенным библиотекам установить свойство "Копировать локально" в false.

Команды не нужно никуда перемещать. Описывай их все в одном файле, а из функций просто вызывай код, который располагается в других местах.
Короче куда ни кинься везде засада.Выручайте.
Можешь выложить куда-нибудь свой получившийся проект, тогда будет понятнее где что не так.

Оффлайн nolteАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #12 : 17-10-2014, 12:14:18 »
пример из помощи автокада и так же не работает.
Код - C# [Выбрать]
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.AutoCAD.ApplicationServices;
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. using Autodesk.AutoCAD.Geometry;
  6. using Autodesk.AutoCAD.EditorInput;
  7.  
  8.  
  9. [assembly: ExtensionApplication(typeof(acad1.MyPlugin))]
  10.  
  11. namespace acad1
  12. {
  13.  
  14.    
  15.     public class MyPlugin : IExtensionApplication
  16.     {
  17.         [CommandMethod("AddLine")]
  18.         public static void AddLine()
  19.         {
  20.             Document acDoc = Application.DocumentManager.MdiActiveDocument;
  21.             Database acCurdb = acDoc.Database;
  22.             using (Transaction acTrans = acCurdb.TransactionManager.StartTransaction())
  23.             {
  24.                 BlockTable acBlkTbl;
  25.                 acBlkTbl = acTrans.GetObject(acCurdb.BlockTableId, OpenMode.ForRead) as BlockTable;
  26.  
  27.                 BlockTableRecord acBlkTblRec;
  28.                 acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  29.                                                 OpenMode.ForWrite) as BlockTableRecord;
  30.                 using (Line acLine = new Line(new Point3d(5, 5, 0),
  31.                                             new Point3d(12, 3, 0)))
  32.                 {
  33.                     acBlkTblRec.AppendEntity(acLine);
  34.                     acTrans.AddNewlyCreatedDBObject(acLine, true);
  35.                 }
  36.                 acTrans.Commit();
  37.             }
  38.         }
  39.  
  40.         void IExtensionApplication.Initialize()
  41.         {
  42.             var editor = Application.DocumentManager.MdiActiveDocument.Editor;
  43.             editor.WriteMessage("Initialize plugin..." + Environment.NewLine);
  44.         }
  45.  
  46.         void IExtensionApplication.Terminate()
  47.         {
  48.            
  49.         }
  50.  
  51.     }
  52.  
  53. }
  54.  
« Последнее редактирование: 17-10-2014, 12:18:47 от Александр Ривилис »
Лень - двигатель прогресса.

Оффлайн JohnJ

  • ADN Club
  • **
  • Сообщений: 78
  • Карма: 1
  • c# autocad
  • Skype: johnj255work
Re: От полного нуля до ...
« Ответ #13 : 17-10-2014, 12:17:53 »
попробуйте блокировать документ перед тем, как начать транзакцию:
using (acDoc.LockDocument()) {
    using (Transaction acTrans = acCurdb.TransactionManager.StartTransaction()) {
        ...
    }
}

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #14 : 17-10-2014, 12:25:17 »
пример из помощи автокада и так же не работает.
И не будет. Может быть не будешь таким лаконичным в описании проблем и:
1) Ответишь на вопросы, которые я задавал. Без них я вообще не могу понять что ты делаешь
2) Будешь выполнять мои рекомендации
Тогда мы придем к нужному результату.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение