Тема: Объект - три размера

Предистория
В исполнительных чертежах требуется проставлять по три размера на каждый отснятый на местности объект. К примеру люк колодца должен быть привязан к трем углам зданий или к другим объектам. Но у таких привязок есть ограничения накладываемые ГОСТом: угол между привязками (размерами) должен быть больше 30 градусов и длина привязки должна быть меньше 50 метров.
Я реализовал это дело на ЛИСПе так:

(defun C:QQQ (/ ppc aanngg p1 p2 ang12 *error* olderror)
(setq olderror *error*)
  (defun *error* (msg) (princ "\n Выход. ")
    (setvar "ANGBASE" 0) (princ " Переменная ANGBASE установлена в ноль.")(setq *error* olderror);) )
)
  (setq aanngg (getvar "ANGBASE"))
(setq p1 (getpoint "\n Укажите точку 1: "))
  (setq ppc 0)
  (while

    (setq p2 (getpoint p1 "\n Укажите точку 2: "))
    (while (> (distance (list (car p1) (cadr p1)) (list (car p2) (cadr p2))) 50)
(setq p2 (getpoint p1 "\n В геотресте не прокатит, укажите другую точку: "))

      )
    (setq ang12 (atoi (angtos (angle p1 p2) 0 0)))
(if (/= ppc 0)
    (while 
     (if (or (> (distance (list (car p1) (cadr p1)) (list (car p2) (cadr p2))) 50) (< ang12 30) (> ang12 330) (and (> ang12 150) (< ang12 210)))
(progn (setq p2 (getpoint p1 "\n В геотресте не прокатит, укажите другую точку: "))
(setq ang12 (atoi (angtos (angle p1 p2) 0 0)))
);progn
  );if
     );while
  )

(setq ppc (distance (list (car p1) (cadr p1)) (list (car p2) (cadr p2))))
  (setvar "ANGBASE" (angle p1 p2))
    (adim3 p1 p2)
  );while
(setvar "ANGBASE" aanngg)
  (princ)
  )

Но мне кажется можно сделать гораздо красивее и удобнее создав новый объект акада. Один объект - три размера. В котором соблюдалось бы изложенное выше требование ГОСТа. При переходе за ограничения можно было бы выделить красным или по-просту запретить этот переход.

Re: Объект - три размера

Виталий Галактионов пишет:

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

Это тебе только кажется. Не говоря уже о сложности создания, появления прокси-примитивов на PC без установленного OE для этого примитива, необходимости поддержки в очередных версиях AutoCAD и т.д. и т.п.

Re: Объект - три размера

Эхх, ладно будем по старинке, ручками.

Re: Объект - три размера

А зачем новый вид объекта? Дин. блок из трех размеров рулит! Требуемые ограничения в нем можно, при желании, сделать даже без программирования.
И если очень надо, до него можно достучаться на лиспе, без "тяжелой артиллерии" ARX.