Книга посвящена вопросам разработки приложений, работающих в системе AutoCAD версий 2013-2015, и их отличиям от предыдущих версий. Рассмотрены необходимые продукты Microsoft Visual Studio 2010-2013, Microsoft Visual Basic 7.1, библиотеки ObjectARX 2013-2015, AutoCAD .NET API 2013-2015. В книге описан также механизм проектирования интеллектуальных объектов (custom objects), которые становятся новыми примитивами AutoCAD. Книга разделена на 6 глав: 1. Языки программирования и объектная модель (http://www.private.peterlink.ru/poleshchuk/cad/2014/book34-1.htm) 2. C++ и ObjectARX (http://www.private.peterlink.ru/poleshchuk/cad/2014/book34-2.htm) 3. Интеллектуальные объекты (http://www.private.peterlink.ru/poleshchuk/cad/2014/book34-3.htm) 4. .NET и плагины (C#) (http://www.private.peterlink.ru/poleshchuk/cad/2014/book34-4.htm) 5. AutoLISP и DCL (http://www.private.peterlink.ru/poleshchuk/cad/2014/book34-5.htm) 6. VBA (http://www.private.peterlink.ru/poleshchuk/cad/2014/book34-6.htm) По ссылкам доступно содержание всех глав. |
Во вторых, основываясь на своём личном практическом опыте написания .NETЕсли используются сборки AutoCAD (без позднего связывания и Reflection), то требуется раздельная компиляция при использовании сборок Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll (т.е. оберток для ActiveX/COM-интерфейса AutoCAD).
расширений под AutoCAD, могу сказать, что всё обстоит с точностью до наоборот:
чаще всего вариант AnyCPU работает нормально. С действительной потребностью в
компиляции кода отдельно под x86 и отдельно под x64 я сталкивался, но происходило
это не часто.
Для написания кода и компиляции можноА теперь еще и Visual Studio 2013 Community, которая по основным параметрам эквивалентна Visual Studio Pro. Но когда Николай Николаевич сдавал книгу в печать я думаю об этой версии Visual Studio еще ничего не было известно. Там нужно внимательно изучить лицензионное соглашение для этой версии: http://www.visualstudio.com/products/visual-studio-community-vs
использовать в т.ч. и Visual Studio Express однако, насколько я помню, там есть
какие-то ограничения на отладку (не проверял, т.к. никогда не использовал этот
вариант IDE).
Практика показывает, что по умолчанию использование фиберовЭто нас всех ввел в заблуждение Киан Уомсли в своём блоге. Потом он исправился: http://through-the-interface.typepad.com/through_the_interface/2014/03/autocad-2015-for-developers.html
отключено, но может быть включено при необходимости. Процитирую А.Н. Ривилиса:
>Хотя нормально 2015 работает только с FIBERWORLD == 0
За подробностями к нему.
Update:
It turns out NEXTFIBERWORLD/FIBERWORLD are still usable – primarily for QA purposes, in case issues with fiber removal require verification – so the code paths for using fibers are still there, just inactive by default. I’d recommend against switching fibers back on unless it’s to help diagnose and report an issue, though. Thanks to Stephen Preston for checking on this. :-)
Если используются сборки AutoCAD (без позднего связывания и Reflection), то требуется раздельная компиляция при использовании сборок Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll (т.е. оберток для ActiveX/COM-интерфейса AutoCAD).Я обращаюсь к функционалу обозначенных библиотек лишь тогда, когда искомый функционал не найден в AutoCAD .Net API. Как правило, в моём коде таких обращений не много. В подобных случаях я делаю выбор в пользу совместимости на уровне машинного кода и для достижения этого предпочитаю использовать позднее связывание.
Собственно говоря если хотя бы одна из сборок, используемая в нашей сборке не "Any CPU", то и наша сборка будет по факту не "Any CPU". Так что условие "Any CPU" для всех сборок есть необходимое, но не всегда достаточное.Компилируя под AutoCAD 2009 я подключаю DLL из каталога %ObjectARX 2009%\inc-x64 (т.е. из каталога конкретной целевой платформы) и компилирую проект как AnyCPU. Результат работает как в AutoCAD 2009 x64, так и в AutoCAD 2009 x86. Но если вместо AnyCPU я укажу конкретную платформу, то только под ней и будет работать.
P.S.: Кажется мы отошли от темы обсуждения. :)я так не думаю. Корректность\точность опубликованных замечаний так же обсуждаема, потому как мало ли чего я там в замечаниях напишу (ну, или А.Н. Ривилис оЧепятается ;))...
Нда... Заказал книгу неделю назад, до сих пор идетЯ когда книгу по почте отправлял, она ещё в СПб в течении 8-ми дней мусолилась Почтой России. Для сравнения: книги, которые я покупаю на Amazon.com, нередко доходят из США до Мск за три дня. Уже вся страна отлично знает, что такое Почта России ("Почта России" - и пусть весь мир подождёт...).
2-я порция замечанийСпасибо Андрею Бушману за внимательное прочтение. Есть вопросы – значит, требуются ответы или пояснения. Гораздо хуже было бы без вопросов, ведь тема не столь проста… За обнаруженные опечатки тоже спасибо. Книга писалась в первой половине 2014 года и вышла в сентябре, поэтому последние новости в нее не могли попасть.
Во первых оЧепятка. Поскольку это обзор, то раз уж речь заходит об AutoLISP иСтатья о Петровых интересная, я даже испытываю гордость за наших, но она (статья) вышла, когда книга уже ехала в типографию.
Visual LISP - не лишним было бы упомянуть о Петровых (можно глянуть здесь:
http://habrahabr.ru/company/nanosoft/blog/234221/ ). Эта информация в "обзоре"
была бы намного интересней чем то, что сейчас размещено на стр. 16-18 (которые
перелистываются не будучи прочитанными).
Ситуацию несколько спасает слово "обычно", оставляя некоторый путь к отступлению...Замечание правильное. Я ограничился средой VS и теми IDE, что предоставляет Autodesk.
А теперь представьте, что прочитавший это пользователь пишет не на C++, как это
ни странно, но на .NET. Будет ли для него верно данное заявление? Нет, не будет.
Для использования .NET API можно использовать любую IDE, способную работать с
той версией .NET Framework, которая может быть использована в целевой версии
AutoCAD. Например можно использовать такие бесплатные аналоги: Sharpdevelop (
http://www.icsharpcode.net/opensource/sd/ ) или Monodevelop (
http://www.monodevelop.com/ ). Для написания кода и компиляции можно
использовать в т.ч. и Visual Studio Express однако, насколько я помню, там есть
какие-то ограничения на отладку (не проверял, т.к. никогда не использовал этот
вариант IDE).
> Отдельно от системы AutoCAD распространяется пакет ObjectARX...О бесплатности см. стр.25. Согласен, что стоило выйти за рамки темы 2013-2015 и на стр.25 дать ссылку на загрузки от Александра Ривилиса – это уникальная возможность доступа к предыдущим версиям. Интересно что на ObjectARX есть лицензионное соглашение ( www.objectarx.com ).
*******************************
Неплохо было бы уточнить, что во первых, распространяется он бесплатно, а во
вторых - что официально Autodesk в открытый доступ выкладывает версии SDK только
для последних трёх версий AutoCAD. Более старые версии SDK, с разрешения
Autodesk, А.Н. Ривилис выкладывает на странице
http://adn-cis.org/forum/index.php?topic=61.0
> Для работы с другими языками обычно требуются приобретение и установка средыЯ имел в виду не только AutoCAD. Думаю, что компания Microsoft со мной согласна. :)
разработки Microsoft Visual Studio (версия Visual Studio зависит от версии
AutoCAD).
*******************************
Я бы воздержался от столь категоричных заявлений. А если их давать, то неплохо
было бы сослаться на результаты какого-нибудь отчёта по данному вопросу,
составленного авторитетной компанией. Если же в данном предложении речь идёт
о программировании именно под AutoCAD - то это стоило бы уточнить (я понял это так,
что автор имеет в виду программирование в целом).
> VBA в основном работает через объектную модель AutoCAD.По традиции имеется в виду главная модель типа COM, доступная на всех языках, на которых пишутся приложения для AutoCAD. Из восьми TLB-файлов, поставляемых в папках ObjectARX 2015\inc-win32 (inc-x64), этой объектной модели соответствует файл axdb20enu.tlb.
*******************************
Несколько неточное предложение. В AutoCAD существует несколько объектных моделей:
ObjectARX, AutoCAD .NET API и COM. Насколько мне известно, VBA в AutoCAD
использует COM.
В Петербурге можно купить в Доме книги за 882 руб., в Москве в Доме книги - за 1045 руб.
Через OZON с доставкой к месту выдачи (не Москва) - 740 ррВ Питере, 558 р книга и 49 р доставка, по крайней мере именно такое уведомление свалилось мне на почту...
> а если нужна связка языков, то лучше всего себя зарекомендовала пара C++-LISP.Здесь имеется в виду связка сильного языка (C++) с более слабым (LISP) языком. Языки .NET все-таки относятся к сильным, самодостаточным языкам (с большими возможностями GUI).
*******************************
На мой взгляд это несколько субъективное мнение, моё отличается от обозначенного.
LISP функции в AutoCAD можно создавать в т.ч. и с помощью .NET. Помним, что .NET API в
AutoCAD сейчас активно развивается, чего к сожалению нельзя сказать о AutoLISP и
Visual LISP. Платформа .NET позволяет писать код на любом .NET языке, причём
этот код бесшовно стыкуется между собой. Можно писать базовые классы на одном
языке и наследоваться от них на другом. Т.о. говоря о связке, на мой взгляд
первое место занимает managed C++ совместно с любым .NET языком или даже их группой.
> Система AutoCAD разработана с учётом концепции COM...Имел в виду, что много операций (но не все) можно выполнить, используя COM-интерфейс, которого теоретически разработчики могли бы и не предоставить. На COM держится VBA.
*******************************
Как-то слово "концепция" в данном контексте, на мой взгляд ни к месту... "AutoCAD
имеет COM интерфейс для работы с ним из внешних приложений" - мне кажется, что так
было бы более корректно. Кроме того, не стоит забывать, что в комплект AutoCAD,
начиная с версии 2013, помимо acad.exe входит и accoreconsole.exe, который [к
сожалению] не имеет COM интерфейса.
> В табл. 1.1. приведён перечень объектов и коллекций.Здесь мне нужны были только объекты, которыми оперирует COM-сервер AutoCAD.Application, доступный из многих языков. Файл classmap.dwg нужен только для C++.
*******************************
В том виде, в каком это представлено, данная информация не представляет никакого
интереса (во всяком случае для меня). Страницы 16, 17 и 18 просто перелистываются
не будучи прочитанными. Если уж и размещать информацию о класса, то в древовидном
представлении, как это сделано в файле classmap.dwg, входящем в состав ObjectARX
SDK. Такую иерархическую структуру было бы интересно просмотреть, а так получается,
что потеряно три страницы, тем более, что см. цитату в след. замечании:
> В таблицу не внесены объекты и семейства, связанные с подшивками и операЦИМИСапсибо. :)
связи с базами данных.
*******************************
оЧепятка + смотрим предыдущее замечание в комплексе.
> Такие компоненты объектной модели, как интерфейсы, не все обладают свойствами.COM.
*******************************
Выше в замечаниях я уже писал, что объектные модели бывают разными. Предполагаю,
что в данном случае автор имеет в виду COM. Соответственно следует чётко
обозначать целевую объектную модель.
> Все разбираемые в следующих главах системы программирования дают возможностьСогласен. Точнее “упомянутую объектную модель”.
использовать рассмотренную объектную модель с помощью COM(ActiveX).
*******************************
Всё то же замечание об отсутствии уточнения, о какой объектной модели речь. Кроме
того, я бы не сказал, что тот материал, который предшествовал данному предложению,
можно честно называть "рассмотренной объектной моделью". Наличие таблицы с именами
классов, занимающей три страницы, совместно с парой-тройкой последующих общих
предложений, вляд ли можно считать "рассмотрением".
> В системе AutoCAD прекращена поддержка fibers (волокон потоков Windows).Полагаю, что эту тему лучше не трогать. Autodesk в ряде сообщений объявил о прекращении поддержки “фибров”, но, видимо, что-то пошло не так…
*******************************
Разве так уж и прекращена? Практика показывает, что по умолчанию использование фиберов
отключено, но может быть включено при необходимости. Процитирую А.Н. Ривилиса:
>Хотя нормально 2015 работает только с FIBERWORLD == 0
За подробностями к нему (так же читаем это http://adn-cis.org/forum/index.php?topic=647 ).
Неплохо было бы пояснить читателю, что такое "волокна потока". Много места такое
пояснение не займёт и будет полезным.
Файл classmap.dwg нужен только для C++.Не только. В нём так же обозначена следующая информация:
Полагаю, что эту тему лучше не трогать.На мой взгляд общую информацию об этом лучше дать, т.к. иногда проблемы, с которыми сталкиваются программисты, связаны именно с фиберами. На данном сайте можно найти такие темы.
Насчет classmap.dwg согласен. Я не обратил внимание, что в последних версиях этот файл расширился.Файл classmap.dwg нужен только для C++.Не только. В нём так же обозначена следующая информация:
1. Какие неуправляемые классы имеют управляемую оболочку (представляет интерес для .Net программистов).
2. Иерархическая структура классов AutoCAD .Net API (представляет интерес для .Net программистов).
3. Иерархическая структура объектной модели ActiveX (представляет интерес для программистов VBA, а так же тех, кто планирует работать с AutoCAD из внешних приложений посредством COM).
Я не обратил внимание, что в последних версиях этот файл расширился.Иерархическая структура классов AutoCAD .Net API присутствует в обозначенном файле ещё со времён AutoCAD 2009 (возможно и в более ранних версиях, но у меня их нет под рукой). Просто я помню, что когда-то смотрел структуру .Net-классов в этом файле именно в AutoCAD 2009.
JavaScript API нетЛови. Я не вижу смысла смотреть в сторону JavaScript API. Во всяком случае в том состоянии, в каком оно сейчас имеется.
offtop: Кто бы выложил classmap.dwg, а то качать весь SDK - нет желания...
> Разрабатывая приложение под какую-то версию AutoCAD определённой разрядности,Под совместимостью я имею в виду совместимость на уровне исполняемых файлов (т.е. машинного кода). Вопросы минимизации поддержки исходного кода для разных версий у меня называются “проблемой единого кода”, они рассматриваются на стр. 52 и 194.
автор хотел бы знать, сможет ли его приложение без переделки правильно
функционировать в другой разрядности, а так же в другой версии.
*******************************
Насколько я понимаю, "без переделки" следует обособить запятыми. Разработка
приложений под AutoCAD ведётся абстрагированно от его разрядности. Один и тот же
исходный код компилируется под win32\x64, в случае native C++, либо под AnyCPU в
.NET. Если ограничиться AnyCPU не удаётся, то вместо неё собираются x86 и x64.
Говоря о совместимости, нужно чётко различать понятие "совместимости на уровне
исходного кода" от понятия "совместимости на уровне машинного кода" (т.е.
скомпилированного результата). Т.о. "переделки" - они бывают разными: одно дело,
когда один и тот же код нужно просто пересобрать, создав новый файл проекта, включив
в него существующие исходники посредством "Add as Link", а так же указав в его
настройках иные ссылки на внешние зависимости. Но совсем другое дело, когда
непосредственно в исходный код нужно вносить дополнительные изменения.
На стр. 22, в абзаце "Язык C++" автор пишет о совместимости на уровне машинного
кода.
> Платформа .NET (C# и др.) Здесь всё зависит от номера версии целевой платформыЦелевая платформа – это платформа, указываемая в настройках проекта. Она должна учитывать платформу, используемую той версией AutoCAD, для которой создается приложение.
.Net Framework, использованной при построении.
*******************************
Этой фразы я не понял. Использованной при построении чего? Предполагаю, что речь
идёт о компиляции самого AutoCAD, но автору лучше бы уточнить это.
> Если платформа проекта была AnyCPU, то не очень сложные приложения смогутС "индивидуальной версией расширения для каждой версии AutoCAD" согласен.
работать как в 32-bit, так и в 64-bit. Но чаще всего придётся собирать
индивидуальную версию для каждой версии и для каждой разрядности. См. главу 4.
*******************************
Во первых, неплохо было бы в тексте уточнить так: "индивидуальную версию
расширения для каждой версии AutoCAD", а то получается двусмысленность "версия-
версия". Во вторых, основываясь на своём личном практическом опыте написания .NET
расширений под AutoCAD, могу сказать, что всё обстоит с точностью до наоборот:
чаще всего вариант AnyCPU работает нормально. С действительной потребностью в
компиляции кода отдельно под x86 и отдельно под x64 я сталкивался, но происходило
это не часто. Причём я бы не сказал, что всё то, что мною компилировалось как
AnyCPU было "не очень сложным приложением"... Вообще, понятие "сложности" - оно
несколько относительно: то, что одному кажется простым, другому может показаться
сложным и наоборот.
> Для 32-разрядных версий AutoCAD до 2013, собранных в VBA 6, совместимость есть.Да, речь идет о совместимости на уровне машинного кода.
*******************************
Предполагаю, что речь идёт о совместимости на уровне машинного кода. Следовало
бы уточнять это в тексте, чтобы пользователь понимал, о какой именно совместимости
говорится.
то если ссылаться на любую из 4 сборок в папке ObjectARX 2015\inc-win32 (inc-x64),О каких сборках речь?
AcAxDb20res.dll, AdUiPalettes.dll, Autodesk.AutoCAD.Interop.dll, Autodesk.AutoCAD.Interop.Common.dllЯсно. Нет, когда я писал об AnyCPU, то подразумевал AcDbMgd, AcMgd, AcCoreMgd, поскольку чаще всего мне их достаточно (в старых версиях акада они находятся в inc-win32 и inc-x64, вместо inc). Недостающий функционал вытягиваю через позднее связывание.
Autodesk в ряде сообщений объявил о прекращении поддержки “фибров”, но, видимо, что-то пошло не так…Думаю, что возможность использования FIBERLESS != 0 в AutoCAD 2015 - это атавизм, оставленный лишь на всякий случай и в следующей версии такой возможности уже не будет.
Надуюсь поможетГлавное - не сильно надуваться, а то так и лопнуть можно. :)
Приедет книга ко мне в Минск в понедельник.
Сказали бы сразу, что все статьи по С# - бумажный вариант сайтов АндреяЯ так понял, что книга доехала... :) В главе по .NET не весь материал мой - кое-что и от Николая Николаевича присутствует. Кроме того, насколько я помню, он местами вносил авторские правки в мой материал, дабы изложение было более последовательным и плавным (в блоге ведь это в виде отдельных, почти не связанных друг с другом заметок).
(получил книгу, пробежал глазом)
VBA для старта - самая оптимальная средаСубъективное мнение. Если тебе чего-то нехватает в главе по VBA, то выдавай конкретные пожелания того, чего бы тебе хотелось там найти. Это позволит автору в будущем, если будет переиздание книги, улучшить её исходный вариант за счёт добавления материала с подробным рассмотрением тем, запрошенных читателями. Книга, в конце-концов не резиновая, да и издательство накладывает чёткое ограничение на количество страниц и на сроки. Так что автору приходилось чем-то жертвовать, чтобы уложиться в очерченные рамки. На мой взгляд, оптимальным решением было бы отделение мух от котлет: каждому языку отдельная книга. По лиспу Николай Николаевич написал отличный справочник. Возможно следующей книгой по этому языку была бы кстати книга в стиле "Практика программирования на AutoLisp\Visual Lisp в AutoCAD". Аналогично в отдельные книжки лучше было бы заворачивать ARX, .NET и VBA. Но это в идеале и требует значительных усилий, а поскольку эти усилия не стоят текущего спроса, то вряд ли сие будет реализовано (ну разве что Autodesk возьмётся профинансировать работу автора).
разве что Autodesk профинансируетНа сцене ожидается выход Ярослава Решетникова, дабы разрешить обозначенную паузу... :)
Именно оно(издательство) настояло на включении главы по VBAЧтобы увеличить число потенциальных покупателей, все правильно...
Рекомендуемой и почти обязательной средой разработки является Microsoft Visual Studio (VS) Professional.
Основное окно Solution01-Microsoft Visual Studio(Администратор)...
В наши дни нет оправдания тем, кто не использует принцип наименьших привилегий, так как все должны входить в системы под учётной записью стандартных пользователей. Чтобы использовать принцип наименьших привилегий, следуйте двум правилам:
1. Не запрашивайте большего уровня доступа к ресурсам, чем необходимо.
2. Создавайте файлы и разделы реестра там, где стандартные пользователи могут их изменить.
Разработчикам, создающим коммерческие версии своих продуктов, необходимо компилировать и собирать проекты под обе платформы (они несовместимы друг с другом).
Параметр Конечное расширение (Target Extension) необходимо заменить на .arx (по умолчанию - .dll), так как это обязательно для ARX-приложений...
... создаваемые файлы приложения будут накрывать друг друга.Накрывать чем, медным тазом? :) Мне кажется слово "перезапись" было бы более к месту.
Представляет интерес параметр Набор инструментов платформы (Platform Toolset). Это номер версии используемого компилятора. Обычное значение - v100 (соответствует версии 10 компилятора, необходимого для ObjectARX2013-2014).
Если вы посмотрите параметр Свойства конфигурации => С/С++ => ...
Примечание. Предлагаемые в примере настройки не работают в VS 2012 и ObjectARX 2015.
Теперь к проекту необходимо добавить файл определений имён функций, экспортируемых из DLL (такой файл должен быть с расширением .def).
Because there is no standard specification for name decoration, the name of an exported function might change between compiler versions.Насколько мне известно, такой стандарт существует (https://mentorembedded.github.io/cxx-abi/abi.html#mangling). Там же указаны и те, кто участвовал в его разработке:
This document was developed jointly by an informal industry coalition consisting of (in alphabetical order) CodeSourcery, Compaq, EDG, HP, IBM, Intel, Red Hat, and SGI. Additional contributions were provided by a variety of individuals.
Пользователю действительно не удастся загрузить ARX приложение, имеющее произвольное расширение, при помощи диалогового окна Load\Unload Applications. Это обусловлено тем, что в настройках этого окна установлены фильтры на расширения отображаемых файлов.Вообще-то и в этом окне можно выбрать файлы с другим расширением. Достаточно в строке "Имя файла" указать что-нибудь типа *.* и нажать Загрузка (Load). Только AutoCAD не поймёт как его грузить. Кстати, кроме расширения arx может быть еще и crx и dbx. И грузить вне зависимости от расширения можно еще при помощи (arxload ...) в lisp, или DynamicLinker.LoadApp, или DynamicLinker.LoadModule, или HostApplicationServices.LoadApplication в AutoCAD .NET API
Можно использовать __declspec(dllexport):Возьму на вооружение, спасибо!
Здесь используются стандартные переменные платформы MSBuild, работающие в Visual Studio (переменные заключаются в круглые скобки и предваряются символом $).Не только стандартные (раз (https://msdn.microsoft.com/en-us/library/ms164309.aspx), два (https://msdn.microsoft.com/en-us/library/bb629394.aspx), три (https://msdn.microsoft.com/en-us/library/c02as0cs.aspx)), но и системные переменные Windows ($(AppData) и т.п.), а так же все пользовательские переменные Windows, определённые в диалоговом окне Переменные среды. Дополнительно существует возможность хранить набор переменных во внешних XML файлах и импортировать их (удобно при коллективной работе).
The type or namespace name 'TileMode' does not exist in the namespace 'Autodesk.AutoCAD.DatabaseServices' (are you missing an assembly reference?)Вручную я тоже такого метода не нашел в Db. Я что-то не так делаю, или это, действительно, ошибка?
Всего лишь ошибка в регистре...Точно! А ведь чувствовал, что "сам дурак", но так и не догадался в чем...
Не удалось найти ресурсы, соответствующие указанной культуре или нейтральной
культуре. Проверьте правильность внедрения или связывания
"Bushman.CAD.Samples.Commands.resources" со сборкой "ACAD11_test" во время
компиляции, или убедитесь, что все необходимые сопутствующие сборки полностью
подписаны и могут быть загружены.
Не удалось загрузить сборку. Сведения об ошибке:
System.Resources.MissingManifestResourceException: Не удалось найти ресурсы,
соответствующие указанной культуре или нейтральной культуре. Проверьте
правильность внедрения или связывания "Bushman.CAD.Samples.Commands.resources"
со сборкой "ACAD11_test" во время компиляции, или убедитесь, что все
необходимые сопутствующие сборки полностью подписаны и могут быть загружены.
в System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo
culture, Boolean createIfNotExists, Boolean tryParents)
в System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo
culture, Boolean createIfNotExists, Boolean tryParents)
в System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo
culture, Boolean createIfNotExists, Boolean tryParents)
в System.Resources.ResourceManager.GetString(String name, CultureInfo
culture)
в Autodesk.AutoCAD.Runtime.CommandClass.AddCommand(ICommandLineCallable ca,
MethodInfo mi)
в
Autodesk.AutoCAD.ApplicationServices.AutoCADApplicationHolder.Initialize(Assembl
y assembly)
в
Autodesk.AutoCAD.ApplicationServices.ExtensionLoader.ProcessAssembly(Assembly
assembly)
Не удалось найти ресурсы, соответствующие указанной культуре или нейтральной
культуре. Проверьте правильность внедрения или связывания
"Bushman.CAD.Samples.Commands.resources" со сборкой "ACAD11_test" во время
компиляции, или убедитесь, что все необходимые сопутствующие сборки полностью
подписаны и могут быть загружены.
а должно быть:Если разкоментировать в C:\Program Files\Autodesk\AutoCAD 2011\acad.exe.config строку <supportedRuntime version="v4.0"/>,
2011 - 3.5 (VS2005 и выше);
Я сначала не обратил внимания и промучился с .NET 4.0, пытаясь использовать его для AutoCAD 2011.
Если разкоментировать в C:\Program Files\Autodesk\AutoCAD 2011\acad.exe.config строку <supportedRuntime version="v4.0"/>,... то будет работать и с .NET 4.0:Хм... А зачем ее вообще в закомментированом виде поставляют, не знаешь?
Хм... А зачем ее вообще в закомментированом виде поставляют, не знаешь?Знаю. Когда вышел AutoCAD 2011 его не успели протестировать с .NET 4.0, который тоже только-только вышел. Так что во избежания проблем его поставляли с .NET 3.5 и настроенным на .NET 3.5
Кроме того, по обозначенной выше ссылке на мой блог дана некоторая информация об изменениях, которые произошли в API AutoCAD 2013.Какая ссылка имеется в виду?
Какая ссылка имеется в виду?http://bushman-andrey.blogspot.com/2014/04/net-autocad-net-framework-ms-visual.html
http://bushman-andrey.blogspot.com/2014/04/net-autocad-net-framework-ms-visual.htmlСпасибо! Идею понял, но, как говорится, "осадочек остался" - непонятно, почему один и тот же код скомпилированный с библиотеками, пусть с разной архитектурой, но с одинаковым, в части потребностей данного кода, содержанием, оказывается в одном случае работоспособным, а в другом - нет?
Спасибо! Идею понял, но, как говорится, "осадочек остался" - непонятно, почему один и тот же код скомпилированный с библиотеками, пусть с разной архитектурой, но с одинаковым, в части потребностей данного кода, содержанием, оказывается в одном случае работоспособным, а в другом - нет?Потому что ряд типов перекочевал в др. сборку. Скомпилированный тобою ранее код продолжает их искать "в старом месте", где их по факту уже нет. Поэтому требуется перекомпиляция с учётом "новых правил игры".
Сообщить модератору Записан
Балиев, не стоит все свои вопросы лепить в одну и ту же тему, которая создавалась для др. целей.100%
Эта тема посвящена обсуждению конкретной книги, а не обсуждению особенностей AutoCAD .NET API, .NET Framework и Visual Studio.ОК. Как скажете...
Вопрос как самым осведомленным (прошу прощения, что не по теме): на lisp-е можно сделать своё всплывающее сообщение как при отправке на печать (там ведь уведомления без паузы в работе функций)?Для этого есть отдельный раздел. Там и создай тему.
Для этого есть отдельный раздел.Спасибо! Попробую