1. Я так понял, что C# без вариантов или JS, Python - альтернатива?Будем считать, что для AutoCAD есть:
2. А где, собственно, можно сам API посмотреть? Обычно API открыт, а в данном случае я набираю "Autocad C# API" и мне вываливаются какие-то доклады с конференций и прочая не нужная инфа...Везде. Например, в ObjectARX SDK - там и документация и примеры и соответствующие сборки. Плохо искал.
3. Однозначно нужно использовать Visual Studio? Там, насколько я понял, под каждую версию AutoCAD своя версия ObectARX и своя версия VSНе путай ObjectARX (C++) и AutoCAD .NET API. Для AutoCAD .NET API не нужно менять версию VS.
Для AutoCAD .NET API не нужно менять версию VS.Я бы с VS, вообще, связываться не хотел. VS Code (https://docs.microsoft.com/ru-ru/dotnet/core/tutorials/with-visual-studio-code (https://docs.microsoft.com/ru-ru/dotnet/core/tutorials/with-visual-studio-code)).
let mText = getMTextAll();
mText.forEach(el=>{el.font='isocpeur'});
посмотрел в сторону LISP, но он совсем далек от того, к чему я привык - Си-подобные языкимне надо было в чертеже поменять у всех текстовых сносок шрифт, а изменение стиля ничего не дало - не знаю чего там архитектор делалStripMtext (https://forum.dwg.ru/showthread.php?t=24790)
Последнее время (2 года) увлекался программированием (JavaScript в основном)
посмотрел в сторону LISP, но он совсем далек от того, к чему я привыкЕсли абстрагироваться от синтаксиса, то мне JavaScript очень напомнил LISP - нет строгой типизации, много схожих функций, не нужна компиляция для запуска.
Подскажите, для чего программирование в AutoCAD, вообще, применяется?Если кратко - для всего, что в голову придёт. Автоматизация действий, добавление недостающего функционала, адаптация функционала под наши местные требования и т.д. и т.п.
А C# и VisualLisp соизмеримы по возможностям?C# имеет гораздо больше возможностей (даже в AutoCAD). Ну и плюсом - его можно использовать практически везде, VisualLisp - только в AutoCAD-based продуктах.
А можно ведь свою панельку разработать? Типа спдс, но свою, используя си шарп?Да.
Начал читать книгу Полищук Н.Н. "Программирование AutoCAD" и меня удивило, что нужно "даунгрейдить" даже какие-то версии VS - очень странно... Это до сих пор так?Если использовать ObjectARX (т.е. native или mixed C++), то действительно нужны определенные версии VS (для AutoCAD (Electrical) 2020 - VS 2017 с Update 3 (или больше)). Это специфика работы с native кодом для совместимости версии VC++ Runtime, ATL/MFC и т.д. AutoCAD и приложения.
Например, AutoCAD Electrical 2020, VS последняя - не сработаются? - даже не смешно.
Вот и получается, что C# вроде как более совместимый, но Си "проще" лично для меня.Да. Ищи PInvoke. Хотя сейчас различных API для C# очень много. Видимо просто плохо искал.
А можно их как-то скрещивать?
Существуют же где-то нормальная документация: типа иерархия объектов с методами и свойствами? (https://algs4.cs.princeton.edu/code/javadoc/ (https://algs4.cs.princeton.edu/code/javadoc/) -Документация чего? C# (и вообще .NET) или AutoCAD .NET API? Первое ищи на сайте Microsoft, второе в составе ObjectARX SDK.
вот это откуда берется?Это всё описано в My First Plugin: https://knowledge.autodesk.com/support/autocad/learn-explore/caas/simplecontent/content/my-first-autocad-plug-overview.html (https://knowledge.autodesk.com/support/autocad/learn-explore/caas/simplecontent/content/my-first-autocad-plug-overview.html)
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
как-то же эти библиотеки должны устанавливаться..
Глупо на C# реализовывать сортировку - она там уже есть, например List<T>.SortРечь шла про устойчивую сортировку (stable sort). Поэтому Enumerable.OrderBy (https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.orderby?redirectedfrom=MSDN&view=netframework-4.8#System_Linq_Enumerable_OrderBy__2_System_Collections_Generic_IEnumerable___0__System_Func___0___1__)
Начал читать книгу Полищук Н.Н. "Программирование AutoCAD" и меня удивило, что нужно "даунгрейдить" даже какие-то версии VS - очень странно...А что это за "мулька" с даунгрейдом? Можно цитату из книжки "в студию", плиз? Разве AutoCAD Electrical имеет принципиальные отличия от AutoCAD Vanilla?
Разве AutoCAD Electrical имеет принципиальные отличия от AutoCAD Vanilla?Нет.
А что это за "мулька" с даунгрейдом?Думаю, что имеется в виду тот факт, что для AutoCAD чаще всего требуется не последняя версия VS для ObjectARX. Впрочем при покупке VS Professional можно пользоваться предыдущими версиями в случае стандартной подписки: https://visualstudio.microsoft.com/ru/vs/pricing-details/#tab-a36ac8e7302c4a4bdea
Думаю, что имеется в виду тот факт, что для AutoCAD чаще всего требуется не последняя версия VS.Ну эта тема не нова здесь на форуме. И как уже неоднократно обсуждалось, что при апгрейдах, в рамках одной студии, каких-то катастроф не наблюдалось. Или я что-то пропустил?
И как уже неоднократно обсуждалось, что при апгрейдах, в рамках одной студии, каких-то катастроф не наблюдалось.Что ты имеешь в виду под "апгрейдами, в рамках одной студии"? Например обновления VS 2015 Update 1, Update 2 и т.д.? Тогда речь здесь идёт не об этом. Речь шла о покупке VS таким образом, чтобы можно было использовать не только последнюю версию (на данный момент VS 2019), но и как минимум одну (а лучше две) предыдущую (VS 2017 и VS 2015).
Например обновления VS 2015 Update 1, Update 2 и т.д.?Да, конечно же.
Речь шла о покупке VS ...Ну тогда за сказанное посыпаю голову пеплом.
1. Где берется ObjectARX? (https://www.autodesk.ru/autodesk-developer-network/software-platform-russian/develop-autocad - здесь ссылка на ObjectARX битая. www.objectarx.com - тоже не работает)Ищите здесь:
Всё-таки, для меня не понятна концепция какой-то одной строго определенной версии VS.На уровне исходного кода - как правило да, а на уровне двоичного - нет.
Как правило, соблюдается совместимость сверху вниз.
Всё-таки, для меня не понятна концепция какой-то одной строго определенной версии VS.Полагаю, что в книжке Полищука (которую Вы, вроде бы, читали(ете)) данная теза должна быть "разжёвана" обстоятельно. Хотя тут и без книжек всё, вроде бы, выглядит логично и понятно: раз плагин (а это есть dll) заливает себя в адресное пространство AutoCAD'а, то, соответственно, данная dll должна быть максимально совместима с его бинарным кодом. И если этот код скомпилирован, положим, на VC2012 Update 2, то и Ваш плагин должен быть собран на этой же платформе... Логика есть?
получается, что компилятор от версии к версии несовместим?Да. И не только компилятор, но и линкер. А главное отличается VC++ Runtime и ATL/MFC (т.е. набор используемых dll-файлов) используемых в AutoCAD и требующихся в ObjectARX, которые разные и между собой не совместимые. Например, если выделить память используя malloc() из VC++ Runtime v120, а освободить при помощи free() из VC++ Runtime v140, то приложение завершится с Fatal Error.
Тогда бы заметили транспайлер как у js - пишешь на любой версии и любом стандарте, а на выходе получаешь код под нужной версии.Ты не путай компилированный в машинные команды код arx-приложения (фактически dll-файл) с интерпретатором. Тебе бы еще изучить Win32 SDK - основы программирования для Windows и тогда поймёшь в чем проблема...
Посмотрел я код на полюсах разработчиков автокад - мрак полный! Какие-то имена переменных, извините, уродл ивые : AcDt, AcDrGh. ...Ты не обратил внимание, что это не имена переменных, а имена классов и что ты их все переврал?
Ты не обратил внимание, что это не имена переменных, а имена классов и что ты их все переврал?
... (не надо С++ учить, в отличие от С#).
Шарп более гуманно выглядитон вообще более гуманый, даже сообщение об ошибке часто содержит адрес строки ;)
Вы хотите сказатьЧем класс отличается от переменной?? Переменная типа класс - в чем проблема-то?
что Luca не может отличить классы от переменных?! Отказываюсь в это верить, ибо:
Переврал это был прием стилистический и реальные имена ничем не отличаются от того, что я написал (стилистически).Если бы ты не поленился вникнуть в суть имён, то понял бы что и "стилистически" имена очень сильно отличаются от тех, которые используют в Autodesk.
говорите я оффтоплю ))Я не говорил, что ты оффтопишь. Я предупреждал, что в разделе ObjectARX оффтоп недопустим, в отличие от этого раздела. И я буду за него наказывать.
Debalance - вот человек-оффтоп: ни одного замечания по сути.
Debalance,
можно к Вам обратится не вступать со мной в дискуссию и в моих темах ничего не писать? Спасибо.
Чем класс отличается от переменной?? Переменная типа класс - в чем проблема-то?Ты вообще про C++? Тогда тебе нужно вернуться и перечитать Бьёрна Страуструпа.
Я Вам больше даже скажу: они лежат в памяти в одной и той же и выглядят идентично.
Ты вообще про C++? Тогда тебе нужно вернуться и перечитать Бьёрна Страуструпа.извините, но Страуструп здесь не при чем...
Ты конечно можешь попросить Debalance не участвоватья уже попросил.
извините, но Страуструп здесь не при чем...Ты ушел в полную абстракцию. Мы же здесь говорим о более приземлённых и реальных вещах.
есть такая базовая вещь, сформулированный группой ученых, которую огласил фон Нейман, как "Принцип однородности памяти":
"Команды и данные хранятся в одной и той же памяти и внешне в памяти неразличимы."
Просто класс - такая же структура, те "составная" переменная.Ты путаешь класс и экземпляр класса. Это разные вещи.
надо тему закрывать - далеко ушла от автокада ))Ты создал тему в разделе Разное. Здесь можно уходить от AutoCAD... :)
Я так понимаю, что когда я пытаюсь создать новый проект, то у меня должна появляться что-то типа AutoCAD CSharp plugin, а такой возможности нет.- Почему?Должно быть вот так:
Хотел установить ObjectARX Wizard 2020RDS Symbols уже не используются очень давно - просто не заполняй это поле, а если оно заполнено - сотри. Аналогично его обязательно устанавливать с правами Администратора и отключенным UAC.
Но он просит RDS Symbols.
Что за RDS Symbols и как его получить? Ссылка, которая указана autodesk.com/objectarx ведет на https://www.autodesk.com/?siteID=123112&id=773204
Общий вопрос:Это как ты себе представляешь? Можно написать программу (C++/C#), которая создаст такой блок, таблицу и т.д.
А можно имея какой-то блок, таблицу и пр. получить его аналог на C# или C++ ?
Это как ты себе представляешь? Можно написать программу (C++/C#), которая создаст такой блок, таблицу и т.д.может в нугет есть такой пакет уже
Ты действительно не понимаешь, что такое программировать для AutoCAD. Напиши хотя-бы простейшую программу, которая нарисует в AutoCAD окружность с заданными параметрами (центр, радиус, цвет, слой, тип линии...). Может быть тогда начнёшь понимать, что можно, а что нельзя...Это как ты себе представляешь? Можно написать программу (C++/C#), которая создаст такой блок, таблицу и т.д.может в нугет есть такой пакет уже
Ты действительно не понимаешь, что такое программировать для AutoCAD. Напиши хотя-бы простейшую программу, которая нарисует в AutoCAD окружность с заданными параметрами (центр, радиус, цвет, слой, тип линии...). Может быть тогда начнёшь понимать, что можно, а что нельзя...люди компиляторы пишут :) это типа компилятор, а если серьёзно, то понятно. нет, так нет - я так и думал. просто, полагал, что для каждой операции делали обратную и тогда обратно можно было бы вернуть, к истокам, к коду. в общем понятно.
то понятно. нет, так нет - я так и думал. просто, полагал, что для каждой операции делали обратную и тогда обратно можно было бы вернуть, к истокам, к коду. в общем понятно.ничего то ты не понял
... Напиши хотя-бы простейшую программу, которая нарисует в AutoCAD окружность с заданными параметрамиЗачем так примитивно? Надо переходить на шаг №2 - начинать с проекта "Хеллоу Ворлд!".
почитайОтличная статья, trir! Есть что-нибудь в Вашем исполнении по-свежее? Перед сном почитаю...
the nurbs bookА есть ли у Вас что-то более прикладное? Например, какая-нибудь мощная бесплатная библиотека для работы со сплайнами?