Hallo, bin etwas weiter gekommen und habe etwas gebastelt.
Leider gibt es Probleme mit dem undo wenn man den Befehl mehrmals hintereinander aufruft?!
Habe vermutlich einen Knopf in der Leitung!
Hat jemand eine Idee oder Anregung?
(defun c:RegionLoop (/ Region1 Region2 Region3 Area1 Area2 Area3)
(setq oldcmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(vl-load-com)
(/= (setq ssReg (ssget '((0 . "REGION")))) nil)
(setq vlReg (vlax-make-safearray vlax-vbObject (cons 0 (- (sslength ssReg) 1))))
(setq i 0)
(while (<= i (- (sslength ssReg) 1))
(setq tmp (vlax-ename->vla-object (ssname ssReg i)))
(vlax-safearray-put-element vlReg i tmp)
(setq i (+ i 1))
)
(setq i (vlax-safearray-get-l-bound vlReg 1))
(while (<= i (vlax-safearray-get-u-bound vlReg 1))
(setq n (+ i 1))
(while (<= n (vlax-safearray-get-u-bound vlReg 1))
(if (>=(vla-get-Area (vlax-safearray-get-element vlReg i))
(vla-get-Area (vlax-safearray-get-element vlReg n))
)
(progn
(setq Fläche1 (vlax-safearray-get-element vlReg i))
(setq Fläche2 (vlax-safearray-get-element vlReg n))
(checkregion Fläche1 Fläche2)
)
(princ "\nFläche 2 ausserhalb Fläche 1")
)
(setq n (+ n 1))
)
(setq i (+ i 1))
)
(setvar "cmdecho" oldcmdecho)
(princ)
)
(defun CheckRegion (Region1 Region2 / Region3 Area1 Area2 Area3)
(setq Area1 (vla-get-Area Region1))
(setq Area2 (vla-get-Area Region2))
(if (and Region1 Region2)
(progn
(setq bool acSubtraction)
(vla-boolean Region1 bool Region2)
)
)
(setq Region3 (entlast))
(setq Region3 (vlax-ename->vla-object Region3))
(setq Area3 (vla-get-Area Region3))
(command "_.undo" 1)
(if (= Area3 (- Area1 Area2))
(princ "\nFläche 2 innerhalb Fläche 1")
)
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP