|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
22.05.2019, 10:25 | #1 | |
Взаимодействие с таблицей БД
Регистрация: 15.03.2019
Сообщений: 18
|
||
Просмотров: 6549
|
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
ну с этим результат будет предсказуемым - так как штатные возможности. Да и надо, имхо, как минимум - автофильтрацию производить по имени того же блока - зачем предлагать, например, для водопроводного крана охранные извещатели в списке)
|
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Цитата:
Так можно здесь обойтись штатными инструментами, используя AutoLisp ? Как обработать событие "нажатие на строке БД" ? |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Об этом и спрашиваю ) Иначе бы не задавал вопросов. Если таблицу рассматривать как обычную оконную форму, то может и есть. А если оно есть, то как через методы ActiveX (COM) достучаться до такого события ?
Последний раз редактировалось sergeyVostok, 22.05.2019 в 14:08. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
----- добавлено через ~10 мин. ----- Т.е. где на уровне ObjectARX может и есть функции, с помощью которых можно перехватить выбор строки, или нестандартными средствами через WinAPI. Только стоит ли настолько извращаться ради одного ID?) |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Ну не ID, а строки БД. Для чего еще нужна БД ? Вместо ID может быть любое поле или несколько.
Ну а как тогда лучше решить задачу ? Меньшими потерями т.к. сделать БД в Access не составляет труда и подключение настроено. Кроме того в такую БД можно добавлять записи прям из Autocad, ничего для этого не дописывая. Если никак, то буду курить связку чего-нибудь с чем-нибудь. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
В .Net вы будете подключаться, не используя диспетчера. Я использую бесплатную SQLite, например - зачем дополнительная зависимость от проприетарного ПО. Но это дело вкуса) |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Цитата:
сложно понять, какая там идеология у людей заложена и откуда извлечение ? У каждого своё. Извлекать данные то по любому наверно из БД ? В общем пока у меня будут расширенные данные. Если 255 символов станет не хватать, то думал тоже сделать атрибут, но только с ID БД, и в дополнение делать свой словарь в котором будет сохраняться номер ID из БД и инфа из поля "Описание". Здесь идеология такая, что БД нужна только на этапе конструирования чертежа и выбора марок элементов из БД. Вся инфа заносится из базы в чертеж (расширенные данные или атрибут + словарь). И затем, можно получить спецификацию на чертеж не используя БД. Считаю очень надежный вариант, в случае изменения БД или её отсутствия. ----- добавлено через ~3 мин. ----- Как по скорости работы с БД такой вариант ? Нет проблем ? В том то и дело, что еще пытаюсь сделать так, чтобы можно было использовать БД, не устанавливая доп. ПО на рабочее место. В варианте с БД AutoCAD настраиваем только подключение и в редких случаях может потребоваться установка драйвера БД. Ради этого можно и поизвращаться )) Последний раз редактировалось sergeyVostok, 22.05.2019 в 15:37. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
не мгновенно, естественно) Это как построишь работу с нею, будешь ли ту же индексацию использовать и т.п. Цитата:
Права администратора не нужны - подключаете в проект скаченную по ссылке сборку и напрямую работаете в коде с БД в виде одного файла. И там возможности по минимуму, конечно, по сравнению с другими СУБД - но как локальное хранилище меня пока вполне устраивает) |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Цитата:
С тех рабочих мест, где будет установлена БД, она в принципе никуда не денется. Но во первых, из неё могут быть удалены записи, которые кому-то покажутся например уже не используемыми. С течением времени. Например, изменился поставщик или элементы сняты с производства. Либо чертеж открывается спустя так лет N, а за актуальность ID в БД уже никто ручиться не может. Специально за БД думаю никто следить не будет. В общем всякие случаи могут быть. Ну а если пришел со своим чертежом к кому-нибудь "в гости", то там БД точно не будет. Проще подключить LISP программу, извлекающую данные из чертежа, чем таскать с собой БД и делиться ей. А вероятнее всего, этой БД буду пользоваться только я )))) ибо вся организация работает в AutoCad можно сказать как на кульмане ) поэтому для себя решил автоматизировать составление спецификации и еще добавить некоторые функции, таким образом отгородив себя от пустой траты времени ) Цитата:
А в чем писать код ? C++ ? AutoLISP ? В какой IDE ? |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
любой .Net язык и любая бесплатная студия - только уговорить еще придется админа поставить, если на работе) А для затравки - сайт Бушмана, там на главной странице есть ссылки на другие полезные ресурсы. Хотелки за пределы лиспа начинают выходить у вас, имхо - не чтобы работало, а чтобы было удобно и красиво) |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Лучше так: 1. Из лисп вызывается программа работы с БД - (COM-сервер). 2. В БД что-то делается - редактируется. В частном случае выбирается запись нужного "резистора". 3. Любые сведения о выбранной записи возвращаются в Лисп, а БД закрывается. 4. Лисп делает с полученными данными то, что умеет. Вставляет блок, например, привязывает РД и т.п. Но в РД надо хранить не данные, а только таблицу и ID в БД. Всё это годами проверено в разнообразных работах, вплоть до ГИС на базе AutoCAD. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Дополню. Вместо СОМ-сервера сейчас можно вставки .Net кода в Lisp-обертке делать.
|
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Цитата:
Какую таблицу имели ввиду ? У меня марка резистора что-то типа: "Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ " По такому же типу остальные элементы: конденсаторы, полупроводники, разъемы и т.д. То есть данных с DXF кодом 1000 должно хватить - строковая константа длиной не более 255 знаков. Поэтому я и говорю, что есть соблазн хранить данные элемента в его дин. блоке и БД после завершения работ над чертежом в принципе уже не нужна. Можно делать спецификацию прямо из данных чертежа. Вы мне так и не привели какие минусы в такой логике работы ? Ничего криминального не вижу. Разве только что возможные тормоза из-за того, что к каждому элементу будут прикреплены расширенные данные. Тут на практике только можно понять, как это отразится на производительности. Но и чертежи не объемные, не архитектурные планы. Да и никто не мешает продублировать функцию, и составлять спецификацию, если это необходимо, обращаясь повторно к БД. В общем понял я, что начинать нужно курить COM технологии. Последний раз редактировалось sergeyVostok, 22.05.2019 в 20:58. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Рассчитывать на "должно хватить" не стоит. Завтра будет что-то другое и этой строки не хватит. Будет не короткое название "Резистор", а длинное, они бывают и в несколько строк, и вся идея накрылась. Вообще не нужно хранить в чертеже всю семантическую информацию об изделии. Только ключ. А описательную часть (формулировка заказа) всегда можно извлечь из БД, причем в самом свежем виде. Да и динамические блоки при программном рисовании совсем не нужны. Информацию можно связать с любым примитивом. Да конечно, можно по-разному. Но если ошибки на стратегическом уровне, тут и современные инструменты не помогут. Однако в любом случае надо разделить "вижуальную" часть работы с БД, причем безо всяких архаичных DCL, и "рисовальную", которую LISP может лучше сделать. |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Ошибок на стратегическом уровне нет, ибо уровень не стратегический, пишу под себя. Заодно учусь. Задача, при наличии информации и знаний, не большая.
В принципе обо всем подумал. Вы уж тут сильно замудрили ))) У меня вполне конкретная задача, без сетей. Для интерфейса создана одна пользовательская панель с кнопками блоков. Зачем их рисовать в LISP ? Зачем мудрить. Рисуем изображение элемента и сохраняем в отдельный файл. Каждый элемент - отдельный файл. Получится база компонентов. Вставляются макросом по нажатию кнопки соответствующего типа элемента. LISP запускается именно после вставки блока, т.к. после появления БД, можно нажать "отмена" и таким образом вставить безымянный блок (элемент), если его марка еще не определена. Марку определить из БД позже. Цитата:
Цитата:
Согласен. Если это перерастет в серьезное ПО, то задача будет поставлена и решена заново. А пока в варианте "минимум". Сегодня открываю книги по .NET )) Последний раз редактировалось sergeyVostok, 23.05.2019 в 09:16. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Это сейчас имеет дело с несколькими изделиями, на каждое из которых можно "макрос на кнопку" сделать. Что, всю жизнь так и будет? Для примера - база данных электрооборудования, используемая для формирования СО. Причем это фрагмент, всего 798 позиций. Её можно и редактировать, и выбрать позицию. В ней содержится вся необходимая информация, вплоть до фотографии. Любую позицию можно легко найти, как визуально, так и поиском. И эта же самая программа работает с любой другой БД на что угодно. Всего имеется 33 таких тематических БД, можно еще сколько угодно сделать. Впрочем, видимо "не в коня корм". |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Ну видимо да. Вы же задачу лучше меня думаю не знаете ))) Кто может знать, как мне нужно формировать чертеж лучше меня. Именно пишется под себя и под сиюминутную задачу.
Цитата:
Вот вы ... ))) Я вас прекрасно понимаю, что можно делать БД с большим объемом информации: фото, ссылки, даташиты и т.д. Но мне это не нужно. Я интересовался на первом этапе вопросом взаимодействия штатной таблицы БД с "мышью" пользователя. Понял, что это невозможно либо делать вариант через ObjectARX, о котором пока никто не рассказал. Благодарю за примеры БД. Очень считаю удобно, к этому нужно стремиться. Интересные вещи, просто интересно это знать. Но пока это не по моей части. Нужна простейшая, примитивная база. Цель - спецификация на чертеж. Всё ! Именно поэтому в БД кроме поля "наименование" ничего не нужно ))) А на чем написана приведенная в предыдущем посте БД ? Последний раз редактировалось sergeyVostok, 23.05.2019 в 09:55. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
Цитата:
ID Name 1 Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ 2 Р-12-0,25 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ привязываете к чертежу. А потом расширяете содержимое таблицы по необходимости. Хотя изначально для тех же постоянных резисторов в УГО заложена их мощность - поэтому напрашивается сделать еще один столбец сразу - Мощность Рассеивания и либо выбирать параметр видимости динблока резистора по мощности выбранной позиции, либо при выборке из БД передавать в SELECT текущее состояние видимости - чтобы он выдал резисторы только данной мощности. И т.п. А потом подумайте, например, что понадобиться заменить марку резисторов сразу на всей схеме, но все резисторы разной мощности и номинала - вручную все менять? Или ввести столбцы сопротивления, точности, марку, тип и т.п. и задав маску в диалоге - все разом поменять? Чем меньше "жестких" связей с данными внутри чертежа - тем проще будет модифицировать программу в дальнейшем. |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Цитата:
Я спрашивал не об этом. Не о структуре БД. Я интересовался возможностью взаимодействия штатной таблицы БД с "мышью" пользователя. Либо об инструментах, с помощью которых можно заменить штатную БД и написать свою. Но я не спрашивал как мне реализовывать структуру, топологию и т.д. БД. С этим у меня нет вопросов. Ну в самом деле ))) Поэтому про чтение по диагонали я бы не стал говорить и тема уходит в оффтоп. Что такое ключ в БД, какие должны быть поля в БД, сколько таблиц в БД и их взаимосвязи - с этим у меня нет вопросов. Я понял, что нужно брать .NET и писать что-то свое или через API попробовать перехватить событие в штатной БД. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
Кстати, появляются периодически вопросы - как защитить содержимое *.dwg чертежей, чтобы другие не могли на "шару" пользоваться. А вот так и защищать - средства ускорения работы программные и их защищать, а кто получит сам чертеж с одними идентификаторами - ну сможет блоки позаимствовать, оформление. А со всем остальным обломится) А чертежи уходят налево только так, если в организации нет жесткого контроля за этим. |
|||
|
||||
Регистрация: 15.03.2019
Сообщений: 18
|
Цитата:
Цитата:
Вот это уже в тему. Что в папке, примеры работы с БД ? Последний раз редактировалось sergeyVostok, 23.05.2019 в 12:17. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Offtop: Если бы не смотрели так узколобо - "это по делу, а это нет", то подумали бы об том - для чего это все делаете. Какая ситуация общая в стране, что ваши умения программирования для работодателя ничего не стоят (так как не профильное) - а вот если получиться быстрее делать: то это ваш конкурентное преимущество перед другими и раздавать это свободно - каждый решает сам, конечно.. И что защиту разработок от свободного хождения нужно еще на этапе общей архитектуры системы продумывать, чтобы не оставлять "открытых ворот" потом. Но вы же лучше всех все знаете - вам нужно лишь четкие правильные готовые решения. Успехов)
|
|||
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
|
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,057
|
|
|||
|
||||
Регистрация: 23.09.2015
Сообщений: 146
|
Цитата:
Или может эту тему закрепить? Тема интересная, а информации в сети (на русском) маловато.... Как например, через LISP делать взаимосвязь элементов (расширенных данных) и БД. Как делать связь БД с MS Word/Excel и т.д.
__________________
Проекты СС |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
как вы думаете - кто-то в здравом уме будет выкладывать коды/подробное описание рабочих вариантов своих защит?) Но явно защита должна быть не уровня - введите пароль или получите какой то из параметров компа - и разрешите дальше работать в случае совпадения. Это действительно "открытые ворота" по сути. Хотя и подобная защита для 99% "непрограммистов"-пользователей станет непреодолимом препятствием, имхо)
не связь. Рассматривайте документы офиса как шаблоны для вывода отчетов, сформированных на базе информации из БД. Поменяют завтра визуальный формат документов, а в программу жестко зашита взаимосвязь - и все, приехали?) А так переписать лишь малую часть кода, отвечающий за непосредственный вывод в шаблоны. |
|||
|
||||
Регистрация: 23.09.2015
Сообщений: 146
|
Цитата:
я даже не могу соединиться с базой данный из папки Sample....
__________________
Проекты СС |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
В главе 19 "Работа с базой данных" книги "САПР на базе AutoCAD - как это делается" рассматривается на примерах, как работать с БД, начиная с подключения.
Вот тут пример есть куценький и с пояснениями на английском. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Уж не потому ли, что в нем как бы есть своя собственная база данных - ассоциативный список?
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
БД - это не просто хранение информации, но и обеспечение ее целостности при операциях модификации БД. Упрощенно говоря: вылетело ли приложение, ребутнулся комп и т.д. - информация в БД должна остаться согласованной, а не часть старого содержимого, часть нового и часть битой информации, которая не успела записаться на энергонезависимый носитель информации во время сбоя. И, кстати, что называют чертеж акада базой данных (и это прослеживается в названиях тех же классов) весьма условно - иначе не было активной ветки о восстановлении файлов)
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Просто "база данных" - модные слова, особенно среди тех, кто только их и слышал. "Базой данных" могут называть любую информацию. На самом деле все сложнее. Только книга "Введение в базы данных" содержит около 1000 страниц.
Вот, например, очень многие говорят "У меня база данных в Excel". Да, чрезвычайно примитивную БД можно сделать и там. Строки (записи), колонки (поля). Вот только это совершенно не защищено. Пользователь запросто может ввести в ячейку, где должно быть число, строку - например те же цифры, но с десятичным разделителем в виде запятой вместо точки или наоборот. И всё, "БД" накрылась. Данные в БД в принципе могут быть в любых форматах, в том числе в виде обычного текста. Они и были текстовые на "больших ЭВМ" и именно это позволило огромнуые массивы информации перевести в современные системы. Но для работы с любой БД необходима соответствующая СУБД, которая и дает все возможности работы с данными. Для "офисного планктона" это Access, которую почему-то боятся, как черт ладана. А ассоциативный список - это никакая не база данных, сколько бы по невежеству не написали статей "скажи НЕТ субд! ЛИСП НЕ НУЖДАЕТСЯ НИ В КАКИХ ВНЕШНИХ БАЗАХ ДАННЫХ !!!". |
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,057
|
Цитата:
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пропадает связь OLE-объекта с оригинальной таблицей Excel | XoRys | AutoCAD | 2 | 30.09.2014 15:09 |
Взаимодействие AutoCad Architecture с AutoCad Structural Detailing возможно? | VikaLupan | Вертикальные решения на базе AutoCAD | 4 | 28.08.2012 12:39 |
Можно ли создать подобное взаимодействие и прокрутить его во времени средсвами Автокада 2012? | proteirei | AutoCAD | 2 | 02.06.2012 11:17 |
Как в Лире 9.4 смоделировать взаимодействие грунта и бетонной конструкции? | sergeyc700 | Лира / Лира-САПР | 12 | 31.01.2012 17:49 |
Нужна форма с таблицей что посоветуете | Cleper | Программирование | 2 | 04.04.2007 09:26 |