(defun c:SilAyni ( / sel ent vla-ent src-type src-layer src-color src-ltype src-length ss i del-count curr-ent curr-vla curr-type curr-color curr-ltype curr-length _dev_info match) (vl-load-com) ;; --- GİZLİ GELİŞTİRİCİ BİLGİSİ --- ;; Developer: Furkan Özçelik ;; Website: www.furkanozcelik.com.tr (setq _dev_info "Developer: Furkan Özçelik | www.furkanozcelik.com.tr") ;; --------------------------------- (setq sel (entsel "\nReferans objeyi seçin (Çizgi, Yazı, Tarama vb.): ")) (if sel (progn (setq ent (car sel)) (setq vla-ent (vlax-ename->vla-object ent)) ;; 1. Özellikleri Hafızaya Al (setq src-type (cdr (assoc 0 (entget ent)))) ; Obje türünü hafızaya al (HATCH, TEXT, LINE vb.) (setq src-layer (vla-get-layer vla-ent)) (setq src-color (vla-get-color vla-ent)) (setq src-ltype (vla-get-linetype vla-ent)) ;; Uzunluk verisini al (Yazı ve Hatch gibi objelerde nil döner) (if (vl-catch-all-error-p (setq src-length (vl-catch-all-apply 'vlax-curve-getDistAtParam (list vla-ent (vlax-curve-getEndParam vla-ent))))) (setq src-length nil) ) ;; Çıktı mesajı ile kullanıcıyı bilgilendir (if src-length (prompt (strcat "\n[Hafıza] Tür: " src-type " | Katman: " src-layer " | Renk: " (itoa src-color) " | Çizgi Tipi: " src-ltype " | Uzunluk: " (rtos src-length 2 4))) (prompt (strcat "\n[Hafıza] Tür: " src-type " | Katman: " src-layer " | Renk: " (itoa src-color) " | Çizgi Tipi: " src-ltype " | (Uzunluk Yok)")) ) ;; 2. Aynı katmandaki ve aynı türdeki tüm objeleri seç (setq ss (ssget "_X" (list (cons 8 src-layer) (cons 0 src-type)))) (setq del-count 0) (if ss (progn (setq i 0) (while (< i (sslength ss)) (setq curr-ent (ssname ss i)) (setq curr-vla (vlax-ename->vla-object curr-ent)) (setq curr-type (cdr (assoc 0 (entget curr-ent)))) (setq curr-color (vla-get-color curr-vla)) (setq curr-ltype (vla-get-linetype curr-vla)) ;; Hedef objenin uzunluğunu al (if (vl-catch-all-error-p (setq curr-length (vl-catch-all-apply 'vlax-curve-getDistAtParam (list curr-vla (vlax-curve-getEndParam curr-vla))))) (setq curr-length nil) ) ;; 3. Özellikleri Karşılaştır (setq match nil) (if (and (= curr-type src-type) (= curr-color src-color) (= curr-ltype src-ltype)) (if src-length ;; Eğer referansın uzunluğu varsa (Line, Polyline vb.), hedefi toleransla kontrol et (if (and curr-length (< (abs (- curr-length src-length)) 0.001)) (setq match T) ) ;; Eğer referansın uzunluğu yoksa (Hatch, Text vb.), diğer özelliklerin eşleşmesi yeterli (setq match T) ) ) ;; 4. Eşleştiyse Sil (Seçtiğin obje de bu şarta uyduğu için artık silinecek) (if match (progn (vl-catch-all-apply 'entdel (list curr-ent)) (setq del-count (1+ del-count)) ) ) (setq i (1+ i)) ) (prompt (strcat "\nİşlem Tamamlandı: Seçilen referans obje DAHİL birebir eşleşen " (itoa del-count) " adet obje silindi.")) ) (prompt "\nAynı katmanda bu özelliklere sahip obje bulunamadı.") ) ) (prompt "\nHiçbir obje seçilmedi.") ) (princ) ) (prompt "\nKomutu çalıştırmak için 'SilAyni' yazın.") (princ)