Тема: Как развернуть много объектов каждый относительно своей оси?

Как развернуть много объектов каждый относительно своей оси???

Re: Как развернуть много объектов каждый относительно своей оси?

а что считать

"своей осью"

и как ее определить для объекта?

Re: Как развернуть много объектов каждый относительно своей оси?

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

Re: Как развернуть много объектов каждый относительно своей оси?

Попробуй это: *^C^C_Rotate;\\;\90  Если угол 90 не нравится, поставь свой. Работает так: макаешь мышку в кнопку с этим макросом, помечаешь первый овъект ДВУМЯ кликами или рамкой и третий клик в точке вращения. Об-ект развернется и тут же можешь разворачивать следующий объект, и так далее пока не нажмешь Esc или другую команду.

Re: Как развернуть много объектов каждый относительно своей оси?

Для задания оси требуется, на сколько я помню, две точки, а центр объекта (даже если предположить что ВСЕГДА известно что это такое) - только одна. Написать программу на Лиспе можно минут за 5-10 если сперва все же четко сформулировать задачу

Re: Как развернуть много объектов каждый относительно своей оси?

Если полагать (как это делает команда _ROTATE), что "ось вращения" параллельна оси Z, то достаточно и одной точки.

Re: Как развернуть много объектов каждый относительно своей оси?

> VH
Точно.
а центр объекта можно достать обработав результат функции
vla-getboundingbox

Re: Как развернуть много объектов каждый относительно своей оси?

> Эдуард
>  VH
Протестую!!! Это все допущения!!! :))
Я просто пытаюсь выудить из человека нормальную постановку задачи, а не пойди туда - не знаю куда...
Кстати, а какую ось Z надо иметь в виду - МСК, ПСК или ОСК???

Re: Как развернуть много объектов каждый относительно своей оси?

> Сергей Попадьин
Да это понятно.
Но вроде и так уже сообразили в чем дело

(defun C:povorot()
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (vl-load-com)
  (initget 1)
  (setq up (getreal "\n rotation angle:")
    )
  (if
  (setq naborobj (ssget)
    )
  (progn
    (setq n 0)
    (repeat (sslength naborobj)
      (setq vlaobj
         (vlax-ename->vla-object
           (ssname  naborobj n)
           )
        )
       (vla-getboundingbox  vlaobj 'p1 'p2)
      (setq minpt (vlax-safearray->list p1)
        )
      (setq maxpt(vlax-safearray->list p2)
        )
      (setq sentpt (mapcar '(lambda (x)
                  (* x 0.5)
                  )
               (mapcar '+ minpt maxpt)
               )
        )
      (command "rotate"
           (vlax-vla-object->ename vlaobj) "" sentpt up)
      (setq n (1+ n)
        )
      );repeat
    )
  )
  (princ)
  )
        

Re: Как развернуть много объектов каждый относительно своей оси?

Предположим много надписей, необходимо развернуть, но без смещения!

Надписи, то есть TEXT и MTEXT, имеют угол поворота строки, который и следует изменить (например через Окно Свойств): выбрать все "надписи", которые должны иметь одинаковый угол поворота строки, и в Окне Свойств ввести значение угла.

Re: Как развернуть много объектов каждый относительно своей оси?

> VH
Это все хорошо Владимир , но Вы прикинте что в этом случае базовая точка поворота
идет относительно точки вставки текста.(в моей функции  относительно центра объекта.)
С текстом проще- координаты можно найти функцией
texbox.
Однако задача все-таки правильно не поставлена - в
этом согласен с Сергеем Попадьиным.
То-что мы помогаем это все домыслы.
Однако увидев сообщение Олега от 19.51 считаю , что понял его мысль.

Re: Как развернуть много объектов каждый относительно своей оси?

Не получается запустить ваш Lsp ...
error: malformed list on input

Re: Как развернуть много объектов каждый относительно своей оси?

sorry...  к Эдуарду msg

Re: Как развернуть много объектов каждый относительно своей оси?

> Эдуард
Надеюсь, что у Владимира в самом деле все хорошо.

...Сеня, расскажи товарищу, только быстро, зачем Вовка усы сбрил...

Re: Как развернуть много объектов каждый относительно своей оси?

> Oleg
Не хватает скобки,скорее всего пропустили последнюю.

Re: Как развернуть много объектов каждый относительно своей оси?

> VH
Sorry спутал с VK - ники похожие

Re: Как развернуть много объектов каждый относительно своей оси?

Я не спорю - догадаться что человек хочет конечно можно в конце-концов, но что мешает четко сформулировать задачу (не только к Олегу относится) ??? Если Вы обратили внимание, я регулярно обращаю на этот факт внимание задающих вопросы... правда пока без особого успеха, как и в этом случае (VH и Эдуард отдуваются за Олега, а он молчит как партизан...)
Четко заданный вопрос экономит не только время (всех участников), но и сетевой трафик...

Re: Как развернуть много объектов каждый относительно своей оси?

А если так...

;Изменить угол поворота (текста,блока)
(DEFUN C:ENT_ROTATE ()
  (SETQ a (SSGET))
  (SETQ b (SSLENGTH a))
  (SETQ r (GETREAL "\nНовый угол поворота: "))
  (SETQ r (* pi (/ r 180.0)) )
  (WHILE (> b 0)
    (SETQ b (1- b))
    (SETQ d (SSNAME a b))
    (SETQ d (ENTGET d))
    (SETQ old_r (ASSOC 50 d))
    (SETQ new_r (CONS 50 r))
    (SETQ d (SUBST new_r old_r d))
    (ENTMOD d)
  )
  (PRIN1)
)

Re: Как развернуть много объектов каждый относительно своей оси?

У операции "поворот" есть два варианта:
1) поворот до определенного положения: после операции все объекты "смотрят" в одном направлении
2) поворот на определенный угол: после операции "взаимное положение" объектов сохраняется.
Зачеркнуть ненужное...

Re: Как развернуть много объектов каждый относительно своей оси?

Предлагаю ВСЕМ подождать, когда Олег все же решит что ЕМУ необходимо...

Re: Как развернуть много объектов каждый относительно своей оси?

> ABoltrushko
Ваш lisp работает, только когда задаешь новый угол - ни чего не происходит? Может что не так делаю...?

> Эдуард
А ваш lisp так и не получилось запустить... все скобки вроде на месте... - error: malformed list on input
У меня 2002 acad  Англ версия.

Re: Как развернуть много объектов каждый относительно своей оси?

> Oleg
error: malformed list on input-сообщение возникает при
недостаточном количестве закрывающих скобок.
Возможно они затесались в комментарий когда Вы
переносили лисп в файл.
Отправляю файл на мыло.

Re: Как развернуть много объектов каждый относительно своей оси?

> Эдуард
Спасибо все работает...  Но!
Объекты вращаются вокрук центра глобальной системы координат...
Я так понимаю что эту задачу не автоматизировать...
Вообще в автокаде у объектов есть своя система координат? (как в максе)?

Re: Как развернуть много объектов каждый относительно своей оси?

Я так понимаю что эту задачу не автоматизировать...

>Эдуард Страна смотрит на Вас - сделайте как в MAXе.

Re: Как развернуть много объектов каждый относительно своей оси?

> VH
Вот-так! Самый умный из нас Сергей Попадьин!