Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

получилось !!
спасибо !
больщая благодарность создателю !!!

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Добавил для страждущих возможность вызова из VBA:

' Для AutoCAD 2006
' Private Declare Function GeomPropsGetArea Lib "GeomProps2006.arx" (ByVal id As Long) As Double
' Private Declare Function GeomPropsGetVolume Lib "GeomProps2006.arx" (ByVal id As Long) As Double
' Private Declare Function GeomPropsGetPerimeter Lib "GeomProps2006.arx" (ByVal id As Long) As Double
' Для AutoCAD 2007 и выше
Private Declare Function GeomPropsGetArea Lib "GeomProps2007.arx" (ByVal id As Long) As Double
Private Declare Function GeomPropsGetVolume Lib "GeomProps2007.arx" (ByVal id As Long) As Double
Private Declare Function GeomPropsGetPerimeter Lib "GeomProps2007.arx" (ByVal id As Long) As Double
' Пример получения площади
Public Sub TestArea()
Dim o As AcadObject
Dim p As Variant
ThisDrawing.Utility.GetEntity o, p, "Выберите примитив: "
Dim id As Long
id = o.ObjectID
Dim ar As Double
ar = GeomPropsGetArea(id)
MsgBox "Area=" + CStr(ar), , "GetArea Example"
End Sub

Очевидно, что соответствующий arx-файл должен быть загружен в AutoCAD до вызова любой из GeomPropsGetXXXX-функций

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> Александр Ривилис
Огромное спасибо! Все работает!

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Предвосхищая просьбы поклонников VisualLisp:

(GeomPropsGetArea <имя примитива>) ;; Площадь примитива
(GeomPropsGetVolume <имя примитива>) ;; Объем примитива
(GeomPropsGetPerimiter <имя примитива>) ;; Периметр/длина примитива

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

А как сделать чтобы объем к примеру выражался в кубических метрах?
а то нули считать не пересчитать ...

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

1) Скачать по новой архив с arx-файлами.
2) Установить значение переменной DIMLFAC в 0.001

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

1) Скачал архивы по новой.
Если говорят: скачай по новой - значит надо выгрузить старые ... Не могу выгрузить старые: при открытии нового файла - всё на своих местах - измерение геометрических свойств в мм.
Если сначала выгружаю старые, а затем без перезагрузки автокада (2006) загружаю новые (командой APPLOAD) - FATAL ERROR. Что делать?...
2) При старых архивах, установив значение переменной DIMLFAC в 0.001, все вроде бы хорошо... меряется в метрах (один кубометр - отражается числом - 1), но при этом и размеры в чертеже отражаются в метрах, а надо в мм.
Все прелести программы несколько тухнут...
Уважаемые!
Подскажите, как сделать чтобы длина, площадь и объем отражались в геометрических свойствах в метрах, квадратных метрах, кубических метрах, а размеры в чертеже оставались в миллиметрах?
Заранее благодарен!

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> NZ
1) "Скачать по новой" - это значит скачать отсюда: http://www.maestrogroup.com.ua/support/GeomProps.zip
2) При незапущенном AutoCAD заменить старые arx-файлы на новые.
3) Значение этой системной перемонной сохраняется только в текущем чертеже.

Подскажите, как сделать чтобы длина, площадь и объем отражались в геометрических свойствах в метрах, квадратных метрах, кубических метрах, а размеры в чертеже оставались в миллиметрах?

1) Убрал использование системной переменной DIMLFAC
2) Добавил команду GeomPropsScale, которая устанавливает масштабный коэффициент. Его значение сохраняется между сеансами работы AutoCAD.
Пробуй.

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Всё заработало!
ОГРОМНОЕ СПАСИБО!
Неудобно, что только на одном сеансе автокада работает... как бы так записать один раз и всё... или можно так, чтоб по умолчанию коэффициент GeomPropsScale стоял в 0,001.
Если интересно:
параллельно сам нашел, что при введении системной переменной DIMLFAC - 0,001 в "Dimension Style" - "Scale factor" - становится равным 0,001. Но это и понятно... Установив птицу в "Apply to layout dimensions only" всё тоже заработало (длина, площадь, объем - в м, размеры - в мм), но только длина и объем с отрицательными значениями!
Что бы это значило - не понял...

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

NZ пишет:

Неудобно, что только на одном сеансе автокада работает... как бы так записать один раз и всё... или можно так, чтоб по умолчанию коэффициент GeomPropsScale стоял в 0,001.

Работает не в одном сеансе. Я уже об этом написал выше: Его значение сохраняется между сеансами работы AutoCAD.
По поводу DIMLFAC - забудь. Она уже не используется в моей программе.

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Решил проблему по другому:
каждый новый файл начинаю с собственного пустого настроенного шаблона *.dwt. Ввел в него GeomPropsScale = 0,001.
Теперь всё хорошо...
Еще раз СПАСИБО!

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> NZ
При чем здесь шаблон? Значение GeomPropsScale хранится в реестре.

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

тогда не понимаю что значит:
""Его значение сохраняется между сеансами работы AutoCAD.""

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

У меня значение сохраняется и после выгрузки автокада...

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

NZ пишет:

тогда не понимаю что значит:
""Его значение сохраняется между сеансами работы AutoCAD.""

Это означает, что и после завершения сеанса работы AutoCAD и при старте нового сеанса значение GeomPropsScale будет одно и тоже. При изменении значения командой GeomPropsScale новоее значение записывается в реестр. При старте AutoCAD оно считывается из реестра и используется.
Теперь понятнее?

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Ну теперь совсем другое дело!...
Намного понятнее и просто доходчиво...
И третий раз я неустанно повторю слова благодарности разработчику программы за непосредственно программу, а более того за внимание и терпение при обучении товарищей по оружию!

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> Александр
Ривилис

Ну вот как найдете закономерность, которую я смогу у себя отловить — так сразу и исправлю

Кажется я нашел. По крайней мере у меня отрабатывает стабильно :)
Тестировал на 2006 каде
1. geomprops2006.arx расположен в путях доступа
2. Загрузаем Автокад
3. (arxload "geomprops2006")
4. (arxunload "geomprops2006")
5. (arxload "geomprops2006")
6. Ошибка исключения
Вариант 2
1. Нарисован круг
2. Активна панель свойств (Ctrl+1)
3. geomprops2006.arx загружен
4. Командой _.Arx _Unload выгружаем geomprops2006
5. При активной панели свойств выделяем круг
6. Ошибка исключения
И еще одно предложение:
Мне кажется было бы удобней отображать коэффициент GeomPropsScale в поле рядом с Length, Area и Volume. Удобно менять и сразу видно какой коэффициент используется. Необходимость в команде отпадает

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> VVA
Я же написал выше:

Важно: Не пытайтесь дважды загружать этот arx-файл в AutoCAD и выгружать его из AutoCAD — развал AutoCAD обеспечен (это ограничение AutoCAD). Если по каким-то причинам вам нужно чтобы этот файл не загружался — удалите/переименуйте его — AutoCAD при следующем запуске его не найдет и не загрузит без никаких сообщений.

Насчет изменения параметра GeomPropsScale в палитре свойств - подумаю.

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Огромное спасибо разработчику - программа очень помогает в работе. Но сегодня столкнулся с таким явлением - длины мультилиний не измеряются (ACAD 2008 Eng). Правда, у мультилинии вообще свойства длины нет в палитре... Может быть, возможно с этим что-то сделать? Очень надо бывает...

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

В связи с найденой здесь ошибкой внес исправления. arx-файлы на старом месте.

> qwss
Подумаю.

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Добавил обработку длины мультилинии (по осевой линии).

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

«Мне кажется было бы удобней отображать коэффициент GeomPropsScale в поле рядом с Length, Area и Volume. Удобно менять и сразу видно какой коэффициент используется. Необходимость в команде отпадает»

Полностью поддерживаю.
Эта переменная нигде кроме этого форума не упоминается и о ней узнать никак нельзя - а надо бы ее знать :))

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> VVA

> Diman111
Уговорили. Сделал. Тестируйте.

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

Классно!
Только "Linear scale factor" надо бы поместить или вверх или вниз относительно остальных трех величин, а то как-то кажется незаконченным... или незамеченным ...
А работает замечательно!

Re: ObjectARX. GeomProps - площадь, длина, объем выбранных примитивов

> NZ
У меня в конце списка. Честно говоря что влияет на положение в списке - не в курсе.