Autocad Üst Üste Gelmiş Gereksiz Çizgileri Silme Komutu


Autocad'te büyük çaplı projeler çizerken veya bir projeyi iki - üç parcada faklı kişiler ile çalışarak çiziyorsanız mutlaka üst üste gelen çizgiler olacaktır. Bunun için aslında büyük projeye de gerek yok; copy, mirror, ofset vb komutları sıklıkla kullanınca mutlaka bu durum herkesin başına geliyor. Ve bu şekilde proje kapatılıp teslim edilmiyor elbette.
Ne yapacağız peki? Tabiki üst üste gelen aynı çizgileri sileceğiz.
Nasıl sileceğiz peki? Tabiki tek tek değil. Overkill komutu ile.
Bu komut'un güzel tarafı ise sadece aynı çizgileri silip geçmiyor olması.. Kalınlıklarını ihmal et, layerlarını ihmal et, renklerini ihmal et vb. gibi özelleştirmeler yapabiliyoruz.
autocad fazla çizgileri silme
Kalıkları ihmal et derseniz iki üst üste çizginin kalınlık dışında tüm özellikleri aynı ise altta kalan çizgiyi siler.
Diğer ihmal özellikleri de aynı mantıkla çalışıyor.
Komutu kısa yoldan kullanmak, pencerelerle uğraşmak istemiyorsanız;
  • Overkill (Enter)
  • All (Enter)
Derseniz tüm üst üste binmiş aynı çizgileri tek'e indirger.
Bu yöntem blocklarda dahi işe yarar.
Bunu kolay yoldan lisp ile ve tüm objeler için yapmak istiyorsanız aşağıdaki kodları kullanabilirsiniz.
(write-line "Powered by: Hafzullah YILDIRIM www.hafzullah.com")

(defun c:Tertemiz (/ bLks L n sYc pVtbL m n0 i0 a0 x0 y0 z0 cmpbL n1 i1 a1 x1 y1 z1)

  (setvar "cmdecho" 0) (command "undo" "group")

  (defun *error* (er) (princ (strcat "" er)) (command "_.undo" "e")

    (setq *error* nil) (princ "Powered by: Hafzullah YILDIRIM www.hafzullah.com"))

  (princ "Select BLocks for Overkill operations: ")

  (setq bLks (ssget (list (cons 0 "INSERT"))) L (sslength bLks) n -1 sYc 0)

  (while (< (setq n (1+ n)) (1- L))

    (setq pVtbL (entget (ssname bLks n)) m n n0 (assoc 2 pVtbL)

          i0 (assoc 10 pVtbL) a0 (assoc 50 pVtbL)

          x0 (assoc 41 pVtbL) y0 (assoc 42 pVtbL) z0 (assoc 43 pVtbL))

    (while (< (setq m (1+ m)) L)

      (setq cmpbL (entget (ssname bLks m)) n1 (assoc 2 cmpbL)

            i1 (assoc 10 cmpbL) a1 (assoc 50 cmpbL)

            x1 (assoc 41 cmpbL) y1 (assoc 42 cmpbL) z1 (assoc 43 cmpbL))

      (if (and (mapcar '(lambda (p1 p2) (equal (eval p1) (eval p2)))

                       '(n0 i0 a0 x0 y0 z0) '(n1 i1 a1 x1 y1 z1)))

        (progn (ssdel (cdr (assoc -1 cmpbL)) bLks)

              (entdel (cdr (assoc -1 cmpbL)))

          (setq L (sslength bLks) m (1- m) sYc (1+ sYc))))))

  (princ (strcat "** " (itoa sYc) " overlapped bLocks removed **"))

  (setq *error* nil) (command "undo" "e") (prin1)

)
Lisp'i yükledikten sonra komut satırına Tertemiz yazarak çalıştırabilirsiniz.


Post a Comment

Daha yeni Daha eski