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

Измерение площадей на VBA - непонятки

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



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

СообщениеДобавлено: Чт Май 10, 2007 4:55 pm    Заголовок сообщения: Измерение площадей на VBA - непонятки Ответить с цитатой

Нужно написать функцию.
На входе координаты (Z всегда 0), на выходе или площадь контура вокруг точки, или -1 - признак ошибки (если контур нельзя построить).
Т.е. сделать то же самое, что делается с помощью "Measure Area" в режиме "Flood".

Напрямую подобной команды в объектной модели я нашел.
Нашел способ вызвать команду через SendKeyin('measure area flood '):
Код:

CadInputQueue.SendKeyin('measure area flood ')
CadInputQueue.SendDataPoint(pnt, 1)
CadInputQueue.SendDataPoint(pnt, 1)
MsgBox CommandState.MeasureResult1

Вот только, никак не пойму, как узнать удалось построить контур или нет. CommandState.CommandResult всегда возвращает msdCommandResultSuccess, MeasureResult1 в случае облома содержит предыдущую площадь...

Может быть кто-нибудь знает, как справиться с площадью?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tonal



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

СообщениеДобавлено: Пт Май 11, 2007 10:02 am    Заголовок сообщения: Ответить с цитатой

Что-то тихо.
Может кто знает альтернативные решения - например можно ли напрямую обратиться к плагину measure.ma?
И если да, то как? И как узнать набор его комманд?
Короче, у кого есть какие-нибудь идеи или соображения - скажите.
Не обязательно в рамках Basic.
Хотя-бы в какую сторону двигаться...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Leonid
давно здесь сидим


Зарегистрирован: 28.01.2006
Сообщения: 598
Откуда: С.-Петербург

СообщениеДобавлено: Пт Май 11, 2007 10:38 am    Заголовок сообщения: Ответить с цитатой

Как насчет попробовать функцию GetFloodBoundary?
Код:

Set Element = object.GetFloodBoundary (CandidateElements, Template, SeedPoint [, ViewSpecifier [, FindHoles [, Tolerance [, FillMode]]]])



Там в хелпе даже пример ее использования есть.
_________________
Непонимание различия операторов OR и XOR может привести к зависанию в проеме. Спросите у Винни-Пуха.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Tonal



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

СообщениеДобавлено: Вт Май 15, 2007 11:51 am    Заголовок сообщения: Ответить с цитатой

То что надо!
Спасибо! Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Tonal



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

СообщениеДобавлено: Ср Май 16, 2007 1:59 pm    Заголовок сообщения: Ответить с цитатой

Возникла ещё одна непонятка: GetFloodBoundary возвращает новый элемент.
Надо ли его как-то специально удалять, после того, как площадь посчитана и он стал не нужен?

Или подсчёт ссылок его самостоятельно уберёт, как и любой другой мусор?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Leonid
давно здесь сидим


Зарегистрирован: 28.01.2006
Сообщения: 598
Откуда: С.-Петербург

СообщениеДобавлено: Ср Май 16, 2007 2:32 pm    Заголовок сообщения: Ответить с цитатой

Tonal писал(а):
Возникла ещё одна непонятка: GetFloodBoundary возвращает новый элемент.
Надо ли его как-то специально удалять, после того, как площадь посчитана и он стал не нужен?

Или подсчёт ссылок его самостоятельно уберёт, как и любой другой мусор?


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

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


Powered by phpBB © 2001, 2005 phpBB Group