|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Судя по переписке с обозначенного форума Сеньор Менеджер там поначалу накосячил с освобождением объектов. Потом исправлял. Видать это больное место .NET, а .NET под автокад - в особенности. Микрософт велит для детерминированного освобождения native-ресурсов, стоящих за .NET классами-оболочками юзать паттерн Dispose. Применительно к автокаду - это если ума хватит. Где, например, в документации ObjectArx AutoCAD Managed Class Reference сказано, что класс Transaction реализует IDisposable. Я не нашел. Поправьте, если ошибаюсь. Фраза, типа "you must actively call Dispose on the managed wrappers" меня в принципе не устраивает. Что, я должен ко всему подряд применять Dispose() или хватит через раз. Ладно, с Transaction - кто то первый догадался и рассказал всем. А как быть с морем других классов. В конце концов есть же MSDN - образец того, как подобает документировать библиотеки классов. Что, автодеску западло было сделать нормальную документацию по образу и подобию.
Не знаю, "на каком языке удобнее всего" , но надежнее и естественнее всего писать на С++. ObjectARX мощное и хорошо изученное "средство доступа" к AutoCAD. А ежели чего, то всегда есть у кого спросить . А вот UI и все остальное можно и нужно писать на .NET и связывать одно с другим либо через экспортируемые в документ внешние функции, либо используя С++/CLI и смешанный код. ИМХО.
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
|
|||||
Dispose - это не паттерн, а метод в составе интерфейса IDisposable.
Цитата:
Цитата:
В .Net API AutoCAD полно примеров, в которых класс Transaction инициализируется в блоке using. Учитывая это, любому программирующему на .Net даже без проверки становится ясно, что Transaction реализует IDisposable. То, что для неуправляемых объектов нужно вызывать Dispose - требование, о котором программисты .Net так же знают. Нужно только не забывать, что Dispose() следует вызывать только для тех объектов, которые ты создал сам и НЕ вызывать его для объектов, созданных самим AutoCAD, а не твоим плагином (и это логично). В том же MSDN на эту тему полно информации, так что незачем воду мутить. "Нормальной" (в смысле такой же детальной как ObjectARX) документации по .Net пока нет, однако при желании можно читать ObjectARX - проблем в понимании не возникает. В случае отсутствия управляемой оболочки под тот или иной класс всегда можно самому её написать - тоже не проблема. Цитата:
Эта библиотека собственно и является самим AutoCAD, его ядром, а не просто "средством". Цитата:
_____________________________________________________ п.с. ИМХО .Net давно рулит (за счет удобства, скорости разработки, богатого набора библиотек и наличия новых современных технологий таких как ADO.NET, WPF, LINQ) и будет рулить впредь. AutoCAD написан на неуправляемом С++ ранее, чем появился .Net Framework. У текущей реализации ядра AutoCAD есть такой минус, как отсутствие поддержки многопоточности, что является весьма неприятным моментом реализации ObjectARX. п.с.2 Я не знаю ни одного программиста, перешедшего с C# на С++, но я регулярно вижу на форумах людей, переходящих с С++ на C#. Это о чём-то говорит... п.с.3 Касательно "надёжности" - надёжней .Net,-язык т.к. его код полностью управляемый.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 02.02.2010 в 16:08. |
|||||
|
||||
напомню, про UI речь не идёт, планирую разработать плагин, подгружаемый netload'ом. про создания и редактирование 3D-объектов также речь не идёт.
вопрос на данный момент состоит в следующем: по какому закону хранятся в памяти координаты вершин трёхмерных объектов, созданных Extrude'ами и Presspool'ами из контуров с прямыми углами и как наиболее эффективно и безошибочно собрать координаты вершин в удобоваримую структуру а-ля xml? Последний раз редактировалось NR4TR, 02.02.2010 в 20:34. |
||||
|
||||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
1. По поводу паттерна, выдержка из MSDN:
Цитата:
Цитата:
3. Цитата:
4. Цитата:
5. По поводу многопоточности. Хотелось бы пример увидеть, как именно однопоточность автокада доставляет неприятности. 6. Цитата:
И еще. Уважаемый гуру Kean Walmsley сделал таки ошибку, связянную с Dispose. Программируя на С++ тоже можно забыть вызвать delete. И чем одно лучше другого? И где тут ".NET надежней"?
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||||
|
||||
Цитата:
Pastor и hwd - кончайте холивар. Предлагаю вопрос о том, что круче C++ или .NET вынести в отдельную тему. Возможно в контексте работы с AutoCAD. По большому счету я согласен с Pastor. В данном же конкретном случае работа с 3DSOLID в .NET (BREP .NET) появилась то ли в AutoCAD 2009, то ли в 2010, а в чистом ObjectARX она была как минимум с AutoCAD R14, т.е. уже 13 лет и "вычищена" в значительно большей степени. Если же автор темы не знает C++, но знает C# и собирается работать только с последними версиями AutoCAD, то можно и на C#. Последний раз редактировалось Александр Ривилис, 02.02.2010 в 22:32. |
||||
|
||||
в AutoCAD доступно автоматическое разбиение solid-объектов на элементы?
конечные элементы, конечно, хорошо, но в данном конкретном случае это сродни забиванию гвоздей микроскопом. интересует разбиение сложного солида с прямыми углами на параллелепипеды. |
||||
|
||||
|
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа со словарями AutoCAD через .Net API | hwd | .NET | 3 | 02.02.2018 15:55 |
Программирование под вертикальные решения автокада | Mazai | Программирование | 11 | 26.06.2008 14:55 |
Программирование в VBA. Не AutoCAD. | mmax | Программирование | 1 | 14.03.2007 08:30 |
Постановка задачи и программирование под AutoCAD | kos | Программирование | 11 | 20.12.2004 13:44 |