Почему не считывает свойство объекта Region

Автор Тема: Почему не считывает свойство объекта Region  (Прочитано 19980 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Command: (setq aaaaa (vlax-ename->vla-object (car(entsel))))

Select object: #<VLA-OBJECT IAcadRegion 00000000b0ec3438>

Command: (vlax-get-property aaaaa 'Area)
95723.8

Command: (setq aaaaa (vlax-safearray->list (vlax-variant-value _regvar)))
(#<VLA-OBJECT IAcadRegion 00000000b0ec3438>)

Command: (vlax-get-property aaaaa 'Area)
; error: bad argument type: VLA-OBJECT (#<VLA-OBJECT IAcadRegion 00000000b0ec3438>)

Без комментариев, лишь открытый рот!!! Есть мнения?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Есть мнения?
Есть. Кто сказал что у списка есть свойство Area?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Кто сказал что у списка есть свойство Area?
Вот я валенок!

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Только я что-то зашел в некий тупик, а как перейти от списка к объектам, чтобы наконец применить свойства объектов

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Только я что-то зашел в некий тупик, а как перейти от списка к объектам, чтобы наконец применить свойства объектов
Код - Auto/Visual Lisp [Выбрать]
  1. (setq aaaaa (vlax-safearray->list (vlax-variant-value _regvar)))
  2. (foreach reg aaaaa
  3.   (print (vlax-get-property reg 'Area))
  4. )
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Изящно, спасибо

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Также, хочу спросить:
Преамбула:
а. в массиве, из которого получен список, лежат отрезки и полилинии (он получен при взрыве блока)
б. я не хочу применять команду _region из-за ее ограничений
в. я хочу применить команду _pedit, причем лишить пользователя возможности выбор объектов, а пусть макрос из полученного списка сделает мне объединение, в единую полилинию
г. но _pedit не работает со списками, ей необходимы наборы.
Вопрос:
Как мне, имея массив, список получить набор для передачи в _pedit
P.S. Памятуя о том, что я начинающий, делайте скидки на, пока зачастую, глупые вопросы
Спасибо за помощь

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Как мне, имея массив, список получить набор для передачи в _pedit
1) Не массив, а список. В AutoLisp/VisualLisp нет массивов.
2) Для работы с наборами есть функции (ssadd) (ssdel) (ssget) и т.д.:
http://help.autodesk.com/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-43715289-5715-4F96-8D48-3169FA26777A.htm
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Сидел-тупил, спросил-получил
Код - Auto/Visual Lisp [Выбрать]
  1. (setq bum (vla-explode _block))
  2. (setq bum_set (vlax-safearray->list (vlax-variant-value bum)))
  3. (ssget "_X" bumset)
  4.  
<Selection set: 1f43d>
Спасибо, нужно быть внимательнее мне

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забудь, что на форуме действует принцип "Отдельный вопрос - отдельная тема". Последний вопрос к этой теме не относился, так что нужно было создать новую тему.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Последний раз!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Сидел-тупил, спросил-получил
Код - Auto/Visual Lisp: [Выделить]

    (setq bum (vla-explode _block))
    (setq bum_set (vlax-safearray->list (vlax-variant-value bum)))
    (ssget "_X" bumset)
     

<Selection set: 1f43d>
Спасибо, нужно быть внимательнее мне
Ничего не понял, но если это работает, то тебе страшно повезло.
Во-первых, в одном месте у тебя bum_set, а в другом bumset.
Во-вторых, (ssget "_X" ...) так  со списками не работает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Да,я уже обратил внимание, работает конечно не так как нужно! Буду копать дальше

Оффлайн Peacemaker_kissАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Не получается накапать ничего, я могу конечно (ssget) применить с учетом некоторых фильтров, но это компромисс, хотелось бы создать набор из конкретно полученного списка

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Код - Auto/Visual Lisp [Выбрать]
  1. (setq ss (ssadd))
  2. (foreach x bum_set ;; В bum_set список vla-object
  3.   (ssadd (vlax-vla-object->ename x) ss)
  4. )
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение