|
Тема |
Програма за избор на елементи в [re: Rado] |
|
Автор | StSt (Нерегистриран) | |
Публикувано | 28.05.06 12:35 |
|
|
или пресечени от затворена полилиния
;избира обекти изцяло в затворена полилиния
(defun wsel (/ pol spi NN)
(setq pol (car(entsel "\nSelect polyline "))SPI (LIST))
(wsel1 pol)
);wsel
(defun wsel1 (pol / spi NN PTMIN PTMAX)
(SETQ PTMIN (GETVAR "EXTMAX")PTMAX (GETVAR "EXTMIN"))
(if (=(cdr(assoc 0 (ENTGET pol))) "LWPOLYLINE")
(progn
(FOREACH NN (ENTGET pol)
(IF(= 10(CAR NN))
(SETQ SPI (CONS (CDR NN)SPI)
PTMIN (LIST (MIN (CAR PTMIN)(CAR (CDR NN)))(MIN (CADR PTMIN)(CADR (CDR NN))))
PTMAX (LIST (MAX (CAR PTMAX)(CAR (CDR NN)))(MAX (CADR PTMAX)(CADR (CDR NN))))
);SETQ
);IF NN=10
);FOREACH
;;; (COMMAND "ZOOM" "W" PTMIN PTMAX)
(setq pol (ssget "WP" spi))
;;; (COMMAND "ZOOM" "P")
POL
);progn
(ALERT "This is NOT 'POLYLINE'!")
);IF
);wsel1
;избира обекти пресечени от затворена полилиния
(defun csel (/ pol spi NN)
(setq pol (car(entsel "\nSelect polyline "))SPI (LIST))
(csel1 pol)
);csel
(defun csel1 (pol / spi NN PTMIN PTMAX)
(SETQ PTMIN (GETVAR "EXTMAX")PTMAX (GETVAR "EXTMIN"))
(if (=(cdr(assoc 0 (ENTGET pol))) "LWPOLYLINE")
(progn
(FOREACH NN (ENTGET pol)
(IF(= 10(CAR NN))
(SETQ SPI (CONS (CDR NN)SPI)
PTMIN (LIST (MIN (CAR PTMIN)(CAR (CDR NN)))(MIN (CADR PTMIN)(CADR (CDR NN))))
PTMAX (LIST (MAX (CAR PTMAX)(CAR (CDR NN)))(MAX (CADR PTMAX)(CADR (CDR NN))))
);SETQ
);IF
);FOREACH
;;; (COMMAND "ZOOM" "W" PTMIN PTMAX)
(setq pol (ssget "CP" spi))
;;; (COMMAND "ZOOM" "P")
POL
);progn
(ALERT "This is NOT 'POLYLINE'!")
);IF
);csel1
За да изберете елементите в определена област с произволни граници първо очертайте с една полилиния границата, заредете програмата и стартирайте
(wsel)
за да изберете всички елементи вклизащи изцяло в полилинията
или
(csel)
за да изберете всички елементи вклизащи изцяло в полилинията и обектите пресечени от нея
|
| |
|
|
|