|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Блоки из БД (LISP, ACAD 2009)
Санкт-Петербург
Регистрация: 24.12.2009
Сообщений: 59
|
||
Просмотров: 3091
|
|
||||
Насколько мне известно - выдрать определение блока из Database нельзя, поскольку класс BlockReference не реализует интерфейса ISerializable и не помечен SerializableAttribute.
Как вариант - можно попробовать экспортировать определение блока в формат DXF. Если удастся - тогда проблем с сохранением этой информации в БД не возникнет. Однако я не знаю, можно ли конвертировать определение блока в формат DXF (с последующим его извлечением), не потеряв при этом такие важные "фичи", как аннотативность, динамичность и параметризацию... Если мне не изменяет память - нечто подобное (хранение блоков в БД) делал Евгений Елпанов, но детали мне не известны...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Блоки лучше всего хранить в самом естественном виде - в виде dwg-файлов. А в базе данных хранить "адреса": в каком каталоге и в каком файле хранится тот или иной блок. (ИМХО)
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
![]() |
|
||||
Цитата:
1. Вопросов о синхронизации не возникнет, т.к. все определения хранятся в одном единственном месте - БД. 2. Поиск нужного определения блока (если таковая необходимость возникнет) выполняется значительно быстрее, чем итерация по dwg- файлам. 3. Работать с определениями блоков (импорт/экспорт/изменение/удаление) можно не создавая объекта приложения AutoCAD.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
![]() |
Цитата:
Такой метод работы конечно самый бронебойный, но хотелось бы красоты и порядка, что может мне дать БД. А так же может дать мне скорость вставки блоков. Предчувствуя ответ, что в зависимости от размера БД будет тормозить автокад и скорость вставки (в связи с поиском) будет не на много выше, хочу заметить, что SQL еще ни кто не отменял. |
|||
![]() |
|
||||
Цитата:
Цитата:
![]() И, честно говоря, не понял, коим боком размер БД может тормозить автокад и скорость вставки... Это по аналогии, что цвет автомобиля, стоящего у моего подъезда как-то может повлиять на настроение моей кошки, лежащей на кровати (такая же "логичная" связь)....
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
1. Из LISP через ObjectDBX можно открывать dwg-файл втихую и копировать оттуда нужное определение блока, а не все скопом, если это принципиально.
2. Скорость вставки блока из dwg-файла максимальная, поскольку блок уже хранится в естественном виде. В случае dxf, например, необходимо его (dxf) перед вставкой создать физически на основе текстовой информации, хранящейся в базе. 3. Никакой итерации по dwg-файлам не требуется, поскольку база содержит исчерпывающую информацию о том, какой блок, в каком файле, в каком каталоге и на каком сервере хранится.
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
![]() |
|
||||
Цитата:
![]() Цитата:
Итерация подразумевалась мною при непосредственном поиске определения блока "в лоб", не используя БД. Если держать описание в БД, этого делать конечно же не придётся. Однако вопрос об актуальности информации, хранящейся в БД остаётся открытым: основной минус, который перевешивает предложенный вариант - потенциальная возможность не соответствия описаний, хранящихся в БД тому, что реально хранится в dwg-файлах.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 18.05.2011 в 22:35. |
||||
![]() |
|
||||
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
![]() |
Цитата:
Цитата:
На данный момент у меня реализовано по-тупому. Вставляется файл как блок и разбивается, потом вставляется нужный блок. Именно из-за того что происходит вставка файла, и происходит притормаживание (копируется конечно не при каждой вставке. а только если такого блока нет чертеже) |
|||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Цитата:
![]()
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
"Блок" в БД любого типа может храниться:
1. В BLOB-поле в виде двоичного кода. В этом случае, для вставки в AutoCAD его можно только извлечь в какой-то временный файл. Проблема: как запихнуть в поле. Но это решаемо, при условии, что уже есть файл. Теоретически возможно чтение BLOB в поток в память. Но манипуляции с этим участком памяти по превращению его в DWG средствами AutoCAD вряд ли возможны. Разве что очень извращенные и изощренные. 2. В BLOB-поле в виде какого-то текстового описания. В виде DXF, например, или ещё как-то. В этом случае возможно прочитать это описание и внутри AutoCAD сформировать описание блока и его вставку. Только для этого надо научить свою программу "с нуля" тому, что уже умеет делать AutoCAD. Проблема: как запихнуть это пописание в BLOB. Решаемо, но много работы. 3. Ссылки на настоящие файлы. Самое простое, надежное, и проверенное. "Синхронизация" и прочее - надуманные проблемы. Вот постоянная "синхронизация" блоков, запихнутых в БД (по их содержимому) - гораздо более трудна. А блок-файл обычный пользователь всегда может заменить. Не надо забывать и про библиотеки блоков. Подобные вопросы - "БД или файл" многократно поднимались на программистских форумах по многим другим вариантам файлов. И оптимальное решение давно найдено. Догадываетесь какое? А как вы думаете хранятся "приложенные" картинки и файлы на этом форуме? Не забываем, что базой данных является не только набор файлов какой-то СУБД, но и файловая система. Это самая надежная и удобная в работе база данных. В ней тоже делается и синхронизация, и поиск. И с этой базой данных уже от рождения обучен работать AutoCAD и все средства разработки для него. И она дает "красоту и порядок". Может дать и "полную анархию", но так же можно сделать и с БД. И главный вопрос - зачем всё это нужно? Наверное, чтобы дать возможность работы пользователям - более удобную, чем штатными средствами AutoCAD. Но блоки в этом случае - частный случай. Начальный уровень, что-то наподобие блочных надстроек над LT. Да ещё с переживаниями о десятках блоков. Это же примитивнейший случай. Реально для пользователй нужны не только блоки, но и самые разнообразные программы. И это достаточно просто делается, без заморочек с БД. Иллюстрации показывал неоднократно. Вот что действительно надо хранить именно в БД (применительно к AutoCAD), так это, например, информационные данные (в том числе с графикой). Например, координаты границ земельных участков, трасс сетей, места расположения всяких притонов архитекторов. "Впрочем, это совсем другая история". (С) |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Acad 2009; .Net 3.5; UnknownCommand - первый раз после регистрации, событие всегда генерируется дважды. | hwd | .NET | 4 | 31.03.2011 17:48 |
Реакторы в ACAD x64 (LISP, ACAD '09 - '10) | EfremenkoDO | LISP | 12 | 13.10.2010 23:52 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |
Проблема вставки диаграмм в ACAD 2009 из Excel 2007 | ST2 | AutoCAD | 1 | 26.05.2009 01:30 |