Тема: "Подтянуть" видовой экран к фигуре

если можно то помогите с такой задачей.
суть
есть видовой экран (многоугольник), часто требуется его сжать или растянуть (уменьшить, увеличить), соответственно приходится брать за "ручки" и подтягивать(перемещать их так как надо).

хотелось бы
получить программку такую чтобы выполнялся следующий алгоритм
- указать видовой экран
- указать границы притяжения (замкнутая полилиния, окружность)
соответственно после этого все "ручки" видового экрана подтягивались бы к указанной границе, привязка и место присоединения на границе притяжения роли не играет

спасибо

Re: "Подтянуть" видовой экран к фигуре

странное желание
(vl-load-com)
(defun c:v2p ( / nameVP namePL sp_vp krd_vp sp_vp
                 len_sp i krd_run krd_new new_XY new_p old_p)
(setq nameVP (car (entsel "\nSelect Viewport")))
(setq namePL (car (entsel "\nSelect polyline,circle,..")))
(setq sp_vp (entget nameVP))
(setq krd_vp nil)
(foreach n sp_vp(if(= 10 (car n))(setq krd_vp(append krd_vp(list(cdr n))))))
(setq len_sp (length krd_vp))
(setq i -1)
(repeat  len_sp
   (setq i (1+ i)) 
   (setq krd_run (nth i krd_vp))
   (setq krd_new (vlax-curve-getClosestPointTo namePL krd_run))
   (setq new_XY (reverse(cdr(reverse krd_new))))
   (setq new_p (append '(10) new_XY))
   (setq old_p (append '(10) krd_run))
(setq sp_vp  (subst new_p  old_p sp_vp))
(entmod sp_vp)
(entupd  (cdr (assoc -1 sp_vp)))
)

)

(изменено: Сергей К, 13 декабря 2011г. 13:59:11)

Re: "Подтянуть" видовой экран к фигуре

Спасибо, добрый человек, все так как хотел, точнее думал, что так хотел))
Уменьшение видового экрана, то что надо (это собственно мне и требовалось в первую очередь)
Странность желания попробую объяснить
допустим есть видовой экран (большой) в нем скажем план, он развернут так как мне надо (в разных видовых экранах план может быть ориентирован по разному) и вот возникает необходимость выделить элемент-ы этого плана отдельно, для быстроты беру копирую видовой экран с нужной мне ориентацией рядом и просто уменьшаю "ручками" до тех границ что мне надо.

более утомлять своей ерундой вас не хочется, но если решите доработать то....)))

в идеале исходный видовой экран должен принимать конфигурацию заданной полилинии

щас все идеально работает при уменьшении видового экрана до очертаний прямоугольника =)


upd. слепота я слепота....существует "подрезка видового экрана" в самом автокаде...правда он на прямоугольные формы только работает

Re: "Подтянуть" видовой экран к фигуре

Сергей К пишет:

существует "подрезка видового экрана" в самом автокаде...правда он на прямоугольные формы только работает

:| Подрезать видовой экран можно любым замкнутым 2D объектом ( прямоугольник, многоугольник, круг).

Re: "Подтянуть" видовой экран к фигуре

может, но в 100% случаях работает только на прямоугольные формы, на криволинейные и многоугольные не всегда верно

Re: "Подтянуть" видовой экран к фигуре

Не проверял:

;; by CAB (Charles Alan Butler) as posted on theswamp.org
(defun c:LWP2VP (/ ss i)
  (cond ((> (getvar 'CVPORT) 1) (princ "\n ** Command not allowed in Model Tab ** "))
        ((setq ss (ssget "_:L" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
         (repeat (setq i (sslength ss)) (command "_.mview" "_object" (ssname ss (setq i (1- i)))))
        )
  )
  (princ)
)