Список форумов Конференция САПР Bentley MicroStation Конференция САПР Bentley MicroStation
www.ustation.ru
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Использование функции AddDatabaselink

 
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Прикладное
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ruslan



Зарегистрирован: 14.02.2008
Сообщения: 2

СообщениеДобавлено: Чт Фев 14, 2008 8:41 am    Заголовок сообщения: Использование функции AddDatabaselink Ответить с цитатой

Столкнулись с тем что в DGN размножились
мслинки.Решил программку написать чтобы "передёрнуть" мслинки.
Sub main
Dim кes As Long
Dim en as ElementEnumerator
Dim el as Element
Dim dbls() As DatabaseLink
Dim dblnew as DatabaseLink

Set en=ActiveModelReference.GetSelectedElements
Do While en.MoveNext
Set el=en.Current
if el.HasAnyDatabaseLink(msdDatabaselinkageOdbc,1) then
dbls=el.GetDatabaseLinks(msdDatabaselinkageOdbc,1)
Set dblnew=dbls(0)
res=el.RemoveDatabaselink(msdDatabaselinkageOdbc,dbls(0).mslink,1)
эВот до этого места работает
el.AddDatabaselink(dblnew) ' вот тут останов с сообщенем что нет такого метода у объекта

el.Rewrite
end if
end sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tonal



Зарегистрирован: 10.05.2007
Сообщения: 11

СообщениеДобавлено: Чт Фев 14, 2008 9:02 am    Заголовок сообщения: Ответить с цитатой

Привеи Руслан. Smile
Скорее всего, при RemoveDatabaselink исходный объект просто уничтожается, а ты пытаешся его потом на место пришпандорить. Smile
Думаю, что надо его пересоздать с теми же параметрами, например:
Код:

Set dblnew=CreateDatabaseLink dbls(0).Mslink, dbls(0).EntityNumber, dbls(0).DatabaseType, dbls(0).IsInformation, dbls(0).DisplayableAttributeType


Ну а сообщение об ошибке - просто некорректное - у MicroStation оно сплошь и рядом при работе с Automation.


Последний раз редактировалось: Tonal (Чт Фев 14, 2008 9:46 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ruslan



Зарегистрирован: 14.02.2008
Сообщения: 2

СообщениеДобавлено: Чт Фев 14, 2008 9:35 am    Заголовок сообщения: Ответить с цитатой

Tonal писал(а):
Привеи Руслан. Smile
Скорее всего, при RemoveDatabaselink исходный объект просто уничтожается, а ты пытаешся его потом на место пришпандорить. Smile
Думаю, что надо его пересоздать с теми же параметрами, например:
Код:

Set dblnew=CreateDatabaseLink dbls(0).Mslink, dbls(0).EntityNumber, dbls(0).DatabaseType, dbls(0)..IsInformation, dbls(0)..DisplayableAttributeType


Ну а сообщение об ошибке - просто некорректное - у MicroStation оно сплошь и рядом при работе с Automation.

Tonal, спасибо! Точно не в этом дело.
Я ведь когда столкнулся вообще код упростил. Оставил только добавление, а в исходной выборке один центроид.
Дебаггер перед этой строукой показывает что и dblnew нормально создан.
Вот потому сюда и постучался
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tonal



Зарегистрирован: 10.05.2007
Сообщения: 11

СообщениеДобавлено: Чт Фев 14, 2008 9:56 am    Заголовок сообщения: Ответить с цитатой

Какая разница, сколько там центроидов - у них вообще Automation исключительно криво написан. Smile
Так что просто попробуй мой код - если ошибки не будет - стало быть так и есть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Прикладное Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group