Создание и редактирование 3Д объектов с использованием .NET
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Создание и редактирование 3Д объектов с использованием .NET

Создание и редактирование 3Д объектов с использованием .NET

Ответ
Поиск в этой теме
Непрочитано 25.01.2010, 23:28 #1
Создание и редактирование 3Д объектов с использованием .NET
NR4TR
 
Регистрация: 06.01.2010
Сообщений: 17

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

Вопрос.
На каком языке удобнее всего будет осуществлять программирование такого модуля? Первоначально выбор пал на C#, которым более-менее уверенно владею, но специалист, сведущий в смежной области, заверил, что программировать нужно исключительно на VBA. Или я недостаточно хорошо владею .net, или действительно есть колоссальная разница?
п.с.: для подгрузки модуля планирую использовать netload, я на правильном пути?)

/Оригинальное название: программирование на C# под AutoCAD (через NETLOAD)
kpblc/

Последний раз редактировалось Кулик Алексей aka kpblc, 01.02.2010 в 10:30.
Просмотров: 9510
 
Непрочитано 25.01.2010, 23:49
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Сугубо ИМХО.
Программировать на VBA сейчас уже по меньшей мере опасно - в 2010 версии AutoCAD соответствующий модуль надо специально загружать с сайта Autodesk. А это позволяет сделать предположение, что в ближайшие пару-тройку лет на VBA можно будет поставить крест. Проекты придется переписывать на .NET / ObjectARX (в некоторых случаях и lisp подойдет).
Что значит "сохранять координаты в файл"? Координаты чего? Вхождений блоков? Вершин (кстати, вершин чего - граней? Поверхностей? Твердых тел? Отрезков? Полилиний?)?
Я бы не задумываясь послал этого кхм... спеца куда подальше и работал на знакомом языке.
Цитата:
Сообщение от NR4TR Посмотреть сообщение
Или я недостаточно хорошо владею .net, или действительно есть колоссальная разница?
В первом я сомневаюсь, а насчет второго - да, разница есть. И в быстродействии, и в возможностях (даже я, полный ламер в этих вещах - и то уже успел почувствовать). Правда, и здесь не без ложки дегтя обошлось: для AutoCAD 2005-2006 надо использовать .NET 1.0, AutoCAD 2007 .. 2009 - .NET 2.0; AutoCAD 2010 .. - .NET 3.5.
Цитата:
Сообщение от NR4TR Посмотреть сообщение
для подгрузки модуля планирую использовать netload, я на правильном пути?)
Скажем так - это один из вариантов. Точнее - один из как минимум 2 вариантов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.01.2010, 00:08
#3
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


насчёт блоков: пока что мыслю не по-автокадовски) блоком назвал параллелепипед. в идеале модуль должен разбивать модель на параллелепипеды (пока разговоры про аппроксимации, сглаживании кривых и сплайнов опустим, положим, что вся модель состоит из сочетаний параллелепиподов). модуль определяет количество трёхмерных объектов на чертеже и создаёт файл (со структурой файла пока не определился) вида:
<block id=block1>
<point id=p1 x=0 y=10 z=10/>
<point id=p2 x=0 y=10 z=20/>
...
<point id=pi x=x1 y=y1 z=z1/>
</block>
<block id=block2>
...
</block>
...

к синтаксису выходного файла не придираться, это только набросок! хотя, предложения по оптимизации вывода только приветствуются.)
почему параллелепипеды? потом файлик, пройдя обработку, поступит в одну полусапровскую программку которая кушает только параллелепипеды.

насчёт быстродействия и возможностей: С#, как я понимаю, будет побыстрей и повозможностней?

насчёт второго способа кроме netload: а что за способ?
NR4TR вне форума  
 
Непрочитано 26.01.2010, 11:34
#4
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от NR4TR Посмотреть сообщение
насчёт второго способа кроме netload: а что за способ?
Еще можно через реестр (так называемый demandload).

Цитата:
Сообщение от NR4TR Посмотреть сообщение
насчёт быстродействия и возможностей: С#, как я понимаю, будет побыстрей и повозможностней?
По сравнению с VBA - да, по сравнению с ObjectARX (C++) - нет.
Определись что такое "трёхмерная модель помещения/этажа/здания" (какими примитивами AutoCAD это сделано) - тогда будет ясно что и как из чертежа можно получить.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 28.01.2010, 10:59
#5
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
какими примитивами AutoCAD это сделано
интересный вопрос... положим, что параллелепипедами и выдавливаниями/merge'ами (в данный момент нету под рукой автокада, не могу сказать точное название этих инструментов).
что это меняет, для трёхмерных объектов автокад использует принципиально разные объектные модели?
NR4TR вне форума  
 
Непрочитано 28.01.2010, 11:23
#6
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Что такое "параллелепипед"? Такого примитива в AutoCAD нет. Есть 3DSOLID. Кроме того параллелепипед можно нарисовать примитивами 3DFACE, можно POLYLINE и т.д. и т.п. У каждого из этих примитивов свои методы получения граничных точек (вершин).
Александр Ривилис вне форума  
 
Непрочитано 30.01.2010, 17:54
#7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
для AutoCAD 2009 - .NET 2.0;
А не .Net 3.0 - 3.5? Я на работе в свойствах своих Acad-проектов (версия акада 2009) юзаю версию фрэймворка 3.5 (если мне не изменяет память, причем, скорее всего не изменяет, т.к. в коде я использовал LINQ, а он появился лишь в версии 3.0)... Интерфейс 2009-го акада использует WPF, а данная технология появилась только в версии .Net 3.0.
Или я чего упустил?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.01.2010, 17:59
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Охотно верю. Но проблема в том, что в 2009 я уже очень давно не эскпериментировал (балуюсь на 2008 и 2010). Учитывая, что 2008 и 2009 (по крайней мере в части ObjectARX) - одного поколения, а также то, что в 2008 используется .NET 2.0, я и предположил, что под 2009 используется 2-я версия.
Конечно, это по идее надо проверить и перепроверить...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.01.2010, 20:52
#9
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Что такое "параллелепипед"? Такого примитива в AutoCAD нет. Есть 3DSOLID. Кроме того параллелепипед можно нарисовать примитивами 3DFACE, можно POLYLINE и т.д. и т.п. У каждого из этих примитивов свои методы получения граничных точек (вершин).
Параллелепипедом я назвал элемент, который можно построить инструментом "Box", который, как я предполагаю, является частью собирательного 3DSOLID. Я прав?

Хотелось бы написать что-то универсальное, но изначально ориентироваться буду на объекты, созданные Extrude'ами и Presspool'ами из контуров с прямыми углами.
Вся эта совокупность объектов по легенде будет представлять собой трёхмерную схему помещения.
NR4TR вне форума  
 
Непрочитано 31.01.2010, 23:25
#10
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Охотно верю. Но проблема в том, что в 2009 я уже очень давно не эскпериментировал (балуюсь на 2008 и 2010). Учитывая, что 2008 и 2009 (по крайней мере в части ObjectARX) - одного поколения, а также то, что в 2008 используется .NET 2.0, я и предположил, что под 2009 используется 2-я версия.
Конечно, это по идее надо проверить и перепроверить...
Алексей, переименуй, пожалуйста название темы
А то звучит навроде как программироание через @$$
Аж мурашки по коже...

~'J'~
Олег (jr.) вне форума  
 
Непрочитано 01.02.2010, 00:46
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Олег (jr.), с тебя новое название (можно в личку) Переименовать - не проблема.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.02.2010, 16:23
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
А то звучит навроде как программироание через @$$
Аж мурашки по коже...
...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 01.02.2010, 16:41
#13
Meknotek

Проектирование заборов уже в прошлом
 
Регистрация: 29.10.2009
Рязань
Сообщений: 2,089


Я бы смотрел в сторону .NET, что C#, что VB.NET
"Охват" этих языков пошире, соответственно литературы больше (в т.ч. профессиональной для "настоящих" программистов), и проживут они явно дольше.

Последний раз редактировалось Meknotek, 01.02.2010 в 19:16.
Meknotek вне форума  
 
Непрочитано 01.02.2010, 16:44
#14
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Meknotek Посмотреть сообщение
А какое название было-то? Упустил
Я бы смотрел в сторону .NET, что C#, что VB.NET
"Охват" этих языков пошире, соответственно литературы больше (в т.ч. профессиональной для "настоящих" программистов), и проживут они явно дольше.
Offtop:
Если бы еще и ObjectARX был полностью на .Net - вообще бы малина была... )))
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 01.02.2010, 20:05
#15
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


Итак, ближе к теме)
кто плотно работал с объектными моделями Extrude'ов и Presspool'ов в шарпе? Будьте любезными, подскажите, как можно собирать координаты вершин в файлосохранябельную структуру (о структуре структуры см выше )
NR4TR вне форума  
 
Непрочитано 01.02.2010, 21:10
1 | #16
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


BREP тебе в руки. Поиск по файлу справки ObjectARX SDK тебе должен помочь. Ну и эта ссылка тоже: http://through-the-interface.typepad...sing-a-3d.html

P.S.: А тему бы я поменял, на "Как получить информацию о 3DSOLID (вершины, грани) с помощь ObjectARX .NET (C#) ?"

Последний раз редактировалось Александр Ривилис, 01.02.2010 в 21:19.
Александр Ривилис вне форума  
 
Непрочитано 01.02.2010, 23:01
#17
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


А почему нельзя просто explod'ом разбивать 3DSOLID и последовательно получать грани, и вершины?
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 01.02.2010 в 23:16.
Pastor вне форума  
 
Непрочитано 01.02.2010, 23:12
#18
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Там по ссылке на аватаре чёрт какой-то нарисован.
Это ты о Kean Walmsley? Это вообще-то не просто аватар, а его фото.
Цитата:
А если серьезно, то почему нельзя просто explod'ом разбивать 3DSOLID и последовательно получать грани, и вершины?
Можно и так. Тогда уже лучше воспользоваться не командой _EXPLODE, а методом explode класса, что позволит не плодить лишние объекты в чертеже. Вершины таким образом можно получить (расчленять придется правда как минимум дважды: 3DSOLID->REGION->POLYLINE (или SPLINE)). Потом придется удалять повторяющиеся вершины...

Последний раз редактировалось Александр Ривилис, 01.02.2010 в 23:18.
Александр Ривилис вне форума  
 
Непрочитано 01.02.2010, 23:20
#19
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


А я про чёрта уже удалил. Сам испугался.
Хорошо бы ещё, чтоб он на русском писал, а то непонятно почти ничего.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 01.02.2010 в 23:28.
Pastor вне форума  
 
Непрочитано 01.02.2010, 23:33
#20
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Хорошо бы ещё, чтоб он на русском писал, а то непонятно почти ничего.
Большая часть его сообщений - это программный код, который читается достаточно легко.
Александр Ривилис вне форума  
 
Непрочитано 02.02.2010, 01:15
#21
Pastor

это только кличка
 
Регистрация: 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 и смешанный код.
ИМХО.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 02.02.2010, 15:45
#22
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
паттерн Dispose
Dispose - это не паттерн, а метод в составе интерфейса IDisposable.

Цитата:
Сообщение от Pastor Посмотреть сообщение
Судя по переписке с обозначенного форума Сеньор Менеджер там поначалу накосячил с освобождением объектов. Потом исправлял. Видать это больное место .NET, а .NET под автокад - в особенности.
Вывод не верный.

Цитата:
Сообщение от Pastor Посмотреть сообщение
Где, например, в документации ObjectArx AutoCAD Managed Class Reference сказано, что класс Transaction реализует IDisposable. Я не нашел. Поправьте, если ошибаюсь. Фраза, типа "you must actively call Dispose on the managed wrappers" меня в принципе не устраивает. Что, я должен ко всему подряд применять Dispose() или хватит через раз. Ладно, с Transaction - кто то первый догадался и рассказал всем. А как быть с морем других классов. В конце концов есть же MSDN - образец того, как подобает документировать библиотеки классов. Что, автодеску западло было сделать нормальную документацию по образу и подобию.
Обнаружить метод Dispose() в составе экземпляра класса не составляет труда.
В .Net API AutoCAD полно примеров, в которых класс Transaction инициализируется в блоке using. Учитывая это, любому программирующему на .Net даже без проверки становится ясно, что Transaction реализует IDisposable. То, что для неуправляемых объектов нужно вызывать Dispose - требование, о котором программисты .Net так же знают. Нужно только не забывать, что Dispose() следует вызывать только для тех объектов, которые ты создал сам и НЕ вызывать его для объектов, созданных самим AutoCAD, а не твоим плагином (и это логично). В том же MSDN на эту тему полно информации, так что незачем воду мутить.

"Нормальной" (в смысле такой же детальной как ObjectARX) документации по .Net пока нет, однако при желании можно читать ObjectARX - проблем в понимании не возникает. В случае отсутствия управляемой оболочки под тот или иной класс всегда можно самому её написать - тоже не проблема.
Цитата:
Сообщение от Pastor Посмотреть сообщение
Не знаю, "на каком языке удобнее всего" , но надежнее и естественнее всего писать на С++.
Под такими фразами нужно дописывать слово "ИМХО", поскольку это не есть абсолютная истина. Сколько людей - столько мнений. После C# язык C++ кажется мне не таким гармоничным. Однако я ведь не утверждаю, что С++ плох.

Цитата:
Сообщение от Pastor Посмотреть сообщение
ObjectARX мощное и хорошо изученное "средство доступа" к AutoCAD.
Эта библиотека собственно и является самим AutoCAD, его ядром, а не просто "средством".

Цитата:
Сообщение от Pastor Посмотреть сообщение
А вот UI и все остальное можно и нужно писать на .NET и связывать одно с другим либо через экспортируемые в документ внешние функции, либо используя С++/CLI и смешанный код.
ИМХО.
Вообще-то грамотная реализация GIU с основным кодом осуществляется посредством заранее продуманного набора интерфейсов (interfaces), без всяких извращений (Стив Макконнелл "Идеальный код" - рекомендую).

_____________________________________________________
п.с. ИМХО .Net давно рулит (за счет удобства, скорости разработки, богатого набора библиотек и наличия новых современных технологий таких как ADO.NET, WPF, LINQ) и будет рулить впредь. AutoCAD написан на неуправляемом С++ ранее, чем появился .Net Framework. У текущей реализации ядра AutoCAD есть такой минус, как отсутствие поддержки многопоточности, что является весьма неприятным моментом реализации ObjectARX.

п.с.2 Я не знаю ни одного программиста, перешедшего с C# на С++, но я регулярно вижу на форумах людей, переходящих с С++ на C#. Это о чём-то говорит...
п.с.3 Касательно "надёжности" - надёжней .Net,-язык т.к. его код полностью управляемый.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 02.02.2010 в 16:08.
hwd вне форума  
 
Непрочитано 02.02.2010, 18:54
#23
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Что-то вы забрались слишком в offtopic...
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 02.02.2010, 20:26
#24
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


напомню, про UI речь не идёт, планирую разработать плагин, подгружаемый netload'ом. про создания и редактирование 3D-объектов также речь не идёт.

вопрос на данный момент состоит в следующем:
по какому закону хранятся в памяти координаты вершин трёхмерных объектов, созданных Extrude'ами и Presspool'ами из контуров с прямыми углами и как наиболее эффективно и безошибочно собрать координаты вершин в удобоваримую структуру а-ля xml?

Последний раз редактировалось NR4TR, 02.02.2010 в 20:34.
NR4TR вне форума  
 
Непрочитано 02.02.2010, 20:27
#25
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


1. По поводу паттерна, выдержка из MSDN:
Цитата:
....this is how a Visual C++ finalizer and a destructor that calls the finalizer maps to the Dispose pattern.

// C++ code
ref class T {
~T() { this->!T(); } // destructor calls finalizer
!T() {} // finalizer
};

// equivalent Dispose pattern
void Dispose(bool disposing) {
if (disposing) {
~T();
} else {
!T();
}
}
2.
Цитата:
В случае отсутствия управляемой оболочки под тот или иной класс всегда можно самому её написать - тоже не проблема.
Насколько я в курсе, такое возможно только на С++/CLI, что обязательно будет проблемой для программиста, не владеющего этим языком и что главнее - техникой написания подобных оболочек. И учебной литературы на эту тему крайне мало (мне пока встречалась только пара достойных внимания книг на английском языке).

3.
Цитата:
Однако я ведь не утверждаю, что С++ плох.
И я не утверждаю. Я утверждаю что собственно автокад нужно программировать на С++ и не пользоваться мутными ( отвратительно документированными) оболочками-посредниками. Зрить нужно в корень, а ObjectARX - и есть этот корень.

4.
Цитата:
Вообще-то грамотная реализация GIU с основным кодом осуществляется посредством заранее продуманного набора интерфейсов (interfaces), без всяких извращений
Если одно приложение экспортирует набор функций, а другое пользуется этим набором - это и есть их взаимодействие через интерфейс. Где тут извращение?

5. По поводу многопоточности.
Хотелось бы пример увидеть, как именно однопоточность автокада доставляет неприятности.

6.
Цитата:
Что-то вы забрались слишком в offtopic...
А вот и нет. Человек спрашивал на каком языке писать приложение к автокаду. Я высказал свое мнение (и ИМХО, кстати, в конце добавил), что функционал писать нужно на C++, а взаимодействие со сем остальным миром - на любом .NET языке (например С#). А взаимодействие этих двух частей осуществлять "посредством заранее продуманного набора интерфейсов", в частности с помощью внешних функций, экспортируемых в документ взаимодействующими ARX и .NET модулями.

И еще. Уважаемый гуру Kean Walmsley сделал таки ошибку, связянную с Dispose. Программируя на С++ тоже можно забыть вызвать delete. И чем одно лучше другого? И где тут ".NET надежней"?
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 02.02.2010, 21:51
#26
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от NR4TR Посмотреть сообщение
вопрос на данный момент состоит в следующем:
по какому закону хранятся в памяти координаты вершин трёхмерных объектов, созданных Extrude'ами и Presspool'ами из контуров с прямыми углами и как наиболее эффективно и безошибочно собрать координаты вершин в удобоваримую структуру а-ля xml?
Мой пост: http://forum.dwg.ru/showpost.php?p=514210&postcount=16 принципиально проигнорировал? Или не заметил?

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.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 02.02.2010, 22:41
#27
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


Александр Ривилис, точно: упустил из виду полезный совет за разговорами о плюсах и дотнет. спасибо!
NR4TR вне форума  
 
Автор темы   Непрочитано 09.02.2010, 23:42
#28
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


в AutoCAD доступно автоматическое разбиение solid-объектов на элементы?
конечные элементы, конечно, хорошо, но в данном конкретном случае это сродни забиванию гвоздей микроскопом. интересует разбиение сложного солида с прямыми углами на параллелепипеды.
NR4TR вне форума  
 
Автор темы   Непрочитано 24.02.2010, 10:07
#29
NR4TR


 
Регистрация: 06.01.2010
Сообщений: 17
Отправить сообщение для NR4TR с помощью Skype™


есть ещё один смежный вопрос знатокам BREP:

есть ли в нём встроенная функция, проверяющая, принадлежит ли данная точка телу или нет?
NR4TR вне форума  
 
Непрочитано 24.02.2010, 10:52
1 | #30
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от NR4TR Посмотреть сообщение
есть ещё один смежный вопрос знатокам BREP:

есть ли в нём встроенная функция, проверяющая, принадлежит ли данная точка телу или нет?
Есть. В чистом ObjectARX: AcBrEntity::getPointContainment
В Brep.NET ищи аналог сам.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Создание и редактирование 3Д объектов с использованием .NET



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со словарями 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