Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Ничего не понял. Укажи параметры отрезка при которых растр неправильно выравнивается. Я для тестирования нарисовал вертикальный отрезок и командой _ARRAY сделал "солнышко" из 36 отрезков. С ними со всеми проверил выравнивание растра и все нормально. Может я чего-то недопонимаю?

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Я сам не понял. Это жена мне пальцем ткнула, Сейчас подумаю как изложить.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Пришлите архивированный пример (с растром, линией, по которой производится выравнивание и желаемый результат выравнивания). Жене привет. :)

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Вертикальный, горизонтальный- все нормально.
Незнаю. Могу только повторить: Программа поворачивает растр на "правильный" угол, но с противоположным знаком. Т.е. нужно в другую сторону.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

Может проблемма в начальной - конечной точке отрезка?
Т.е. отрезок нарисован в одну сторону, а картинка поворачивается в обратную...

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Слать примеры?

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Слать примеры?

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Евгений Елпанов
Я этот отрезок переориентирую как мне удобней:

;; Упорядочим отрезок по оси X
    (if (> (car p1) (car p2)) (progn
      (setq tmp (list p1 p2) p1 (last tmp) p2 (car tmp))
    )) ;; (if (progn

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Да. Жду.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Евгений Елпанов
Нет.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Евгений Елпанов
Беру свое "нет" обратно. Неправильно понял.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Отправил.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Вернулось обратно письмо. Есть ящик на Rambler?

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Вы перевернули постановку с ног на голову! Пример получил.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Как переслать- то? Я как вижу mail.ru или mail.md мне плохеет враз.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Признаю свою вину:((( У меня синдром собаки Павлова:)))

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma

;;--------------------------------------------------
;; Функция для выравнивания растра по отрезку.
;; По всем вопросам использования к Forma
;;--------------------------------------------------
(defun C:ALIGN_IMAGE ( / ss en el p1 p2 u v ang ang_u ul vl _ce)
  ;; Функция вычисляет длину вектора
  ;; Усовершенствование: Евгений Елпанов
  (defun vector_len (v)
    (sqrt (apply (function +) (mapcar (function (lambda (x)(* x x))) v)))
  )
  ;;
  (setq _ce (getvar "cmdecho")) (setvar "cmdecho" 0)
  (command "_.Undo" "_Group")
  (princ "\nВыберите отрезок, по которому будет выполняться выравнивание: ")
  (if (setq ss (ssget "_:S:E" '((0 . "LINE")))) (progn
    (setq el (entget (ssname ss 0)))
    (setq p1 (cdr (assoc 10 el)) p2 (cdr (assoc 11 el)))
    ;; Упорядочим отрезок по оси X
    (if (> (car p1) (car p2)) (progn
      (setq p1 (list p1 p2) p2 (car p1) p1 (last p1))
    )) ;; (if (progn
    ;; Разберемся с углом:
    (setq ang (angle p1 p2))
    (cond
     ((and (> ang (* PI 0.25)) (< ang (* PI 0.75)))
      ;; Угол с вертикалью
      (setq ang (angle (list (car p1) (cadr p2)) (list (car p2) (cadr p1))))
      (setq ang (+ ang (* PI 0.5)))
     )
     ((and (> ang (* PI 1.25)) (< ang (* PI 1.75)))
      ;; Угол с вертикалью
      (setq ang (angle (list (car p1) (cadr p2)) (list (car p2) (cadr p1))))
      (setq ang (- ang (* PI 0.5)))
     )
     (t
      ;; Угол с горизонталью
      (setq ang (angle (list (car p1) (cadr p2)) (list (car p2) (cadr p1))))
     )
    ) ;; (cond
    (princ "\nВыберите растр для выравнивания: ")
    (if (setq ss (ssget "_:S:E" '((0 . "IMAGE")))) (progn
      (setq el (entget (ssname ss 0)))
      (setq u (cdr (assoc 11 el)) v (cdr (assoc 12 el)))
      (setq ang_u (angle '(0.0 0.0 0.0) u))
      (setq el (subst (cons 11 (polar '(0.0 0.0 0.0)
               (+ ang ang_u) (vector_len u))) (assoc 11 el) el))
      (setq el (subst (cons 12 (polar '(0.0 0.0 0.0)
               (+ ang (* PI 0.5) ang_u) (vector_len v))) (assoc 12 el) el))
      (entmod el)
    )) ;; (if (progn
  )) ;; (if (progn
  (command "_.Undo" "_end")
  (setvar "cmdecho" _ce)
  (princ)
)

Если и это не то - то я пас.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Не согласный я. С  третьей строкой программы от верха:)
( шутка разумеется)
А в остальном Super. Большой супер. Спасибо. Хорошая работа. Спасибо.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Сначала проверь вместе с женой...

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Обязательно. Она главный тестер.:)))

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

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

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
И c собакой Павлова...

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Forma
Доложите результаты тестирования!!!

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

> Александр Ривилис
Докладываю. Все нормально. Сегодня 5 или 6 растров выставил.
Совсем другое дело. Сейчас это , вроде, называют: комфортная работа. Спасибо.

Re: Программа+макрос на кнопку "Ориентирование обьектов в AutoCAD по контрольной линии"

biggrin А если бы раньше толком объяснил что надо, или прислал эскиз - имел бы результат на пару дней раньше. Имей в виду...