![]() |
Translate to: |
||||||
| Обратная связь | Новости САПР | Программы | Документация | Полезные советы | Обзорные статьи | ||
| Заказ и разработка | Каталог САПР | САПР-конференция | Библиотека ГОСТов | Наши соавторы | Коммерческое ПО | ||
;;;---------------------------------------------------------------------------;
;;;
;;; vpsel.lsp
;;;
;;; Проверено на AutoCAD 2000
;;;
;;;---------------------------------------------------------------------------;
;;; ОПИСАНИЕ
;;;
;;; Выбор всех видимых объектов в выбраном или активном видовом экране пространства листа
;;; Прозрачно работает также в пространстве модели и полигональных видовых экранах
;;; Пример 1: ERASE ALL R 'VPC >>> Удалить все в пространстве модели за исключением видимого
;;; Пример 2: (command "erase" "all" "r" (c:vpc) "")
;;; Пример 3: VPC ERASE >>> VPC запускает предыдущую команду для объектов из предыдущего набора выбора.
;;;
;;; c:vpc - Выбор всех видимых объектов, которые пересекает видовой экран
;;; c:vpw - Выбор всех видимых объектов внутри видового экрана
;;;---------------------------------------------------------------------------;
(defun c:vpc ()
(vpsel "C")
)
(defun c:vpw ()
(vpsel "W")
)
(defun dxf (n ed) (cdr (assoc n ed)))
(defun vpsel (typ / ad ss ent vpno ok vpbl vpur
msbl msur msul mslr ss1 pl nlist x n
)
(vl-load-com)
(setq ok t)
(if (= (getvar "tilemode") 0)
(progn
(setq ad (vla-get-activedocument (vlax-get-acad-object)))
(if (= (getvar "cvport") 1)
(if (and (= (getvar "cmdactive") 0)
(/= (setq ss (ssget ":E:S" '((0 . "VIEWPORT")))) nil)
)
(progn
(setq ent (ssname ss 0))
(setq vpno (dxf 69 (entget ent)))
(vla-Display (vla-get-activepviewport ad) :vlax-true)
(vla-put-mspace ad :vlax-true)
(setvar "cvport" vpno)
)
(progn
(setq ok nil)
(princ)
)
)
(setq ent (vlax-vla-object->ename (vla-get-activepviewport ad)))
)
(if (and ok (/= 1 (logand 1 (dxf 90 (setq ed (entget ent))))))
(progn
(if (= (vla-get-clipped (vlax-ename->vla-object ent))
:vlax-false
)
(progn
(vla-getboundingbox
(vla-get-activepviewport ad)
'vpbl
'vpur
)
(setq msbl (trans (vlax-safearray->list vpbl) 3 2))
(setq msur (trans (vlax-safearray->list vpur) 3 2))
(setq msul (list (car msbl) (cadr msur)))
(setq mslr (list (car msur) (cadr msbl)))
(setq ss1
(ssget (strcat typ "P") (list msbl msul msur mslr))
)
)
(progn
(setq pl (entget (dxf 340 (entget ent))))
(setq nlist nil)
(foreach x pl
(if (eq 10 (car x))
(setq nlist (cons (trans (cdr x) 3 2) nlist))
)
)
(setq ss1 (ssget (strcat typ "P") nlist))
)
)
(sssetfirst nil ss1)
(if ss1
(setq n (sslength ss1))
(setq n 0)
)
(princ n)
(princ " found ")
(if (and ss1 (= (getvar "cmdactive") 1))
ss1
(princ)
)
)
(princ)
)
)
(princ)
)
)
(princ)
Copyright © Сайт поддержки пользователей САПР