|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как написать программу для AutoCAD 2009?, которая используя координаты хранящиеся в Access 2003 начертит трассу со свойством PLine и выбором слоя.
Оросительные системы
Регистрация: 02.07.2010
Сообщений: 166
|
||
Просмотров: 11985
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
выложи файл Access с примером
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 15.10.2010 в 21:43. |
|||
![]() |
|
||||
Оросительные системы Регистрация: 02.07.2010
Сообщений: 166
|
Вот он файл Accsess, но Ваш вопрос на счет примера не понял. В общем таких вот таблиц в базе у меня будет очень много и по данным каждой из них нужно начертить в Автокаде отдельную трассу в полилайне и задать ей конкретный слой.
Что-то выложить файл не удается. Нажал на управление с вложениями и загрузил, но че-то файла не видно ![]() С уважением, rassom Последний раз редактировалось rassom, 15.10.2010 в 19:44. Причина: Забыл выложить файл |
|||
![]() |
|
||||
Цитата:
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 15.10.2010 в 21:02. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
из этого я пологаю, что лисп это что-то не серьезное?
получить полилинию по координатам из access на "несерьезном" лиспе дело 30 минут. Автору - выложи формат бд.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
ты прекрасно понял, в каком контексте это было сказано, не стоит провацировать холивар.
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Для работы с БД из lisp сущесвует библиотека ADOLISP Database Library Осталось правильно составить SQL запрос. Здесь на форуме уже обсуждались похожие проблемы. Нелохо бы с этим ознакомится так же для начала.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
по первому пункту - ну пошутил ![]()
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
![]() Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 15.10.2010 в 22:12. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Хранить координаты (каждая вершина это список из двых или трех точек) в таблицах БД Acces можно двумя основными способами: 1. В какой-то таблице создается MEMO-поле (можно текстовое) и в этом поле хранится список координат в каком-то формате. Другие поля - по разумению, можно и атрибутивную информацию держать. Это очень простое решение - можно вообще одной таблицей обойтись. Если эта база предназначена только для вычерчивания в AutoCAD, то список можно сделать прямо в виде LISP-списка, который потом можно прочитать и нарисовать линии. Если БД "общего назначения", надо сделать что-то универсальное, используя разделители чисел и точек. 2. Создается специальная таблица с ключевым полем и полями типа X, Y, Z числового типа. В этой таблице находятся координаты всех линий, атрибутивная информация находится в другой таблице и осуществляется связь по ключевым полям. Здесь уже надо заботиться о целостности данных, да и выборку из такой БД сложнее делать. Интересный вопрос - как координаты будут попадать в БД? Хорошо еще если есть какие-то источники их поступления. Извлечение данных из БД делается достаточно просто, через SQL-запрос. Изучать надо SQL, технологию ADO и собственно AutoCAD - если уж чертить в нем. Разумеется всяким мудрым советам по поводу Excel не стоит следовать - это "чтоб мужика запутать и не дать ему дохтуром стать". И конечно же есть другие системы (не AutoCAD), где хранение координат и информации в БД реализовано изначально, в том числе и рисование. |
|||
![]() |
|
||||
я надеюсь, что вам полегчало
![]() вообще-то я показал вариант, который уже можно использовать без кодинга и рассусоливаниях о том, что нужно изучать. ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
От себя хочу добавить - что если "по хорошему" - то только вторым способом, ибо в конечном итоге с первым гемора будет больше и закончится он только (гемор) при переходе ко второму.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
И самый лучший способ - когда об этом и не надо задумываться. Такое реализовано уже в нескольких СУБД. Координаты объектов хранятся в отдельных таблицах, семантические данные - во многих других, и они только ссылаются на "пространственные" данные. Пользователю или прикладному программисту вообще ничего не надо об этом знать - он создает, например, дополнительные таблицы с семантикой, а пространственные данные где-то сохраняются "сами". И еще один важнейший вопрос - как отобрать необходимые данные, например для рисования хоть в Автокаде. Т.е. для составления самого SQL-запроса. Здесь без визуальной части работы с БД никак не обойтись. Причем желательно чтобы просмотр семантики сопровождался и просмотром геометрии. Как работает SQL можно прямо на примере форума увидеть. У форума есть БД. В ней десятки таблиц. В них находятся, наверное, уже несколько миллионов записей. Зайдя на форум и щелкнув "Новые сообщения" я посылаю "запрос" search.php?do=getnew (это видно в адресной строке). На этот запрос каждый посетитель получит свои данные. Выбрав конкретную тему мы посылаем "запрос" наподобие showthread.php?t=58427. Конечно, посетитель запросы не набирает, это делает программа - движок форума. Запрос из адресной строки она преобразует в настоящий SQL-запрос, посылает его к серверу БД, а тот возвращает результат в виде, например, сборника текстов сообщений по теме. Этот результат еще преобразуется в HTML-код, чтобы показать нам, бродягам в браузере. Вот примерно такое же и надо делать с любыми БД. Только отображение по-разному надо решать. |
|||
![]() |
|
||||
Цитата:
Особенно понравилось плавное переползание на тему SQL-запросов к форумам. ![]() ![]() По теме топика - тынц.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Оросительные системы Регистрация: 02.07.2010
Сообщений: 166
|
Цитата:
Заранее благодарю всех за новые ответы. |
|||
![]() |
|
||||
Цитата:
![]() Последний раз редактировалось Do$, 21.10.2010 в 08:24. Причина: Исправил последствия бага инструмента цитирования сообщений. |
||||
![]() |
|
||||
ты автором цитаты не того указал
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Напугали мужика, что он с темы соскочил.
Для акцесса проще написать ВБА и повестить на кнопку. На входе процедуры строка запроса, в результате работы - черчение через объектную модель АвтоКАДа.
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
Я бы не рекомендовал использовать VBA в автокаде, когда совсем закончится его поддержка, что вы будете делать?
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Так или иначе, объектную модель врядли отменят. Я имел ввиду VBA в Акцессе и доступ через объектную модель (библиотеку типов автокада), сам автокад предварительно не открывая.
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
Цитата:
Это факт. Цитата:
![]() ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Оросительные системы Регистрация: 02.07.2010
Сообщений: 166
|
Цитата:
|
|||
![]() |
|
||||
Через объектную модель AutoCAD, не открывая его?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
не работает у тебя - я только что скинул её (для проверки) нескольким людям - у них всё работает. Возможно, что админы твоей компании поставили запрет на посещение пользователями сайта YouTube.
Offtop: а ты шустро общаешся - в день по сообщению ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 21.10.2010 в 10:58. |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Вот пример база db1 в ней Форма1, надо выбрать трассу и жать кнопку с биноклем, ошибок не обрабатывал, чертит трассу в файл рядом с базой. акцес-2003, автокад 2009 (2008, 2007)
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
>Сергей Дубина
Довольно таки недурно... Правда если "придираться", то возникает ряд небольших замечаний: 1. В коде жёстко задано, чтобы mdb-файл находился в "Моих Документах" - иначе файл не находится и генерируется ошибка. 2. Не проставляется нумерация точек (причём желательно на спец. отведённом для этого дела слое). 3. Хранить все данные в одной таблице, в данном случае нецелесообразно, в виду дубляжа информации (но для примера сойдёт). Вносить данные в такую таблицу тоже довольно таки неудобно. 4. Пользователь жмет кнопку, и сидит в ожидании сообщения, что мол операция выполнена, а сообщения никакого нет... 5. По поводу VBA-кода: код довольно компактный (весомый плюс). Замечания следующие: 5.1 Открывать подключение нужно как можно позже, а закрывать, как можно раньше. Поэтому строки кода Код:
Код:
=================== В целом предложенный вариант решения мне понравился (указанные выше замечания легко устранимы).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Приведенный пример лишь демонстрация возможностей. В нем также не учитывается толщина линии о которой просил автор.
По замечаниям: Цитата:
п. 2 - не задавался целью. п. 3 - Давай не будем, об этом можно спорить бесконечно. п. 4 - Согласен п. 5.1. Согласен, спасибо. п. 5.2. Посоветуй статейку к.л. на эту тему.
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
А спорить и не нужно, есть такое понятие, как нормализация баз данных. Избыточности информации однозначно быть не должно (это даже не обсуждается). Поэтому указанное мною в п.3 - это указание на ошибку в проектировании структуры базы данных (если придираться).
Ну, тут даже если логически рассуждать, можно увидеть минус: - если по какой либо причине спустя некоторое время нужно будет подправить запрос - придётся вносить изменения в код и перекомпилировать его, а это не есть гуд. В среде разработчиков программного обеспечения, зашивание sql-кода в программный код считается очень плохим решением. Конкретных ссылок на статьи у меня нет, это нужно в гугле искать или проще - напрямую задавать на эту тему вопрос на форуме профессиональных программистов. Помнится в 2008 году я был на презентации MS Visual Studio 2008 в СПб, и там показывали пример, в котором программист прописал sql-запрос в коде приложения. Докладчик прокомментировал этот код так: "Надеюсь, что программист, написавший данный фрагмент кода, более не работает в этой компании". Вообще в идеале нужно взаимодействовать с базой данных посредством хранимых процедур, принимающих нужные параметры - это позволит избежать SQL-инъекций (ей зачастую подвержен код в котором для построения запроса используется конкатенация строк). Поскольку хранимка находится в базе данных, модификация запроса хранимки не потребует перекомпиляции исходного кода программы + защита от SQL-инъекций. Нет. Думаю, что он использует значение CurrentDirectory - каталог, который был выбран в последнем сеансе работы диалогового окна открытия файла/каталога в ОС Windows.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 29.10.2010 в 11:13. |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Вот любите вы программеры из пушки по воробьям стрелять.
Цитата:
Цитата:
А это надо еще проверить!
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
|||||
Цитата:
Нет, просто любое решение нужно изначально планировать и только потом садиться за код. Цитата:
Цитата:
![]() Ну так проверь ![]() Я писал: Цитата:
![]() п.с. Я только что проверил - моё предположение оказалось отчасти верным: Если через проводник открыть твой mdb-файл, лежащий не в "Моих Документах" и запустить команду построения трассы - получаю ошибку. Если файл закрыть (не закрывая Access) и затем в Access вызвать окно открытия файла, пройдя в нужный каталог и выбрать твой mdb-файл, то в этом случае для MS Access текущий каталог устанавливается на тот каталог, в который ты прошёл и выбрал mdb-файл. Теперь если запустить команду построения трассы - ошибки не произойдём и трасса будет вычерчена.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 29.10.2010 в 12:06. |
|||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |
Автозагрузка приложения до загрузки чертежа | Ax3 | Программирование | 14 | 15.02.2008 23:29 |