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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Взаимодействие с таблицей БД

Взаимодействие с таблицей БД

Ответ
Поиск в этой теме
Непрочитано 22.05.2019, 10:25 #1
Взаимодействие с таблицей БД
sergeyVostok
 
Регистрация: 15.03.2019
Сообщений: 18

После того как мы создали в диспетчере подключения к БД (вызывается Ctrl + 6) подключение к нашей БД, можно открыть таблицу БД. Для просмотра или редактирования. Я, как пользователь, могу осуществлять поиск по этой таблице. После того как найдена нужная строка (элемент БД) необходимо перенести строковые данные одного из полей строки в расширенные данные примитива AutoCAD. Это можно сделать, написав простой диалог на DCL, в котором можно указывать ID-номер найденной записи, после чего программа на LISP делает запрос к БД и читает и заносит необходимые данные из БД в примитив. Но это как-то ска криво мне не нравится. Как сделать так, чтобы без дополнительного окна-диалога, коих и так у инженера много на экране, можно было бы просто двойным щелчком по строке БД запустить LISP-программу ? Если это не выполнимо и событие типа "клац мышью" в таблице БД перехватить невозможно, тогда посоветуйте чем можно заменить такую таблицу (например используя технологии .NET или Delphi или еще чего-нибудь) чтобы реализовать такую логику. Ну очееень прям надо.
Еще раз опишу логику задуманного:
1. вставляю в поле чертежа динамический блок;
2. вылетает таблица БД, где необходимо выбрать нужный элемент;
3. занести данные из поля выбранной строки в расширенные данные динамического блока (или примитива - не важно);

Всем спасибо !
Просмотров: 6549
 
Непрочитано 22.05.2019, 12:34
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
например используя технологии .NET
ну с этим результат будет предсказуемым - так как штатные возможности. Да и надо, имхо, как минимум - автофильтрацию производить по имени того же блока - зачем предлагать, например, для водопроводного крана охранные извещатели в списке)
Сергей812 вне форума  
 
Автор темы   Непрочитано 22.05.2019, 12:49
#3
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Да и надо, имхо, как минимум - автофильтрацию производить по имени того же блока - зачем предлагать, например, для водопроводного крана охранные извещатели в списке)
Это уже дело второе. У меня будет например БД "Резисторы". Я вставляю дин. блок "Резистор" и появляется таблица БД, в которой я выбираю марку резистора.
Так можно здесь обойтись штатными инструментами, используя AutoLisp ? Как обработать событие "нажатие на строке БД" ?
sergeyVostok вне форума  
 
Непрочитано 22.05.2019, 13:31
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Как обработать событие "нажатие на строке БД" ?
А оно хоть есть?
Сергей812 вне форума  
 
Автор темы   Непрочитано 22.05.2019, 13:51
#5
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А оно хоть есть?
Об этом и спрашиваю ) Иначе бы не задавал вопросов. Если таблицу рассматривать как обычную оконную форму, то может и есть. А если оно есть, то как через методы ActiveX (COM) достучаться до такого события ?

Последний раз редактировалось sergeyVostok, 22.05.2019 в 14:08.
sergeyVostok вне форума  
 
Непрочитано 22.05.2019, 14:23
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Если таблицу рассматривать как обычную оконную форму, то может и есть. А если оно есть, то как через методы ActiveX (COM) достучаться до такого события
Естественно, события есть в самой таблице и они маршрутизируются до точки их обработки в самом акаде, но если Аутодеск не сделал API интерфейс для них..)

----- добавлено через ~10 мин. -----
Т.е. где на уровне ObjectARX может и есть функции, с помощью которых можно перехватить выбор строки, или нестандартными средствами через WinAPI. Только стоит ли настолько извращаться ради одного ID?)
Сергей812 вне форума  
 
Автор темы   Непрочитано 22.05.2019, 14:39
#7
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Только стоит ли настолько извращаться ради одного ID?)
Ну не ID, а строки БД. Для чего еще нужна БД ? Вместо ID может быть любое поле или несколько.
Ну а как тогда лучше решить задачу ? Меньшими потерями т.к. сделать БД в Access не составляет труда и подключение настроено. Кроме того в такую БД можно добавлять записи прям из Autocad, ничего для этого не дописывая.
Если никак, то буду курить связку чего-нибудь с чем-нибудь.
sergeyVostok вне форума  
 
Непрочитано 22.05.2019, 15:09
#8
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Ну не ID, а строки БД. Для чего еще нужна БД ? Вместо ID может быть любое поле или несколько.
вы собираетесь содержимое строки БД записывать в расширенные данные? Посмотрите на тех, кто делает автоматизацию на базе атрибутов блоков и извлечения данных - дешево и сердито, пока не приходит момент модификации/добавления данных (не говоря о не совсем корректной работе штатной команды обновления атрибутов). А был бы один идентификатор в примитиве - и нужно править только таблицу БД, добавляя столбцы со значением по умолчанию.
Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Меньшими потерями т.к. сделать БД в Access не составляет труда и подключение настроено.
В .Net вы будете подключаться, не используя диспетчера. Я использую бесплатную SQLite, например - зачем дополнительная зависимость от проприетарного ПО. Но это дело вкуса)
Сергей812 вне форума  
 
Автор темы   Непрочитано 22.05.2019, 15:24
#9
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
вы собираетесь содержимое строки БД записывать в расширенные данные? Посмотрите на тех, кто делает автоматизацию на базе атрибутов блоков и извлечения данных - дешево и сердито, пока не приходит момент модификации/добавления данных (не говоря о не совсем корректной работе штатной команды обновления атрибутов). А был бы один идентификатор в примитиве - и нужно править только таблицу БД, добавляя столбцы со значением по умолчанию.
Да, именно в расширенные данные. Там до 255 символов, мне достаточно. Не вижу для себя смысла создавать атрибут, думаю расширенные данные с DXF кодом 1000, присоединенные к дин. блоку, не будут так перегружать чертеж, как атрибуты.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
автоматизацию на базе атрибутов блоков и извлечения данных
сложно понять, какая там идеология у людей заложена и откуда извлечение ? У каждого своё. Извлекать данные то по любому наверно из БД ?
В общем пока у меня будут расширенные данные. Если 255 символов станет не хватать, то думал тоже сделать атрибут, но только с ID БД, и в дополнение делать свой словарь в котором будет сохраняться номер ID из БД и инфа из поля "Описание". Здесь идеология такая, что БД нужна только на этапе конструирования чертежа и выбора марок элементов из БД. Вся инфа заносится из базы в чертеж (расширенные данные или атрибут + словарь). И затем, можно получить спецификацию на чертеж не используя БД. Считаю очень надежный вариант, в случае изменения БД или её отсутствия.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
В .Net вы будете подключаться, не используя диспетчера. Я использую бесплатную SQLite, например - зачем дополнительная зависимость от проприетарного ПО. Но это дело вкуса
Как по скорости работы с БД такой вариант ? Нет проблем ? В том то и дело, что еще пытаюсь сделать так, чтобы можно было использовать БД, не устанавливая доп. ПО на рабочее место. В варианте с БД AutoCAD настраиваем только подключение и в редких случаях может потребоваться установка драйвера БД. Ради этого можно и поизвращаться ))

Последний раз редактировалось sergeyVostok, 22.05.2019 в 15:37.
sergeyVostok вне форума  
 
Непрочитано 22.05.2019, 15:52
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Вся инфа заносится из базы в чертеж (расширенные данные или атрибут + словарь). И затем, можно получить спецификацию на чертеж не используя БД. Считаю очень надежный вариант, в случае изменения БД или её отсутствия.
пользователь без дополнительных надстроек данные из XData/Словарей не считает. И куда может деться БД - сделайте служебную папку в проекте, и создавайте там копию БД с используемыми на текущий момент записями. Или делайте центральную БД, куда рядовой пользователь при всем желании не сможет свои шаловливые ручёнки запустить.

Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Как по скорости работы с БД такой вариант
не мгновенно, естественно) Это как построишь работу с нею, будешь ли ту же индексацию использовать и т.п.
Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
чтобы можно было использовать БД, не устанавливая доп. ПО на рабочее место. В варианте с БД AutoCAD настраиваем только подключение и в редких случаях может потребоваться установка драйвера БД.
тыц - лежит дополнительно одна соответствующая сборка (только надо брать версии с вшитыми библиотеками С++).
Права администратора не нужны - подключаете в проект скаченную по ссылке сборку и напрямую работаете в коде с БД в виде одного файла. И там возможности по минимуму, конечно, по сравнению с другими СУБД - но как локальное хранилище меня пока вполне устраивает)
Сергей812 вне форума  
 
Автор темы   Непрочитано 22.05.2019, 16:43
#11
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
пользователь без дополнительных надстроек данные из XData/Словарей не считает. И куда может деться БД - сделайте служебную папку в проекте, и создавайте там копию БД с используемыми на текущий момент записями. Или делайте центральную БД, куда рядовой пользователь при всем желании не сможет свои шаловливые ручёнки запустить.
Каких надстроек ? Вы имеете ввиду некую программу на LISP ? Ну это не проблема, программа на LISP будет подключена. Да, придется загрузить программу на LISP для конкретного пользователя. Делов на пол минуты.

С тех рабочих мест, где будет установлена БД, она в принципе никуда не денется. Но во первых, из неё могут быть удалены записи, которые кому-то покажутся например уже не используемыми. С течением времени. Например, изменился поставщик или элементы сняты с производства. Либо чертеж открывается спустя так лет N, а за актуальность ID в БД уже никто ручиться не может. Специально за БД думаю никто следить не будет. В общем всякие случаи могут быть.
Ну а если пришел со своим чертежом к кому-нибудь "в гости", то там БД точно не будет. Проще подключить LISP программу, извлекающую данные из чертежа, чем таскать с собой БД и делиться ей.
А вероятнее всего, этой БД буду пользоваться только я )))) ибо вся организация работает в AutoCad можно сказать как на кульмане ) поэтому для себя решил автоматизировать составление спецификации и еще добавить некоторые функции, таким образом отгородив себя от пустой траты времени )
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
тыц - лежит дополнительно одна соответствующая сборка (только надо брать версии с вшитыми библиотеками С++).
Спасибо, посмотрю.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
и напрямую работаете в коде с БД в виде одного файла
А в чем писать код ? C++ ? AutoLISP ? В какой IDE ?
sergeyVostok вне форума  
 
Непрочитано 22.05.2019, 17:20
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Но во первых, из неё могут быть удалены записи, которые кому-то покажутся например уже не используемыми. С течением времени. Например, изменился поставщик или элементы сняты с производства. Либо чертеж открывается спустя так лет N, а за актуальность ID в БД уже никто ручиться не может. Специально за БД думаю никто следить не будет. В общем всякие случаи могут быть.
вот тут люди недавно обнаружили, что у них нулями вместо содержимого файлы на сервере забиты) Через N лет может сам акад прекратить свое существование в нынешнем виде или какая то другая программа станет стандартом де-факто, а физическая сохранность БД хоть как то гарантируется ее своевременным бэкапом. Поэтому и предложил сохранять копию БД с необходимыми используемыми записями в самом проекте - не нашли в основной БД, автоматически ищет в служебной папке.

Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
А в чем писать код ? C++ ? AutoLISP ? В какой IDE ?
любой .Net язык и любая бесплатная студия - только уговорить еще придется админа поставить, если на работе) А для затравки - сайт Бушмана, там на главной странице есть ссылки на другие полезные ресурсы. Хотелки за пределы лиспа начинают выходить у вас, имхо - не чтобы работало, а чтобы было удобно и красиво)
Сергей812 вне форума  
 
Непрочитано 22.05.2019, 18:11
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Еще раз опишу логику задуманного:
1. вставляю в поле чертежа динамический блок;
2. вылетает таблица БД, где необходимо выбрать нужный элемент;
3. занести данные из поля выбранной строки в расширенные данные динамического блока (или примитива - не важно);
Логика нерациональная.

Лучше так:
1. Из лисп вызывается программа работы с БД - (COM-сервер).
2. В БД что-то делается - редактируется. В частном случае выбирается запись нужного "резистора".
3. Любые сведения о выбранной записи возвращаются в Лисп, а БД закрывается.
4. Лисп делает с полученными данными то, что умеет. Вставляет блок, например, привязывает РД и т.п.

Но в РД надо хранить не данные, а только таблицу и ID в БД.

Всё это годами проверено в разнообразных работах, вплоть до ГИС на базе AutoCAD.
ShaggyDoc вне форума  
 
Непрочитано 22.05.2019, 18:19
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
(COM-сервер).
Дополню. Вместо СОМ-сервера сейчас можно вставки .Net кода в Lisp-обертке делать.
Сергей812 вне форума  
 
Автор темы   Непрочитано 22.05.2019, 20:51
#15
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Лучше так:
1. Из лисп вызывается программа работы с БД - (COM-сервер).
2. В БД что-то делается - редактируется. В частном случае выбирается запись нужного "резистора".
3. Любые сведения о выбранной записи возвращаются в Лисп, а БД закрывается.
4. Лисп делает с полученными данными то, что умеет. Вставляет блок, например, привязывает РД и т.п.

Но в РД надо хранить не данные, а только таблицу и ID в БД.
Да оно у меня собственно так и работает. Сначала по нажатию кнопки макрос из файла вставляет блок, а потом запускается LISP-программа, вызывает БД .... ну и дальше поехало ....
Какую таблицу имели ввиду ? У меня марка резистора что-то типа: "Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ " По такому же типу остальные элементы: конденсаторы, полупроводники, разъемы и т.д.
То есть данных с DXF кодом 1000 должно хватить - строковая константа длиной не более 255 знаков.
Поэтому я и говорю, что есть соблазн хранить данные элемента в его дин. блоке и БД после завершения работ над чертежом в принципе уже не нужна. Можно делать спецификацию прямо из данных чертежа. Вы мне так и не привели какие минусы в такой логике работы ? Ничего криминального не вижу. Разве только что возможные тормоза из-за того, что к каждому элементу будут прикреплены расширенные данные. Тут на практике только можно понять, как это отразится на производительности. Но и чертежи не объемные, не архитектурные планы. Да и никто не мешает продублировать функцию, и составлять спецификацию, если это необходимо, обращаясь повторно к БД.

В общем понял я, что начинать нужно курить COM технологии.

Последний раз редактировалось sergeyVostok, 22.05.2019 в 20:58.
sergeyVostok вне форума  
 
Непрочитано 22.05.2019, 21:30
#16
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


1. FDO - прямое подключение к БД
2. dbConnect - прямое подключение к БД
3. .NET - ставим Visual Studio и делаем как хотим

Lisp, COM - нафиг такое старьё?
trir вне форума  
 
Непрочитано 22.05.2019, 22:32
#17
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Какую таблицу имели ввиду ? У меня марка резистора что-то типа: "Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ " По такому же типу остальные элементы: конденсаторы, полупроводники, разъемы и т.д.
То есть данных с DXF кодом 1000 должно хватить - строковая константа длиной не более 255 знаков.
В БД есть таблицы, каждая со своим уникальным именем-ключем. Каждая строка таблицы обычно имеет уникальный ключ-идентификатор (Primary Key). А вот это значение "Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ" будет уже в другом столбце данной таблицы БД. Т.е. условно говоря, если примитиву присвоите в XData два значения - имя таблицы "Резисторы" и значение ключа - то в любой момент времени сможете получить всю информацию из БД по этому резистору - и название, и габариты, и т.д. При этом сможете модифицировать таблицу, не трогая ее названия и столбца Primary Key - когда еще какая то задумка придет в голову, и для нее понадобятся дополнительные данные.
Сергей812 вне форума  
 
Непрочитано 23.05.2019, 06:03
#18
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Да оно у меня собственно так и работает. Сначала по нажатию кнопки макрос из файла вставляет блок, а потом запускается LISP-программа, вызывает БД .... ну и дальше поехало ....
Какую таблицу имели ввиду ? У меня марка резистора что-то типа: "Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ " По такому же типу остальные элементы: конденсаторы, полупроводники, разъемы и т.д.
То есть данных с DXF кодом 1000 должно хватить - строковая константа длиной не более 255 знаков.
Как раз не так. Надо не сначала вставлять блок, а потом, после выбора из БД. В том числе, возможно, и имя самого блока. А может быть и не блока, а например проводника. При этом в БД может быть и строка Лисп-выражения (метод рисования)для "рисования" чего угодно. Хоть блоками, хоть любыми примитивами, хоть целой библиотечной программой. Т.е. это может быть и своеобразное меню, в котором может быть неограниченное количество пунктов.

Рассчитывать на "должно хватить" не стоит. Завтра будет что-то другое и этой строки не хватит. Будет не короткое название "Резистор", а длинное, они бывают и в несколько строк, и вся идея накрылась.

Вообще не нужно хранить в чертеже всю семантическую информацию об изделии. Только ключ. А описательную часть (формулировка заказа) всегда можно извлечь из БД, причем в самом свежем виде.

Да и динамические блоки при программном рисовании совсем не нужны. Информацию можно связать с любым примитивом.

Цитата:
Сообщение от trir Посмотреть сообщение
1. FDO - прямое подключение к БД
2. dbConnect - прямое подключение к БД
3. .NET - ставим Visual Studio и делаем как хотим

Lisp, COM - нафиг такое старьё?
Да конечно, можно по-разному. Но если ошибки на стратегическом уровне, тут и современные инструменты не помогут. Однако в любом случае надо разделить "вижуальную" часть работы с БД, причем безо всяких архаичных DCL, и "рисовальную", которую LISP может лучше сделать.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 23.05.2019, 08:55
#19
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Но если ошибки на стратегическом уровне
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Как раз не так. Надо не сначала вставлять блок
Ошибок на стратегическом уровне нет, ибо уровень не стратегический, пишу под себя. Заодно учусь. Задача, при наличии информации и знаний, не большая.
В принципе обо всем подумал. Вы уж тут сильно замудрили ))) У меня вполне конкретная задача, без сетей. Для интерфейса создана одна пользовательская панель с кнопками блоков. Зачем их рисовать в LISP ? Зачем мудрить. Рисуем изображение элемента и сохраняем в отдельный файл. Каждый элемент - отдельный файл. Получится база компонентов. Вставляются макросом по нажатию кнопки соответствующего типа элемента.
LISP запускается именно после вставки блока, т.к. после появления БД, можно нажать "отмена" и таким образом вставить безымянный блок (элемент), если его марка еще не определена. Марку определить из БД позже.



Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вообще не нужно хранить в чертеже всю семантическую информацию об изделии.
Можете сказать почему ? Если эта информация пару сотен символов на каждый элемент. Сильно подтормаживает работу ? Но по моему в чертеже итак куча не визуальной информации в таблицах и несколько тысяч добавленных символов не скажутся на работе с документом. Это даже не крохи от общего объема информации. Ну это моё мнение. Вы может лучше меня знаете к чему это приведет. Интересно посмотреть на практике.


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
надо разделить "вижуальную" часть работы с БД, причем безо всяких архаичных DCL, и "рисовальную", которую LISP может лучше сделать
рисовальная часть отделена от программы работы БД. Это другая программа, естественно. Часть задач рисуется блоками, часть - LISP программой.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Рассчитывать на "должно хватить" не стоит.
Согласен. Если это перерастет в серьезное ПО, то задача будет поставлена и решена заново. А пока в варианте "минимум". Сегодня открываю книги по .NET ))

Последний раз редактировалось sergeyVostok, 23.05.2019 в 09:16.
sergeyVostok вне форума  
 
Непрочитано 23.05.2019, 09:16
| 1 #20
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Ошибок на стратегическом уровне нет, ибо уровень не стратегический, пишу под себя. Заодно учусь.
Вот в этом и заключается стратегическая ошибка. "Под себя", под сиюминутную текущую работу. И учиться надо правильному, а не то, что придет в голову.

Это сейчас имеет дело с несколькими изделиями, на каждое из которых можно "макрос на кнопку" сделать. Что, всю жизнь так и будет?

Для примера - база данных электрооборудования, используемая для формирования СО. Причем это фрагмент, всего 798 позиций. Её можно и редактировать, и выбрать позицию. В ней содержится вся необходимая информация, вплоть до фотографии. Любую позицию можно легко найти, как визуально, так и поиском.

И эта же самая программа работает с любой другой БД на что угодно. Всего имеется 33 таких тематических БД, можно еще сколько угодно сделать.

Впрочем, видимо "не в коня корм".
Миниатюры
Нажмите на изображение для увеличения
Название: so_electro.jpg
Просмотров: 61
Размер:	99.9 Кб
ID:	214396  
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 23.05.2019, 09:31
#21
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Впрочем, видимо "не в коня корм"
Ну видимо да. Вы же задачу лучше меня думаю не знаете ))) Кто может знать, как мне нужно формировать чертеж лучше меня. Именно пишется под себя и под сиюминутную задачу.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Это сейчас имеет дело с несколькими изделиями, на каждое из которых можно "макрос на кнопку" сделать. Что, всю жизнь так и будет?
Не изделиями, а УГО - условно-графическими обозначениями. Кнопки делаются под них. И именно всегда так и будет, потому что их количество жестко оговорено ГОСТом.

Вот вы ... ))) Я вас прекрасно понимаю, что можно делать БД с большим объемом информации: фото, ссылки, даташиты и т.д. Но мне это не нужно. Я интересовался на первом этапе вопросом взаимодействия штатной таблицы БД с "мышью" пользователя. Понял, что это невозможно либо делать вариант через ObjectARX, о котором пока никто не рассказал.

Благодарю за примеры БД. Очень считаю удобно, к этому нужно стремиться. Интересные вещи, просто интересно это знать. Но пока это не по моей части. Нужна простейшая, примитивная база. Цель - спецификация на чертеж. Всё ! Именно поэтому в БД кроме поля "наименование" ничего не нужно )))

А на чем написана приведенная в предыдущем посте БД ?

Последний раз редактировалось sergeyVostok, 23.05.2019 в 09:55.
sergeyVostok вне форума  
 
Непрочитано 23.05.2019, 10:00
#22
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Я вас прекрасно понимаю, что можно делать БД с большим объемом информации: фото, ссылки, даташиты
читаете по диагонали:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
При этом сможете модифицировать таблицу, не трогая ее названия и столбца Primary Key - когда еще какая то задумка придет в голову, и для нее понадобятся дополнительные данные.
т.е. развязываете интерфейс взаимодействия с БД самого чертежа *.dwg и привязанными данными. Вот и делаете примитивную БД:

ID Name
1 Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ
2 Р-12-0,25 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ

привязываете к чертежу. А потом расширяете содержимое таблицы по необходимости. Хотя изначально для тех же постоянных резисторов в УГО заложена их мощность - поэтому напрашивается сделать еще один столбец сразу - Мощность Рассеивания и либо выбирать параметр видимости динблока резистора по мощности выбранной позиции, либо при выборке из БД передавать в SELECT текущее состояние видимости - чтобы он выдал резисторы только данной мощности. И т.п. А потом подумайте, например, что понадобиться заменить марку резисторов сразу на всей схеме, но все резисторы разной мощности и номинала - вручную все менять? Или ввести столбцы сопротивления, точности, марку, тип и т.п. и задав маску в диалоге - все разом поменять? Чем меньше "жестких" связей с данными внутри чертежа - тем проще будет модифицировать программу в дальнейшем.
Сергей812 вне форума  
 
Автор темы   Непрочитано 23.05.2019, 10:23
#23
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
т.е. развязываете интерфейс взаимодействия с БД самого чертежа *.dwg и привязанными данными. Вот и делаете примитивную БД:

ID Name
1 Р-12-0,125 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ
2 Р-12-0,25 120 Ом +/- 5% АБВГД.1234.0000.ЮЯ

привязываете к чертежу. А потом расширяете содержимое таблицы по необходимости. Хотя изначально для тех же постоянных резисторов в УГО заложена их мощность - поэтому напрашивается сделать еще один столбец сразу - Мощность Рассеивания и либо выбирать параметр видимости динблока резистора по мощности выбранной позиции, либо при выборке из БД передавать в SELECT текущее состояние видимости - чтобы он выдал резисторы только данной мощности. И т.п. А потом подумайте, например, что понадобиться заменить марку резисторов сразу на всей схеме, но все резисторы разной мощности и номинала - вручную все менять? Или ввести столбцы сопротивления, точности, марку, тип и т.п. и задав маску в диалоге - все разом поменять? Чем меньше "жестких" связей с данными внутри чертежа - тем проще будет модифицировать программу в дальнейшем.
Серег, не поверишь, но я это уже сделал еще до создания этой темы ))) И поле "ID", и поле "мощность", и поле "номинал", и поле "точность", и поле "фирма". Можно сделать любую сортировку непосредственно в таблице БД. В чертеж из таблицы будут забираться данные из поля "Name". Можно реализовать другую логику и брать из поля ID. Повторю, для меня это не вопрос.
Я спрашивал не об этом. Не о структуре БД. Я интересовался возможностью взаимодействия штатной таблицы БД с "мышью" пользователя. Либо об инструментах, с помощью которых можно заменить штатную БД и написать свою. Но я не спрашивал как мне реализовывать структуру, топологию и т.д. БД. С этим у меня нет вопросов.
Ну в самом деле ))) Поэтому про чтение по диагонали я бы не стал говорить и тема уходит в оффтоп. Что такое ключ в БД, какие должны быть поля в БД, сколько таблиц в БД и их взаимосвязи - с этим у меня нет вопросов.

Я понял, что нужно брать .NET и писать что-то свое или через API попробовать перехватить событие в штатной БД.
sergeyVostok вне форума  
 
Непрочитано 23.05.2019, 10:56
#24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Я понял, что нужно брать .NET и писать что-то свое
.Net + WPF. Примеры в инете есть под большую часть распространенных БД, включая и Access)
Сергей812 вне форума  
 
Автор темы   Непрочитано 23.05.2019, 11:02
#25
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
.Net + WPF. Примеры в инете есть под большую часть распространенных БД, включая и Access)
Во )))) Премного благодарен )) Будем посмотреть )
sergeyVostok вне форума  
 
Непрочитано 23.05.2019, 11:10
#26
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Серег, не поверишь, но я это уже сделал еще до создания этой темы ))) И поле "ID", и поле "мощность", и поле "номинал", и поле "точность", и поле "фирма". Можно сделать любую сортировку непосредственно в таблице БД. В чертеж из таблицы будут забираться данные из поля "Name". Можно реализовать другую логику и брать из поля ID. Повторю, для меня это не вопрос.
если не вопрос - то не возникало бы вопроса, зачем не надо хранить всю информацию в самом чертеже

Кстати, появляются периодически вопросы - как защитить содержимое *.dwg чертежей, чтобы другие не могли на "шару" пользоваться. А вот так и защищать - средства ускорения работы программные и их защищать, а кто получит сам чертеж с одними идентификаторами - ну сможет блоки позаимствовать, оформление. А со всем остальным обломится) А чертежи уходят налево только так, если в организации нет жесткого контроля за этим.
Сергей812 вне форума  
 
Непрочитано 23.05.2019, 11:29
#27
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Либо об инструментах, с помощью которых можно заменить штатную БД и написать свою.
не совсем заменить, но...
папкаавтокада\Sample\Database Connectivity\CAO
Vov.Ka вне форума  
 
Автор темы   Непрочитано 23.05.2019, 11:47
#28
sergeyVostok


 
Регистрация: 15.03.2019
Сообщений: 18


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если не вопрос - то не возникало бы вопроса, зачем не надо хранить всю информацию в самом чертеже
ну так рассказали бы ) получается вопрос чисто в безопасности в случае утечки и никак не связан с непосредственной работой чертежа ) ну с таким же успехом тогда утечет и готовая спецификация ) Но всё это не по теме !
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Кстати, появляются периодически вопросы - как защитить содержимое *.dwg чертежей, чтобы другие не могли на "шару" пользоваться. А вот так и защищать - средства ускорения работы программные и их защищать, а кто получит сам чертеж с одними идентификаторами - ну сможет блоки позаимствовать, оформление. А со всем остальным обломится) А чертежи уходят налево только так, если в организации нет жесткого контроля за этим.
Правильный подход, согласен. Но извиняюсь, не по теме. Тем кому нужно обсудить защиту информации, открывайте соответствующий раздел и тему ))

Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
не совсем заменить, но...
папкаавтокада\Sample\Database Connectivity\CAO
Вот это уже в тему. Что в папке, примеры работы с БД ?

Последний раз редактировалось sergeyVostok, 23.05.2019 в 12:17.
sergeyVostok вне форума  
 
Непрочитано 23.05.2019, 12:00
#29
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Offtop:
Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Тем кому нужно обсудить защиту информации, открывайте соответствующий раздел и тему ))
Если бы не смотрели так узколобо - "это по делу, а это нет", то подумали бы об том - для чего это все делаете. Какая ситуация общая в стране, что ваши умения программирования для работодателя ничего не стоят (так как не профильное) - а вот если получиться быстрее делать: то это ваш конкурентное преимущество перед другими и раздавать это свободно - каждый решает сам, конечно.. И что защиту разработок от свободного хождения нужно еще на этапе общей архитектуры системы продумывать, чтобы не оставлять "открытых ворот" потом. Но вы же лучше всех все знаете - вам нужно лишь четкие правильные готовые решения. Успехов)
Сергей812 вне форума  
 
Непрочитано 23.05.2019, 12:47
#30
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от sergeyVostok Посмотреть сообщение
Вот это уже в тему. Что в папке, примеры работы с БД ?
да
там есть пример файл db_samp.dwg и база для него
загружай лисп и смотри
лично я в этом не очень разбираюсь
предпочитаю в качестве базы использовать таблицы экселя
Vov.Ka вне форума  
 
Непрочитано 25.05.2019, 01:15
#31
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


https://habr.com/ru/post/271109/
trir вне форума  
 
Непрочитано 25.05.2019, 13:50
#32
AlexZh


 
Регистрация: 23.09.2015
Сообщений: 146


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop:
Если бы не смотрели так узколобо - "это по делу, а это нет", то подумали бы об том - для чего это все делаете. Какая ситуация общая в стране, что ваши умения программирования для работодателя ничего не стоят (так как не профильное) - а вот если получиться быстрее делать: то это ваш конкурентное преимущество перед другими и раздавать это свободно - каждый решает сам, конечно.. И что защиту разработок от свободного хождения нужно еще на этапе общей архитектуры системы продумывать, чтобы не оставлять "открытых ворот" потом. Но вы же лучше всех все знаете - вам нужно лишь четкие правильные готовые решения. Успехов)
А мне эта тема интересна. Можно где-нибудь подробнее посмотреть?

Или может эту тему закрепить? Тема интересная, а информации в сети (на русском) маловато....

Как например, через LISP делать взаимосвязь элементов (расширенных данных) и БД. Как делать связь БД с MS Word/Excel и т.д.
__________________
Проекты СС
AlexZh вне форума  
 
Непрочитано 25.05.2019, 14:49
#33
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от AlexZh Посмотреть сообщение
А мне эта тема интересна. Можно где-нибудь подробнее посмотреть?
как вы думаете - кто-то в здравом уме будет выкладывать коды/подробное описание рабочих вариантов своих защит?) Но явно защита должна быть не уровня - введите пароль или получите какой то из параметров компа - и разрешите дальше работать в случае совпадения. Это действительно "открытые ворота" по сути. Хотя и подобная защита для 99% "непрограммистов"-пользователей станет непреодолимом препятствием, имхо)

Цитата:
Сообщение от AlexZh Посмотреть сообщение
Как делать связь БД с MS Word/Excel и т.д.
не связь. Рассматривайте документы офиса как шаблоны для вывода отчетов, сформированных на базе информации из БД. Поменяют завтра визуальный формат документов, а в программу жестко зашита взаимосвязь - и все, приехали?) А так переписать лишь малую часть кода, отвечающий за непосредственный вывод в шаблоны.
Сергей812 вне форума  
 
Непрочитано 25.05.2019, 14:59
#34
AlexZh


 
Регистрация: 23.09.2015
Сообщений: 146


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
как вы думаете - кто-то в здравом уме будет выкладывать коды/подробное описание рабочих вариантов своих защит?) Но явно защита должна быть не уровня - введите пароль или получите какой то из параметров компа - и разрешите дальше работать в случае совпадения. Это действительно "открытые ворота" по сути. Хотя и подобная защита для 99% "непрограммистов"-пользователей станет непреодолимом препятствием, имхо)
не нужны мне никакие коды и данные. хочу посмотреть на реализацию связи.
я даже не могу соединиться с базой данный из папки Sample....
__________________
Проекты СС
AlexZh вне форума  
 
Непрочитано 25.05.2019, 15:21
#35
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от AlexZh Посмотреть сообщение
хочу посмотреть на реализацию связи.
В главе 19 "Работа с базой данных" книги "САПР на базе AutoCAD - как это делается" рассматривается на примерах, как работать с БД, начиная с подключения.

Вот тут пример есть куценький и с пояснениями на английском.
Сергей812 вне форума  
 
Непрочитано 25.05.2019, 22:11
#36
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
Как например, через LISP делать взаимосвязь элементов (расширенных данных) и БД. Как делать связь БД с MS Word/Excel и т.д.
очень глупо делать такое на AutoLisp'е
trir вне форума  
 
Непрочитано 04.06.2019, 03:46
#37
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от trir Посмотреть сообщение
очень глупо делать такое на AutoLisp'е
Уж не потому ли, что в нем как бы есть своя собственная база данных - ассоциативный список?
skkkk вне форума  
 
Непрочитано 04.06.2019, 07:07
#38
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
Уж не потому ли, что в нем как бы есть своя собственная база данных - ассоциативный список?
это разные вещи
trir вне форума  
 
Непрочитано 04.06.2019, 09:47
#39
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,052


Цитата:
Сообщение от skkkk Посмотреть сообщение
Уж не потому ли, что в нем как бы есть своя собственная база данных - ассоциативный список?
БД - это не просто хранение информации, но и обеспечение ее целостности при операциях модификации БД. Упрощенно говоря: вылетело ли приложение, ребутнулся комп и т.д. - информация в БД должна остаться согласованной, а не часть старого содержимого, часть нового и часть битой информации, которая не успела записаться на энергонезависимый носитель информации во время сбоя. И, кстати, что называют чертеж акада базой данных (и это прослеживается в названиях тех же классов) весьма условно - иначе не было активной ветки о восстановлении файлов)
Сергей812 вне форума  
 
Непрочитано 04.06.2019, 11:35
#40
ShaggyDoc

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, которую почему-то боятся, как черт ладана.

А ассоциативный список - это никакая не база данных, сколько бы по невежеству не написали статей "скажи НЕТ субд! ЛИСП НЕ НУЖДАЕТСЯ НИ В КАКИХ ВНЕШНИХ БАЗАХ ДАННЫХ !!!".
ShaggyDoc вне форума  
 
Непрочитано 04.06.2019, 12:16
#41
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
Модель «ключ — значение» является простейшим вариантом, использующим ключ для доступа к значению. Такие системы используются для хранения изображений, создания специализированных файловых систем, в качестве кэшей для объектов, а также в системах, спроектированных с прицелом на масштабируемость. Примеры таких хранилищ — Berkeley DB, MemcacheDB, Redis, Riak, Amazon DynamoDB.
https://ru.wikipedia.org/wiki/NoSQL
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Взаимодействие с таблицей БД

Размещение рекламы


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