| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум 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.
Просмотров: 8956
 
Непрочитано 25.01.2010, 23:49
#2
Кулик Алексей aka kpblc
Moderator

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


Сугубо ИМХО.
Программировать на 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,405
Отправить сообщение для Александр Ривилис с помощью 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,405
Отправить сообщение для Александр Ривилис с помощью 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
С.-Петербург
Сообщений: 39,772


Охотно верю. Но проблема в том, что в 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ä
Сообщений: 813


Цитата:
Сообщение от Кулик Алексей 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
С.-Петербург
Сообщений: 39,772


Олег (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,405
Отправить сообщение для Александр Ривилис с помощью 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,405
Отправить сообщение для Александр Ривилис с помощью 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,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Хорошо бы ещё, чтоб он на русском писал, а то непонятно почти ничего.
Большая часть его сообщений - это программный код, который читается достаточно легко.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум 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