Тема: Удаление объектов снаружи контура (блока)
Добрый день господа сочувствующие. Нужен просто и эффективный способ удаления всех объектов не входящих в замкнутый контур в CIVIL3D. Не что подобное пытались "лепить" CookieCutter2. Самое близкое Lisp: trimerOuter, Но после использования напрочь зависает CAD через невозможность копировать оставшиеся после чистки данные:
(defun C:TrimOuter ( / cmde ent en el ss cbox ssall lst)
(if (and ACET-ENT-GEOMEXTENTS ; ET?
(setq ent (entsel "\nSelect the contour polyline: "))
(setq en (car ent))
(wcmatch (cdr (assoc 0 (entget en))) "*POLYLINE"))
(progn
(setq cmde (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(command "_UNDO" "_Group")
(setq cbox (ACET-ENT-GEOMEXTENTS en))
(setq cbox (mapcar '(lambda(x)(trans x 0 1)) cbox))
(setq lst (ACET-GEOM-OBJECT-POINT-LIST en 1e-4))
(ACET-SS-ZOOM-EXTENTS (ACET-LIST-TO-SS (list en)))
(command "_.ZOOM" "0.95x")
(if (null etrim)(load "extrim.lsp"))
(etrim en (polar
(car cbox)
(angle (car cbox)(cadr cbox))
(* (distance (car cbox)(cadr cbox)) 1.1)))
(if (and
(setq ss (ssget "_CP" lst))
(setq ssall (ssget "_X" (list (assoc 410 (entget en)))))
)
(progn
(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(foreach e1 lst (ssdel e1 ssall))
(ACET-SS-ENTDEL ssall)
)
)
(command "_UNDO" "_End")
(setvar "CMDECHO" cmde)
)
(if (not ACET-ENT-GEOMEXTENTS)(princ "\nExpress Tools not installed!"))
)
(princ)
)
(princ "\nTrimOuter loaded. Type TRIMOUTER to start.")
(princ)