Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 может привести к зависанию в проеме. Спросите у Винни-Пуха. |
|
Вернуться к началу |
|
|
Tonal
Зарегистрирован: 10.05.2007 Сообщения: 11
|
Добавлено: Вт Май 15, 2007 11:51 am Заголовок сообщения: |
|
|
То что надо!
Спасибо! |
|
Вернуться к началу |
|
|
Tonal
Зарегистрирован: 10.05.2007 Сообщения: 11
|
Добавлено: Ср Май 16, 2007 1:59 pm Заголовок сообщения: |
|
|
Возникла ещё одна непонятка: GetFloodBoundary возвращает новый элемент.
Надо ли его как-то специально удалять, после того, как площадь посчитана и он стал не нужен?
Или подсчёт ссылок его самостоятельно уберёт, как и любой другой мусор? |
|
Вернуться к началу |
|
|
Leonid давно здесь сидим
Зарегистрирован: 28.01.2006 Сообщения: 598 Откуда: С.-Петербург
|
Добавлено: Ср Май 16, 2007 2:32 pm Заголовок сообщения: |
|
|
Tonal писал(а): | Возникла ещё одна непонятка: GetFloodBoundary возвращает новый элемент.
Надо ли его как-то специально удалять, после того, как площадь посчитана и он стал не нужен?
Или подсчёт ссылок его самостоятельно уберёт, как и любой другой мусор? |
VBA тем и удобен, что о таких вещах можно не задумываться...
Создал и забыл, и всё само прекрасно удалится |
|
Вернуться к началу |
|
|
|