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

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

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

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

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

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

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

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

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #15 : 17-10-2014, 12:32:09 »
P.S.: Кстати, приведенный тобой пример у меня заработал сразу.
Что я для этого сделал:
1) Создал новый проект при помощи AutoCAD .NET Wizard 2014
2) Удалил файл myCommands.cs
3) Заменил содержимое файла myPlugins.cs на то, которое ты написал
4) Откомпилировал пример, загрузил в AutoCAD и выполнил команду ADDLINE
5) Выполнил команду _ZOOM _ALL чтобы увидеть добавленный отрезок.
Отрезок на месте. Всё.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #16 : 17-10-2014, 12:37:50 »
Александр Ривилис,  да сори.
Цитировать
Ты как создавал проект? Вручную или при помощи AutoCAD .NET Wizard?
при помощи AutoCAD.NET Wizard
Цитировать
Ты сейчас про ObjectARX SDK 2014 или про AutoCAD .NET Wizard говоришь?
про ObjectARX SDK 2014.
Цитировать
2) Удалил файл myCommands.cs
не удалял, сейчас попробую.
Цитировать
3) Заменил содержимое файла myPlugins.cs на то, которое ты написал
да (полный текст см. выше).
Цитировать
4) Откомпилировал пример, загрузил в AutoCAD и выполнил команду ADDLINE
точно
Цитировать
5) Выполнил команду _ZOOM _ALL чтобы увидеть добавленный отрезок.
AutoCAD не принимает команду из пункта 4 ADDLINE.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #17 : 17-10-2014, 12:58:47 »
Удалил myCommands.cs и все сраслось :).
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #18 : 17-10-2014, 13:45:42 »
О! Где-то Андрей Бушман проводил исследования в каких случаях AutoCAD "видит" командные методы в нескольких классах, а в каких нет. Поэтому я предпочитаю все команды держать в одном классе и в одном файле.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #19 : 17-10-2014, 14:23:23 »
Насколько я знаю, AutoCAD не видит команды если:
- класс не public.
- метод команды не public (если к тому же не void - то еще и ошибку выдаст).
- в атрибуте сборки [assembly: CommandClass ... ] прописан другой класс. В этом случае будут грузиться только команды из указанного в атрибуте класса.

Других ограничений вроде не было. Хоть в одном классе команды, хоть в нескольких.
Но я тоже предпочитаю описывать команды в одном классе, а этот класс указывать в атрибуте CommandClass. При этом, разные команды для удобства можно разносить по различным файлам, как части класса (partial class).

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #20 : 29-10-2014, 17:42:56 »
Очередной глупый вопрос.
Где почитать что скрывают за собой(какие функции) библиотеки ObjectARX.
Крайне не хотелось бы изобретать велосипед и снова создавать(тем более, что получиться не ахти) функции, которые уже существуют.
Лень - двигатель прогресса.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: От полного нуля до ...
« Ответ #21 : 29-10-2014, 22:20:35 »
Где-то Андрей Бушман проводил исследования в каких случаях AutoCAD "видит" командные методы в нескольких классах, а в каких нет.
Цитата: Загорулькин Дмитрий
Насколько я знаю
Дима "правильно знает". В дополнение к тому, что он написал, хочу добавить, что сборка может иметь столько атрибутов  CommandClass, сколько потребуется (т.е. вовсе не обязана ограничиваться лишь одним). Но если присутствует хотя бы один такой атрибут, то (как Дима уже сообщил) AutoCAD не будет искать команды нигде, кроме как в указанных при помощи этих атрибутах классах. Тут некоторый перевод SDK по теме.

А вот реализация IExtensionApplication в сборке должна быть одна, причём даже при наследовании классов её следует указывать явно (обусловлено криворукой реализацией Autodesk поиска IExtensionApplication) - подробности здесь.

Поэтому я предпочитаю все команды держать в одном классе и в одном файле.
Поскольку атрибутов CommandClass может быть сколько угодно и имеется возможность создавать частичные классы, то если команд много - я не леплю всё в одну, трудно перевариваемую кучу, но предпочитаю распределять логическими порциями по соответствующим классам. Так гораздо проще и удобней работать (имхо).

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: От полного нуля до ...
« Ответ #22 : 29-10-2014, 22:22:03 »
Где почитать что скрывают за собой(какие функции) библиотеки ObjectARX.
В документации ObjectARX SDK (см. подкаталог doc).

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #23 : 29-10-2014, 22:50:29 »
Андрей Бушман,
Спасибо.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #24 : 11-06-2016, 09:58:53 »
и снова здравствуйте. Созрел для очередного вопроса. Итак:
Видел на просторах инета функцию, которая выдает длину и площадь выбранных примитивов, то есть, выбирается примитив - меняется цифера в форме, убирается примитив из набора (наверняка с помощью SHIFT) - меняется цифера. Попробовал сделать подобное, но все хорошо если нужен только конечный результат, то есть, закончил выбирать примитивы нажал ENTER - получил результат. Динамично не отслеживаются изменнения в SelectionSet.
На ум приходят несколько вариантов:
1. Как то получить набор примитивов, входящих в выбор, до того как создан окончательно SelectionSet.
2. Воспользовать Binding-ом WPF, но опять же надо к чему-то вязаться(этот вариант мне кажется более реальным).
3. SelectionSet - не правильный выбор, и решать задачу надо другим способом.
4. Вариант, которого я не знаю. :)
Пните в нужном направлении :).
код решения:
Plagin
Извините, вам запрещён просмотр содержимого спойлеров.

Data
Извините, вам запрещён просмотр содержимого спойлеров.

wpf
Извините, вам запрещён просмотр содержимого спойлеров.

Извините, вам запрещён просмотр содержимого спойлеров.
Лень - двигатель прогресса.

Отмечено как Решение nolte 12-06-2016, 22:45:10

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #25 : 11-06-2016, 10:12:11 »
Видел на просторах инета функцию, которая выдает длину и площадь выбранных примитивов, то есть, выбирается примитив - меняется цифера в форме, убирается примитив из набора (наверняка с помощью SHIFT) - меняется цифера.
Остальное не читал. Подписывайся на события Editor.SelectionAdded и Editor.SelectionRemoved и отслеживай в них текущее состояние набора выбранных примитивов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #26 : 12-06-2016, 15:57:11 »
Editor.SelectionAdded и Editor.SelectionRemoved
Хм. А я подписывался на Document.ImpliedSelectionChanged и DocumentManager.DocumentActivated. Первое событие - для отслеживания изменения набора. Второе - чтобы обновлять данные при смене активного чертежа.
P.S> Еще раз перечитал "тз". Да, там не указано явно о каком выборе идет речь - предварительном или во время выполнения команды. Так что, может быть, я и не в тему.
P.S.S>
Цитировать
Видел на просторах инета функцию, которая выдает длину и площадь выбранных примитивов, то есть, выбирается примитив - меняется цифера в форме, убирается примитив из набора (наверняка с помощью SHIFT) - меняется цифера.
Александр Наумович, сдается мне, что речь идет о SelSim :)

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #27 : 12-06-2016, 16:45:20 »
вот еще бы и примерчик бросили, а то никак не могу дойти чего и как отслеживать.
Лень - двигатель прогресса.


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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #29 : 12-06-2016, 20:37:56 »
разбираюсь как раз с этими примерами
спасибо
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #30 : 12-06-2016, 21:29:08 »
Александр Наумович, сдается мне, что речь идет о SelSim :)
Скорее GeomProps - там длина/площадь/объём пересчитываются при изменении набора предварительного выбора.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #31 : 13-06-2016, 15:35:56 »
Ой, конечно же, GeomProps! Просто перепутал :)

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #32 : 13-06-2016, 15:45:25 »
Ой, конечно же, GeomProps! Просто перепутал :)
Только там совсем другая логика работы - без всяких реакторов. И на .NET это не реализуется (только при помощи прокладки типа OPMNETEXT).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #33 : 15-08-2017, 21:50:15 »
существует в .net эквивалент wcmath. то есть (wcmatch(vla-get-layer obj)"kkk*" можно быстро реализовать в .net. или надо выбирать примитивы а потом фильтровать их по слою.
Лень - двигатель прогресса.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Re: От полного нуля до ...
« Ответ #34 : 15-08-2017, 22:54:57 »
См.регулярные выражения. В VB.NET, кажется, была конструкция Like.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #35 : 15-08-2017, 23:41:05 »
существует в .net эквивалент wcmath. то есть (wcmatch(vla-get-layer obj)"kkk*" можно быстро реализовать в .net. или надо выбирать примитивы а потом фильтровать их по слою.
В AutoCAD .NET API есть полный эквивалент (wcmatch): Autodesk.AutoCAD.Internal.Utils.WcMatchEx
Тут пример использования: http://adn-cis.org/kak-poluchit-spisok-dostupnyix-plotterov-formatov-v-autocad.html
Третий параметр у этого метода означает игнорирование регистра букв. Чтобы был совершенно полный аналог с (wcmatch) третий параметр должен быть равен true.
Ну а вообще можно использовать и Regex для более сложных фильтров.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #36 : 15-08-2017, 23:59:27 »
прошу прощения не верно вопрос задал не (wcmatch(vla-get-layer obj)"kkk*") a
Код - Auto/Visual Lisp [Выбрать]
  1. (ssget ":D" (list(cons 8 "kkk*")))
дабы в набор выбирались примитивы на определенных слоях.
« Последнее редактирование: 16-08-2017, 00:22:16 от Александр Ривилис »
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #37 : 16-08-2017, 00:07:12 »
Как-то так тогда:
Код - C# [Выбрать]
  1. // Переменная для фильтра
  2. TypedValue[] filterlist = new TypedValue[1];
  3. // Критерии фильтра
  4. filterlist[0] = new TypedValue(8, "KKK*");
  5. // Создаем сам фильтр
  6. SelectionFilter filter = new SelectionFilter(filterlist);
  7. // Выборка
  8. var selection = ed.GetSelection(filter);
  9. if (selection.Status != PromptStatus.OK) return;
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #38 : 16-08-2017, 00:09:35 »
nolte
А зачем тебе ключевое слово ":D" понадобилось?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #39 : 16-08-2017, 00:20:55 »
":D" не принципиально, а переменная фильтра то что доктор прописал. смысл был в том, чтобы при формировании набора указать неполное названия слоя. Спасибо.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #40 : 25-08-2017, 00:23:22 »
вот и еще вопрос организационный.
плагины на .net ну очень зависят от версий ОС и автокада.
имеется у товарища автокад 2015 у меня 2014. Хотелось бы проверить то чего навоял прежде передать функцию для пользования.
Дык вот в связи с этим вопрос автокад прога платная и не дешевая где и как можно взять различные версии автокада и соответственно VS. не покупать же.
Лень - двигатель прогресса.

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
Re: От полного нуля до ...
« Ответ #41 : 25-08-2017, 06:45:15 »
можно trial поставить, а так - ADN
Цитировать
Предоставление девелоперских лицензий на продукты Autodesk с открытым API для разработки, поддержки и демонстрации своих программных продуктов.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Re: От полного нуля до ...
« Ответ #42 : 25-08-2017, 07:16:13 »
можно trial поставить, а так - ADN
Цитировать
Предоставление девелоперских лицензий на продукты Autodesk с открытым API для разработки, поддержки и демонстрации своих программных продуктов.
Но по лицензии ADN ни 2014, ни 2015 уже не поставить.
---
Добавлено: насчет 2015 могу ошибаться, но 2014 точно уже в пролете.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #43 : 25-08-2017, 11:23:46 »
и как жить дальше? ;D
Лень - двигатель прогресса.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: От полного нуля до ...
« Ответ #44 : 25-08-2017, 14:25:06 »
и как жить дальше?
как и все, отлаживать на виртуалке с триальным автокадом.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #45 : 25-08-2017, 14:32:15 »
плагины на .net ну очень зависят от версий ОС и автокада.
Это смотря как сделать. Я пишу под 2014 версию и без перекомпиляции работает в версиях 2014-2018.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #46 : 25-08-2017, 14:58:35 »
Цитировать
Я пишу под 2014 версию и без перекомпиляции работает в версиях 2014-2018.
мои творения дальше моего компа не ходили пока что. И попробовать не было возможности.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #47 : 31-08-2017, 07:48:34 »
уважаемые знатоки. назрел очередной вопрос. Как программно начертить полилинию как это делает автокад т.е.
начальная точка(мышью), резинка, вершина, отрисовка сегмента, резинка, указание мышью следующей вершины и т.д....
отключение esc, space, enter.
вот придумал малость, но явно костыль. Отключение только клавишей esc. в ПСК отключение глючит, но в остальном работает исправно, но осюсение нехорошее от кода все таки есть.
Код - C# [Выбрать]
  1.        public static ObjectId LCPolyline()
  2.         {
  3.             //Point2dCollection pts = new Point2dCollection();
  4.             Point3d pt;
  5.             int numvertex = 0;
  6.             PromptPointResult ppr;
  7.             PromptPointOptions ppo = new PromptPointOptions("");
  8.             ppo.Message = "\nEnter start vertex :";
  9.             ppr = ed.GetPoint(ppo);
  10.             if (System.Convert.ToInt32(Application.GetSystemVariable("WORLDUCS")) == 1)
  11.                 pt = ppr.Value;
  12.             else
  13.                 pt = ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem);
  14.             //pts.Add(new Point2d(pt.X, pt.Y));
  15.             Point2d pt0 = new Point2d(pt.X, pt.Y);
  16.  
  17.             while (!pt.Equals(new Point3d(0, 0, 0)))
  18.             {
  19.                 using (Transaction tr = db.TransactionManager.StartTransaction())
  20.                 {
  21.                     BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  22.                     BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite)
  23.                         as BlockTableRecord;
  24.  
  25.                     numvertex = ++numvertex;
  26.                     ppo = new PromptPointOptions("");
  27.                     ppo.Message = "\nEnter next vertex :";
  28.                     ppo.UseBasePoint = true;
  29.                     ppo.BasePoint = ppr.Value;
  30.                     ppr = ed.GetPoint(ppo);
  31.                     if (System.Convert.ToInt32(Application.GetSystemVariable("WORLDUCS")) == 1)
  32.                         pt = ppr.Value;
  33.                     else
  34.                         pt = ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem);
  35.                     if (!pt.Equals(new Point3d(0, 0, 0)))
  36.                     {
  37.                         if (numvertex == 1)
  38.                         {
  39.                             using (Polyline pl = new Polyline())
  40.                             {
  41.                                 pl.AddVertexAt(0, pt0, 0, 0, 0);
  42.                                 pl.AddVertexAt(numvertex, new Point2d(pt.X, pt.Y), 0, 0, 0);
  43.                                 btr.AppendEntity(pl);
  44.                                 tr.AddNewlyCreatedDBObject(pl, true);
  45.                                 ObjId = pl.ObjectId;
  46.                             }
  47.                         }
  48.                         else
  49.                         {
  50.                             Polyline pl = tr.GetObject(ObjId, OpenMode.ForWrite) as Polyline;
  51.                             pl.AddVertexAt(numvertex, new Point2d(pt.X, pt.Y), 0, 0, 0);
  52.                         }
  53.                     }
  54.                     tr.Commit();
  55.                 }
  56.             }
  57.             return ObjId;
  58.         }
Лень - двигатель прогресса.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #49 : 01-09-2017, 14:16:54 »
Владимир Шу, спасибо все получилось.
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #50 : 01-09-2017, 14:35:23 »
nolte
В дальнейшем "Один вопрос - одна тема". Здесь уже каша из совершенно разных вопросов/тем.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #51 : 02-09-2017, 19:08:53 »
Эту тему я закрываю, чтобы не было больше желания и возможности нарушать правила форума.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение