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

Autocad Üst Üste Gelmiş Gereksiz Çizgileri Silme Komutu
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.

Lisp nedir? Nasıl yüklenir? konusunda daha önce bir yazı yazmıştım.

Daha önce lisp kullanmamış arkadaşlar buradan okuyabilirler.

Umarım faydalı bir yazı olmuştur.

Bugün bir iyilik yap, bu yazıyı arkadaşlarınla paylaş :

BU YAZIYI OKUYANLAR BUNLARI DA OKUDU

YORUMLAR

    Bu yazıya daha önce hiç yorum yapılmamış.
    İlk yorumu sen yap!

Yorum yap

Geçersiz bir mail adresi girdiniz. Lütfen tüm zorunlu alanları doldurun. *