Архитектору и проектировщику|Тепло- и звукоизоляция URSA.RU
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > реализация задачи visual studio2012 (visual basic .net) autocad 2012, oracle11g

реализация задачи visual studio2012 (visual basic .net) autocad 2012, oracle11g

Ответ
Поиск в этой теме
Непрочитано 05.12.2012, 04:42 #1
реализация задачи visual studio2012 (visual basic .net) autocad 2012, oracle11g
Anta
 
Регистрация: 05.12.2012
Сообщений: 11

Здравствуйте, подскажите пожалуйста, передо мной поставлена задача:по нажатию на кнопку или выделению линии в datagridview выделить объект на плане в Autocad. В oracle11g создана таблица (таблица объектов, не удовлетворяющих критериям), хранящая информацию об объекте (id объекта и слой на котором расположен объект: это может быть линия, текст, полигон). В приложении на visual basic .net, я отображаю эту таблицу в stringgridview, необходимо по нажатию на линию или кнопку визулизировать (выделить) этот объект на плане. Возможно ли реализовать такую задачу на visual basic .net? если да, то с чего начать, подскажите, где примеры посмотреть по работе через (visual basic .net) с автокадом, в свое приложение я подключила библиотеки и у меня в работающем приложение сразу появилась ошибка: не могу конверировать объект datatable в autocad.datatable. хотя я еще не начала писать ничего,связанное с autocad. Спасибо!
Просмотров: 9291
 
Непрочитано 05.12.2012, 11:05
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Anta Посмотреть сообщение
таблица (таблица объектов, не удовлетворяющих критериям), хранящая информацию об объекте (id объекта и слой на котором расположен объект: это может быть линия, текст, полигон).
Если речь идёт об ObjectId, то это глухой номер, ибо:
Цитата:
Идентификаторы (ObjectId) объектов в базе данных существуют, только, когда база данных загружена в памяти. Как только база данных закрывается, идентификаторы объектов перестают существовать, и возможно будут отличаться при следующей загрузке этой базы данных.
Если во внешней базе данных хранить идентификаторы объектов чертежа, то для этого следует использовать Handle:
Цитата:
Метки (handles) остаются постоянными между сеансами работы AutoCAD, поэтому, их использование для доступа к объектам это лучший способ если вам нужно экспортировать информацию из чертежа во внешний файл и использовать её позже для обновления чертежа.
Цитата:
Сообщение от Anta Посмотреть сообщение
В приложении на visual basic .net, я отображаю эту таблицу в stringgridview, необходимо по нажатию на линию или кнопку визулизировать (выделить) этот объект на плане. Возможно ли реализовать такую задачу на visual basic .net?
Речь об автономном приложении, или о плагине, загружаемом в AutoCAD командой _Netload?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 06.12.2012, 05:27
#3
Anta


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


Цитата:
Сообщение от hwd Посмотреть сообщение
Если во внешней базе данных хранить идентификаторы объектов чертежа, то для этого следует использовать Handle:
подскажите, где хранится Handle, если я могу его выбрать, то буду сохранять и его в таблицу.
Цитата:
Сообщение от hwd Посмотреть сообщение
Речь об автономном приложении, или о плагине, загружаемом в AutoCAD командой _Netload? Handle:
Приложение автономное, но если таким образом нельзя решить задачу, то какой другой способ решения? Возможно загружать таблицу прямо при работе с файлом в автокад и написать код на vb-макрос или что-то подобное для организации связи с объектами и чтоб через эту таблицу было бы возможно выполнить Highlight?
Anta вне форума  
 
Непрочитано 06.12.2012, 10:38
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Anta Посмотреть сообщение
то буду сохранять и его в таблицу.
Не "и его", а именно его, поскольку хранить ObjectId нет смысла. Почитайте это. Это вы сохраняете в БД своего рода "метки", с помощью которых ссылаетесь на конкретные объекты в чертеже. В рамках данного чертежа эти метки уникальны и постоянны.
Цитата:
Сообщение от Anta Посмотреть сообщение
какой другой способ решения?
Не уверен, что правильно вас понял: вы хотите хранить во внешней базе данных (например в Oracle) графические примитивы и вставлять их в чертёж по мере необходимости? Если так, то хранить объекты вам придётся либо в формате DXF, либо нужную информацию сохранять в виде внешнего блока (т.е. блока, хранящегося во внешнем файле - как правило юзеры могут создавать его командой _Wblock, но вы можете делать это программно). Полученный файл сохраняете в базе данных СУБД как массив байтов.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 06.12.2012, 12:52
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,273
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
либо нужную информацию сохранять в виде внешнего блока (т.е. блока, хранящегося во внешнем файле - как правило юзеры могут создавать его командой _Wblock, но вы можете делать это программно)
Не рекомендую. Этот файл (как и любой другой dwg-файл) будет зависеть от версии AutoCAD.
Александр Ривилис вне форума  
 
Непрочитано 06.12.2012, 13:20
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Не рекомендую. Этот файл (как и любой другой dwg-файл) будет зависеть от версии AutoCAD.
Исходить следует из реальных условий, т.е. сохранять блоки в той версии DWG, с которой работают в компании, либо понижать версию, если при этом в блоках не теряются нужные возможности. Все последующие, более новые версии автокада, успешно будут работать с этими файлами, а если стараться хранить информацию так, чтобы можно было открывать файл в версии AutoCAD 1.0, то жертвовать придётся весьма многими возможностями - не вижу в этом смысла.

Впрочем это имхо.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 06.12.2012 в 13:34.
hwd вне форума  
 
Непрочитано 06.12.2012, 17:15
#7
ShaggyDoc

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


Цитата:
это может быть линия, текст, полигон
Уж не ГИС ли делаете? Имеется стандартное решение: такие объекты (точечные, линейные, полигональные) вообще не хранятся ни в DWG, ни в каких-то других графических форматах. В базе данных, помимо всяческих атрибутивных данных (семантики) хранятся и координаты объектов - пространственные данные.

В Oracle есть и специальное расширение - SpatialWare.

Когда их надо визуализировать, то "щелчком по кнопке" нужные объекты просто создаются в соответствующей графической среде (можно и в AutoCAD).
Редактирование пространственных данных может осуществляться разными способами - как по известным координатам вершин (например земельных участков), так и путем извлечения координат нарисованных объектов из графического редактора (например AutoCAD).

ГИС-технологии могут быть использованы не только с "картами", но и с любыми изображениями, имеющими координаты объектов (хоть здания, хоть схемы какие-нибудь). А в AutoCAD все объекты имеют координаты.

Да и вообще такие задачи сейчас нет смысла заново делать, так как все уже изобретено и полным-полно готовых решений, в том числе бесплатных или "практически бесплатных".
ShaggyDoc вне форума  
 
Непрочитано 06.12.2012, 17:17
#8
trir


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


очередное изобретение велосипеда, это всё можно реализовать штатными методами
Autocad: dbConnect
Autocad Map 3D: FDO, Oracle Spatial
trir вне форума  
 
Автор темы   Непрочитано 15.12.2012, 01:40
#9
Anta


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Уж не ГИС ли делаете? Имеется стандартное решение: такие объекты (точечные, линейные, полигональные) вообще не хранятся ни в DWG, ни в каких-то других графических форматах. В базе данных, помимо всяческих атрибутивных данных (семантики) хранятся и координаты объектов - пространственные данные.
Здравствуйте, имеено ГИС. Разработчик БД находится где-то в середине стадии разработки, для проверки на наличие "неправильных" объектов он sql запросом заносит результат запроса в таблицу (TableErreur), где хранится ID объекта (уникален)и слой объекта (таблица БД). VB он хочит получить визуальный доступ (Hithligth), выбрав строку с ID объекта.

Сегоданя разработчик БД ознакомил с принципом работы c "чертежем", вообщем это уже не "привычный" для меня чертеж , который хранится в файле dwg. Все элемены чертежа хранятся в БД Oracle. Геометрия объекта хранится в таблице, в поле GEOM, которое создается автоматически при создание Future class. К примеру имеется 30 чертежей (в каждом из чертежей есть по 30 слоев), все хранится в БД. Принцип работы: открываю Автокад подключаюсь к БД Oracle, загружается в автокад , в выпадающий список названия чертежей- 30 названий ( каждое название соотвествует одной схеме в Oracle), выбираю чертеж из списка и все элементы чертежа (линии, текст и тп) загружаются визуально в чертеж. Разработчик БД говорит о том, что как ObjectID я должна использовать ID (Элемента чертажа ) в таблицы, он уникален и не когда повторятся не будет.

-----
очередное изобретение велосипеда, это всё можно реализовать штатными методами
Autocad: dbConnect
Autocad Map 3D: FDO, Oracle Spatial
------

В Oracle Spatial и будим работать... для наших чертежников в VB клиентское приложение разрабатывается, что б они могли сделать Hithligth объекта и потом отредактировать его. Таблица ошибок уже не связанна с объектом, в ней хранится только его ID

Последний раз редактировалось Anta, 15.12.2012 в 01:49. Причина: подумав, добавила
Anta вне форума  
 
Непрочитано 15.12.2012, 16:14
#10
trir


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


ЗАЧЕМ??? AutoCAD Map 3D и так умеет это делать! А можно ещё использовать QGIS!
trir вне форума  
 
Непрочитано 15.12.2012, 16:18
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,742


Anta, ObjecID уникален в пределах одной сессии. Handle уникален в пределах файла (независимо от сессии). ObjectID - десятичное число, Handle - щестнадцатиричное.
Одно из двух - либо разработчик не понимает принципов работы AutoCAD, либо здесь у нас налицо испорченный телефон.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.12.2012, 16:23
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ObjectID - десятичное число, Handle - щестнадцатиричное.
гы... шестнадцатеричное, десятичное, восьмеричное, двоичное - это форма записи числа. Число можно записать в любом из перечисленных выше представлений. Тип числа и форма его записи - это разные понятия. Типы, это например int, long int, short int, unsigned int, unsigned long int и т.д.
hwd вне форума  
 
Непрочитано 15.12.2012, 16:39
#13
trir


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


Испорченный телефон, имеется в виду ключ в базе, а не в акаде. И кодить тут ничего не надо, а использовать любую ГИС - Map 3D или QGIS.
trir вне форума  
 
Автор темы   Непрочитано 16.12.2012, 23:33
#14
Anta


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


Цитата:
Сообщение от trir Посмотреть сообщение
Испорченный телефон, имеется в виду ключ в базе, а не в акаде. И кодить тут ничего не надо, а использовать любую ГИС - Map 3D или QGIS.
Да ключ в таблице БД Оракл, используется Autocad Map 3D 2012, просветите как использовать, таблица ошибок уже не связана с объектами, имеется возможность связать эту таблицу с объектами прямо в Autocad Map 3D?
Anta вне форума  
 
Непрочитано 16.12.2012, 23:41
#15
trir


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


Можно и графику загрузить, Map eё видит. С какими объектами связать? Тут вопрос как подключатся к данным, лично я работаю через FDO. FDO создаёт собственное "хранилище", но можно подключится к любой таблице с графикой и он её поймёт и нарисует.
Миниатюры
Нажмите на изображение для увеличения
Название: scr4.jpg
Просмотров: 97
Размер:	204.5 Кб
ID:	92660  

Последний раз редактировалось trir, 26.12.2012 в 18:27.
trir вне форума  
 
Непрочитано 17.12.2012, 12:44
#16
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Offtop:
Цитата:
Сообщение от trir Посмотреть сообщение
Тут вопрос как подключатся к данным, лично я работаю через FDO. FDO создаёт собственное "хранилеще",
См. словарь Ожегова, п-ста
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 26.12.2012, 04:01
#17
Anta


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


Цитата:
Сообщение от trir Посмотреть сообщение
Тут вопрос как подключатся к данным, лично я работаю через FDO. FDO создаёт собственное "хранилеще", но можно подключится к любой таблице с графикой и он её поймёт и нарисует.
То есть в моем приложение можно создать соединение с моей таблицей в оракл через Autodesk FDO Provider for Oracle? Задача не стоит, в том чтоб нарисовать объект, а в том, чтоб зная ключ объекта (ключ в бд оракл), выделить его на рисунке, "подсветить". В одной из статей об FDO написано, что компонент FDO Enterprise Edition устанавливается для Autocad 3d Map, то есть можно предположить, что необходимый мне компонент уже стоит, нужно подключить какие-либо библиотеки в vb net для его использования?
Извините, что во времени между моими ответами значительный промежуток, бывает, меня вырывают на другие задания..
Anta вне форума  
 
Непрочитано 26.12.2012, 18:32
#18
trir


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


Так что ли?
Для связки Oracle и Map 3D - ненужно никакого программирования, вообще, никак
Миниатюры
Нажмите на изображение для увеличения
Название: scr5.jpg
Просмотров: 80
Размер:	358.6 Кб
ID:	93429  
trir вне форума  
 
Автор темы   Непрочитано 27.12.2012, 07:40
#19
Anta


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


Так что ли? Да!!!! , то что, вы мне показали на миниатюре, то , что мне нужно...НО
изначально
задача стоит не в том,что б связать таблицу Оракл и map 3d, а связать таблицу (результат запроса), которая загружается в datagridview в vb net из oracle c map3d.
К примеру, в oracle имеются 3 таблицы, в которой хранятся: геометрия объекта, ключ (id объекта в данной таблице), имя feature class, дата создания объекта и тп. Далее к этим трем таблицам делается запрос: select id, имя feature class ...where дата создания="20/12/2012", результат запроса помещается в созданную специально для этого таблицу - Таблица1. У меня есть приложение на vb net, где я создаю связь с Оракл и загружаю Таблица1 в datagridview. И, находясь в vb net, необходимо, выделив строку в datagridview-> выделить этот объект в map 3d (извиняюсь за тофтологию). Дело в том, что Таблица1-результат запроса и уже никак не связана с объектами. Или ее можно все таки связать с объектами? Если ее нельзя связать с объектом, находясь в vb net, то как ее связать, хотя бы, находясь уже в map 3d? Хотя, наверняка есть способ это сделать в vb net. Спасибо.

Последний раз редактировалось Anta, 27.12.2012 в 07:47.
Anta вне форума  
 
Непрочитано 27.12.2012, 16:49
#20
trir


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


Таблица:
Код:
[Выделить все]
CREATE TABLE `exp_serv_point` (
  `sid` int(10) unsigned NOT NULL,
  `featid` int(10) unsigned NOT NULL,
  `c_road` int(10) unsigned default NULL,
  `geom` point NOT NULL,
  `sname` varchar(45) default NULL,
  `C_TYPE_ENGINEERING` int(10) unsigned default NULL,
  `s_name` varchar(45) default NULL,
  `deistv` tinyint(1) unsigned default NULL,
  `leg_form` varchar(45) default NULL,
  `oname` varchar(45) default NULL,
  `tel` varchar(7) default NULL,
  `mtel` varchar(11) default NULL,
  `inn` varchar(12) default NULL,
  `ogrn` varchar(15) default NULL,
  `www` varchar(45) default NULL,
  `email` varchar(45) default NULL,
  PRIMARY KEY  (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Почему нельзя записать геометрию в результирующую таблицу?
Открыть таблицу с геометрией в Map 3D, а потом сделать объединение с результирующей таблицей по ключу.
Миниатюры
Нажмите на изображение для увеличения
Название: scr1.JPG
Просмотров: 50
Размер:	51.5 Кб
ID:	93490  Нажмите на изображение для увеличения
Название: scr2.JPG
Просмотров: 52
Размер:	68.9 Кб
ID:	93491  
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > реализация задачи visual studio2012 (visual basic .net) autocad 2012, oracle11g

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интеграция Autodesk СПДС в AutoCAD 2012 bolotov Прочее. Программное обеспечение 24 07.01.2013 20:22
Запуск AutoCAD 2012, Inventor 2012 под пользователем DonVik AutoCAD 7 28.02.2012 01:57
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
Visual Basic + AutoCAD 2006 = FATAL ERROR evgm Программирование 6 03.04.2009 13:40