|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
01.07.2010, 00:32 | #1 | |
Программа просчета объектов в AutoCad. Связь с MySQL.
Регистрация: 30.06.2010
Сообщений: 10
|
||
Просмотров: 11185
|
|
||||
ИТ Логистика Строительство Регистрация: 06.10.2009
Петербург
Сообщений: 24
|
Имхо
АRX это очень мощно, но сложно и трудоемко. Остается 3 решения - Лисп - Дельфи +COM - NET Для задач создания именно приложения (интерефейсов) и активной связи с СУБД последний вариант (имхо) предпочтительней. Из минусов по объектной net-модели автокада мало документации (http://through-the-interface.typepad.com сей блог есть главный источник) Из + - все остальное. |
|||
|
||||
Регистрация: 30.06.2010
Сообщений: 10
|
А что-нибудь по-конкретней? Допустим какие книги, кроме перечисленных, достаточно широко освещают процесс создания подобной программы? Как лучше организовать блоки, создавать отдельные объекты или воспользоваться тем что есть? Достаточно ли функционала для описанных выше операций?
|
|||
|
||||
ИТ Логистика Строительство Регистрация: 06.10.2009
Петербург
Сообщений: 24
|
Если говорить про .Net
"Также надо привязать эти прямоугольники к определенным записям в базе MySQL для дальнейших просчетов." - фактически просто можно id entity автокада записать в БД, либо в самом прямоугольнике хранить данные о "сопровождающей" записи. "Разнообразный просчет блоков (а точнее примитивов в блоке: отходная часть в кв.м., длины реза и т.д. с анализом внутренних линий (примитивов) в прямоугольнике)." - в принципе вы сможете получить массив с координатами линий в вашем блоке. Далее пишите свою геометрию. Это технически возможно, но считать геометрию сложно. (отвлекитесь от када, представте что у вас есть координаты линий и прямоугольников и напишите алгоритм по вычислению отходной части...) "А также просчет разных экономических составляющих, пользуясь базой MySQL." Нет проблем . Вы имеете обычное нет приложение, которое может работать с любой субд. - Загрузка различных помещений, состоящих из блоков (модулей) и других объектов (в большинстве своем полилиний) и просчет этих помещений, как в предыдущем пункте. - тоже реализуемо. что читать ? по .Net книг полно. Про кад + .Net есть названный мной сайт + техдокументация автодеска. Нормальной литературы нет. Ps Про создание отдельных объектов - это к ObectARX Смотрел сию технологию 2 лет назад . Понял, что при всей ее мощности я не могу "окупить" такую трудоемкость. |
|||
|
||||
Регистрация: 30.06.2010
Сообщений: 10
|
А реализацию в LISP возможно сделать без применения .NET? Или, допустим, в делфях с ActiveX создать сервер автоматизации и работу программы связать с ним? А если все же в .NET, то на чем писать (VB или С#)?
P.S. Какое время понадобиться для освоения сред и написания программы. Умею работать в Delphi, знаком с VB и C++, осваиваю VLISP. Последний раз редактировалось gash90, 05.07.2010 в 14:22. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
gash90, сначала сделайте для себя четкую постановку задачи, а потом определяйтесь с инструментами. Сделать-то можно хоть на чем...
При постановке определитесь с основными вопросами: 1. Зачем вообще вам нужна база данных. И нужна ли вообще? Надо ли в базе данных хранить "блоки"? Что это за блоки (модули)? Это "блок" в терминологии Автокада, т.е. по сути двоичный DWG, каким-то образом затолканный в таблицу БД? А может быть достаточно хранить в БД координаты этих самых "треугольники, многоугольники"? 2. Что должно делаться внутри AutoCAD? Например, рисование этих "многоугольников". 3. Какая именно должна быть работа с БД, например в её визуальной части. А может такая работа и не нужна? 4. Почему именно MySQL? Это замечательная СУБД но для своего применения, например в Интернет. А для десктопных программ не самый лучший выбор... Продумав основные вопросы сразу увидите и возможную реализацию. Например, если важна визуальная часть работы с БД, тут, возможно, лучше использовать Delphi - там есть такие библиотеки, которых в .NET и не бывало. А если не важно - можно на чем угодно делать. Определитесь, где должна основная часть работы происходить. Скорее всего, внутри AutoCAD, а это значит - LISP и вызов из него COM-серверов или .NET-сборок. Это уж кому как удобнее... Но, скорее всего, чем-то одним не обойтись. Без четкой постановки никто вам конкретных советов не даст. Цитата:
|
|||
|
||||
Регистрация: 30.06.2010
Сообщений: 10
|
ShaggyDoc
Двоичные файлы никто не собирается в базу заталкивать, конечно. Я как раз и хочу понять, как лучше реализовать хранение этих блоков (вы как раз предлагаете хранение координат деталей, составляющих блок, как я понимаю). В целом, все что Вы написали, я как раз и хочу осуществить. С MySQL хочу работать, так как, возможно, потом доступ к базе будет с разных PC и с разными уровнями доступа. Как я себе представляю, работа с БД будет производиться не визуально (ну кроме может кнопки "отправить SQL-запрос"), зато работа с автокадом будет скорее всего либо через "рабочие окна" (с рисунком блока, различными компонентами для задания размеров деталей внутри блока или, допустим, задания связи деталей с размерами прямоугольников, которые могут храниться в БД, о которых я говорил) в самой программе (приложении, работающем с автокад), либо в самом автокаде (с использованием какого-либо интерфейса в отдельном окне, выполняющем приблизительно те же фнукции). С .NET не работал, только просматривал книги по программированию в Delphi на .NET. Суть не только в том где писать, но и как лучше написать, поэтому жажду книг или документаций (ну или советов хотя бы). Так как программирую под AutoCad впервые. Спасибо. Последний раз редактировалось gash90, 05.07.2010 в 15:32. |
|||
|
||||
Добавлю к #6. Вполне может выяснится, что обычного LISP + ADOLISP_Library будет достаточно.
Управление MySQL из LISP AutoLisp и база данных SQL-сервера Как получить доступ к таблице Access Подборка для работы с Базами Данных из Лиспа
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 30.06.2010
Сообщений: 10
|
Вот приблизительная схема работы программы, расположенной в отдельном окне.
1.1. Выбор блока из существующих (блок должен включать в себя какой-то рисунок, составленный из примитивов, допустим, каких-то стандартных размеров). 1.2. Задание характеристического размера блока (так как чаще всего это квадраты, то всего один размер). Размеры заданы в БД. 1.3. Задание связи элементов блока с прямоугольниками, выбираемыми в отдельном окне из стандартных (заданных) размеров. Размеры заданы в БД. 1.4. Оптимизация расположения примитивов на прямоугольнике из принципа уменьшения отходов, то есть уменьшения незадействованной площади прямоугольника. (привел экземплы в первом посте) 1.5. Просчет и вывод в окно или документ (файл, допустим) информации об используемом материале для создания одного блока, отходной части и длины реза элементов в прямоугольниках. Потом перемножив соответствующие числа на заданные в БД цены можно получить стоимость изготовления такого блока. В более полном варианте: 2.1. Выбор помещения (допустим задав на чертеже точку внутри помещения и выбрав ближайший контур, как для штриховки). 2.2. Пункты 1.1. - 1.5. 2.3. Задание диапазона отступа от контура помещения для фриза (прямоугольников, с диапазоном размеров отступа и определенной шириной, выбираемой из стандартных (из БД), расположенных узкой стороной к контуру помещения, для получения внутреннего прямоугольника внутри помещения, кратного, за вычетом ширины обрамляющей рамки, размеру блока). В итоге, получим целое число блоков в этом внутреннем прямоугольнике. 2.4. Выбор ширины обрамляющей рамки из стандартных размеров (из БД) для прямоугольного массива блоков. 2.5. Вывод конечного помещения, заполненного блоками, обрамленных рамками и фризом. Вывод сопутствующей информации (площадь фриза, рамки, блоков, материала, потраченного на изготовление; общей длины резов внутри блоков; стоимости работ по изготовлению (цена на соответствующие геом. размеры). |
|||
|
|||||
Цитата:
Цитата:
Если говорить применительно к .Net, то используя LINQ можно манипулировать объектами базы данных чертежа почти так же, как это делается в базе данных (я именно так и делаю). 2 ShaggyDoc Цитата:
2 gash90 Цитата:
Последний раз редактировалось hwd, 05.07.2010 в 15:57. |
|||||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Само заполнение БД как будет? Тут без "визуализации" не обойтись. А как будет "выбор из существующих"? Тут тоже нужна визуализация, причем желательно с иллюстрациями. Цитата:
Да и вообще все можно реализовать в XML. А уж сами "секретные блоки" хоть на удаленном сервере с разделением доступа хранить. Вообще "настоящая" БД для хранения такого ничтожного ассортимента (несколько сотен или несколько тысяч) сомнительное решение. Цитата:
|
|||
|
||||
Цитата:
На .Net полно аналогичных решений, и не просто аналогичных, но порой и более удобных: 1. Developer Express существует не только для делфи но и для .Net: Developer Express. Кроме того, WPF позволяет разработчикам легко и быстро создавать свои контролы любого уровня сложности (насколько хватит фантазии). 2. Вместо FastReport можно использовать FastReport.Net, но гораздо более мощным является линейка продукции StimulSoft. 3. Info Power - существуют аналоги как для winforms, так и для wpf (отдаю предпочтение последним). Возможности WPF не на одну голову выше, чем все существовавшие ранее технологии создания GUI. 4. EhLib - всё это можно делать и на Winforms/WPF. Причём на WPF это можно делать гораздо быстрее/красивее/функциональней. 5. Касательно работы с БД - не говоря уже про ADO.NET, скажу только одно слово - LINQ. Самая мощная технология, с помощью которой можно легко манипулировать любыми данными. Offtop: п.с. ShaggyDoc, Ваши сведения о .Net безвозвратно устарели. ((( Последний раз редактировалось hwd, 05.07.2010 в 21:43. |
||||
|
||||
Регистрация: 30.06.2010
Сообщений: 10
|
ShaggyDoc
Вы наверно несколько иное имели ввиду под визуализацией. Визуализация предполагается посредством самого AutoCad и компонент вызывающей программы. Сами запросы в БД ясное дело будут уже в коде (мб за исключением админской кнопки "отправить SQL-запрос", а визуальное оформление "ответов" БД будет уже после обработки выводиться кадом или программой. И оно включает естественно графическое оформление и интерактивный удобный пользовательский вид. Вообще предполагаю, что LISP с его огромным багажом функций позволит не привлекать особо другие программные средства, но с помощью SendCommand в принципе можно иметь выход и из Delphi в сам LISP без объектной модели посредством позднего связывания, что позволит получить доступ в БД из Delphi (у меня есть как раз пакет UniDac для удобства) и не терять функционала LISP'а (особенно в интерактивности его работы с AutoCad'ом при разных рабочих документах и т.п.). Клиент-сервер, в любом случае, планируется сразу при вводе в эксплуатацию, тем более с MySQL я работал, да и сама база небольшая, не знаю даже, чем СУБД Вам не нравится так. ) Последний раз редактировалось gash90, 05.07.2010 в 19:27. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Offtop: ADOLisp вряд ли будет работать на 64-разрядных системах...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Мне нравится слово еще
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
VVA, я краем уха слышал, что какие-то работы в этом направлении могут вестись (правда, неизвестно - силами MS или нет). Так что гарантировать неизменность ситуации я бы не стал.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
А смысл .NET в числе прочего и в том, чтобы иметь, независимо от языка программирования, единый набор "стандартных" решений. Цитата:
В CAD важное значение имеет не только описание изделия или какого-то элемента, но и его внешний вид. Чем, например, внешне отличается изделие ХХХХХ-01 от ХХХХХ-02. Или как найти то, не знаю как называется, но знаю, как выглядит. Соответственно и реализация БД должна быть (неважно, какая она физически). Два примера на иллюстрациях: 1. Выбор пользователя из меню по картинке и описаниям. Структура может быть любая, размещено может быть где угодно - все в XML. А может быть и в БД. Результатом выбора является строка, которую можно интерпретировать как угодно. Это может быть и LISP-выражение и SQL-запрос к БД, и URL на удаленном сервере. 2. Окно программы ведения спецификаций - база любого оборудования. У каждого изделия имеются и все текстовые атрибуты, и иллюстрации, и паспорта (документация). Могут быть и ссылки на блоки. Все внешние файлы могут быть где угодно расположены. Это автономное приложение, в нем можно полностью работать со спецификациями, включая вывод на печать в любой форме. Но, если это приложение запущено из-под AutoCAD (вернее из ruCAD, работающего в AutoCAD), то появляются дополнительные кнопки и пункты меню - Сосчитать (получить "количество" из чертежа) и Начертить (нарисовать объект в AutoCAD). Метод "рисования" содержится в БД. Вот что я понимаю под "визуализацией". Кстати, БД спецификаций может быть любой - подключение идет через ADO. И есть вариант, где вся "БД" является файловой системой. Этим решается масса вопросов, связанных с наполнением базы из разных источников. PS. На втором рисунке как раз использованы компоненты для работы с БД из Developer Express. Заодно еще пару-тройку иллюстраций приложу, для комплекта |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как разбить связь между одинаковыми деталями? программа MDT 2008 | bambrenus | Вертикальные решения на базе AutoCAD | 15 | 09.09.2009 13:40 |
Фундамент с динамическими нагрузками в Scad | Tlelaxu | SCAD | 9 | 31.08.2007 10:44 |
Импорт объектов из Inventor в AutoCAD | Rin77 | Прочее ПО от Autodesk | 2 | 05.02.2006 16:10 |
Программа для создания штриховки в AutoCAD | zenon | AutoCAD | 20 | 23.10.2005 10:37 |