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

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

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
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Есть мнения?
Есть. Кто сказал что у списка есть свойство Area?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

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

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

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

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

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

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

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь 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
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь 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 видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не получается накаопать ничего
Лопата неправильная? ;)

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Лопата неправильная?
Да она неопытная еще, вот в Бауман в конце года пойду, тогда...
Здорово, а я так пробовал, но не получалось и теперь я увидел почему я vla-объект в обычный примитив не превращал.
Век живи - век учись

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

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Позвольте последний вопрос
Почему
(command "_.pedit" bum_set "_j" "10000" "")
nil
?
bum_set сформирован нормально

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вообще-то (command ...) всегда возвращает nil - читай документацию: http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-1C989B35-2C5A-47EC-A0C9-71998EDFB157
Или ты не об этом? Тогда включи CMDECHO (установи в 1) и смотри что у тебя печатается в командной строке.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Command: (command "_.pedit" "_M" "_j" bum_set "0.0001" "")
_.pedit
Select polyline or [Multiple]: _M
Select objects: _j

*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle
; error: Function cancelled

Почему "Invalid selection"

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 0
  • Воспитываю из него программиста
Command: (command "_.pedit" "_M" bum_set "J" "1000" )
_.pedit
Select polyline or [Multiple]: _M
Select objects:   9 found

Select objects: J

*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle
; error: Function cancelled
Противная!!!!

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Код - Auto/Visual Lisp [Выбрать]
  1.  (command "_.pedit" "_M" bum_set "" "_J" "1000" )
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение