29.12.2019 18:47    

mühendisce
bloksuz ölçüler için

(defun c:deldims ( / d )
(vlax-for b (vla-get-blocks (setq d (vla-get-activedocument (vlax-get-acad-object))))
(if (eq :vlax-false (vla-get-isxref b))
(vlax-for o b
(if (wcmatch (vla-get-objectname o) "AcDb*Dimension*")
(vl-catch-all-apply 'vla-delete (list o))
)
)
)
)
(vla-regen d acallviewports)
(princ)
)
(vl-load-com) (princ)



bloklu ölçüler için


(defun c:blitz2 (/ aDoc)
(vl-load-com)
(setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vlax-for blk (vla-get-blocks aDoc)
(if
(and
(eq :vlax-false (vla-get-isXref blk))
(eq :vlax-false (vla-get-isLayout blk))
(not (wcmatch (vla-get-name blk) "`*D*"))
)
(vlax-for dim blk
(if (wcmatch
(vla-get-ObjectName dim)
"AcDb*Dimension")
(vla-delete dim))
)
)
)
(vla-regen aDoc acAllViewports)
(princ)
)

30.12.2019 07:27    

Travaci
Kod:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;****** Block Icinde Olan ve Olmayan Olcu ve Taramalari Siler ******;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:dbh (/ et x y te)
  (setq et (vla-get-Activedocument (vlax-get-acad-object)))
  (vla-startundomark et)
  (if (setq te (ssget "x" '((0 . "*dimension,hatch"))))
    (progn
      (setvar 'cmdecho 0) (command "_.erase" te "")
    )
  )
  (vlax-for x (vla-get-blocks et)
    (if (and (eq :vlax-false (vla-get-isLayout x))
             (eq :vlax-false (vla-get-isXref x)))
      (vlax-for y x
        (if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension")
          (vl-catch-all-apply 'vla-delete (list y))
        )
      )
    )
  )
  (vla-endundomark et)
  (vla-regen et acAllViewports)
  (princ)
)

30.12.2019 08:41    

kral87
Yadımlarınız için teşekkürler Travaci bey, mühendisce bey iyi çalışmalar

30.12.2019 12:57    

mühendisce
lisp içerisine blok olan ve olmayan text leride silmesi için ekleme yaptım fakat blok olmayan text leri siliyor blok olanları silmiyor.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;****** Block Icinde Olan ve Olmayan Olcu ve Taramalari Siler ******;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:dbh (/ et x y te)
(setq et (vla-get-Activedocument (vlax-get-acad-object)))
(vla-startundomark et)
(if (setq te (ssget "x" '((0 . "*dimension,hatch,mtext"))))
(progn
(setvar 'cmdecho 0) (command "_.erase" te "")
)
)
(vlax-for x (vla-get-blocks et)
(if (and (eq :vlax-false (vla-get-isLayout x))
(eq :vlax-false (vla-get-isXref x)))
(vlax-for y x
(if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension,AcDbmtext")
(vl-catch-all-apply 'vla-delete (list y))
)
)
)
)
(vla-endundomark et)
(vla-regen et acAllViewports)
(princ)
)

31.12.2019 14:31    

kral87
Merhabalar,
projede olan örneğin fırın tefrişi blogundan 100 adet var bunların hepsini SELECTSIMILAR komutu ile seçerek hepsini silebiliyoruz.
sorum blok içinde blok olan ve dinamik blok olan bloklar var bunları SELECTSIMILAR komutu seçmiyor.
blok içinde blok olan ve dinamik blok olan blokları da silen lisp varmı?
iyi çalışmalar,

03.01.2020 07:31    

kral87
Merhaba Travaci Bey,
çizimin içindeki bir bloğu kaç tane var ise bloklu dinamik bloklu hepsini seçip silebileceğimiz bir komut yada lisp varmıdır?
iyi çalışmalar.

10.01.2020 15:26    

kral87
Merhaba Travaci Bey,
Paylaşmış olduğunuz Block Icinde Olan ve Olmayan Olcu ve Taramalari Silme lispi bütün projedeki ölçü ve taramaları siliyor.
Lips sadece projedeki seçili alandaki ölçüleri ve taramaları silecek şekilde düzenlenebilirmi yani projede silinmesi istenmeyen ölçü ve taramalar kalacak sadece seçili alandakiler silinecek
yardımlarınız için teşekkürler
iyi çalışmalar




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;****** Block Icinde Olan ve Olmayan Olcu ve Taramalari Siler ******;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:dbh (/ et x y te)
(setq et (vla-get-Activedocument (vlax-get-acad-object)))
(vla-startundomark et)
(if (setq te (ssget "x" '((0 . "*dimension,hatch"))))
(progn
(setvar 'cmdecho 0) (command "_.erase" te "")
)
)
(vlax-for x (vla-get-blocks et)
(if (and (eq :vlax-false (vla-get-isLayout x))
(eq :vlax-false (vla-get-isXref x)))
(vlax-for y x
(if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension")
(vl-catch-all-apply 'vla-delete (list y))
)
)
)
)
(vla-endundomark et)
(vla-regen et acAllViewports)
(princ)
)

11.01.2020 08:02    

ehya
Alıntı
kral87 :
Merhaba Travaci Bey,
Paylaşmış olduğunuz Block Icinde Olan ve Olmayan Olcu ve Taramalari Silme lispi bütün projedeki ölçü ve taramaları siliyor.
Lips sadece projedeki seçili alandaki ölçüleri ve taramaları silecek şekilde düzenlenebilirmi yani projede silinmesi istenmeyen ölçü ve taramalar kalacak sadece seçili alandakiler silinecek
yardımlarınız için teşekkürler
iyi çalışmalar





(if (setq te (ssget "x" '((0 . "*dimension,hatch"))))

satırını

(if (setq te (ssget '((0 . "*dimension,hatch"))))

olacak şekilde değiştirin.

11.01.2020 10:20    

kral87
Teşekkürler Ehya bey
ekteki lisp bütün çizimi tek renk yapıyor bu lisp te sadece seçili alanı tek renk ve kalınlık olacak şekilde yapılabilirmi
örnek olarak çizimin bir kısmını seçip önce sarı renk sonrada 0,20 kalınlık verilebilirmi (renk kod ve kalınlık girilerek verilecek)
iyi çalışmalar,

(defun c:renk (/ clr)
(if (setq clr (getint "\nYeni renk kodu:"))
(progn
(setvar 'cmdecho 0)
(command "._setbylayer" (ssget "_x") "" "yes" "yes" "._-layer" "color" clr "*" "")
)
) (princ)
)

kral87 (11.01.2020 12:22 GMT)

11.01.2020 13:15    

ehya
kral87




yapılamaz.

yeniden yazılması gerekir.

12.01.2020 15:08    

kral87
tamam teşekkürler ehya bey

13.01.2020 05:10    

mühendisce
bu lisp blok olan ve olmayan hatch ve ölçüleri silebiliyor bu lispe text ve mtext leride silmesi için ekleme yapılabilirmi yukarıda yaptım normal text ve mtext siliyor fakat blok içerisindekilerini silmiyor



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;****** Block Icinde Olan ve Olmayan Olcu ve Taramalari Siler ******;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:dbh (/ et x y te)
(setq et (vla-get-Activedocument (vlax-get-acad-object)))
(vla-startundomark et)
(if (setq te (ssget "x" '((0 . "*dimension,hatch"))))
(progn
(setvar 'cmdecho 0) (command "_.erase" te "")
)
)
(vlax-for x (vla-get-blocks et)
(if (and (eq :vlax-false (vla-get-isLayout x))
(eq :vlax-false (vla-get-isXref x)))
(vlax-for y x
(if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension")
(vl-catch-all-apply 'vla-delete (list y))
)
)
)
)
(vla-endundomark et)
(vla-regen et acAllViewports)
(princ)
)

13.01.2020 05:10    

mühendisce
bu lisp blok olan ve olmayan hatch ve ölçüleri silebiliyor bu lispe text ve mtext leride silmesi için ekleme yapılabilirmi yukarıda yaptım normal text ve mtext siliyor fakat blok içerisindekilerini silmiyor



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;****** Block Icinde Olan ve Olmayan Olcu ve Taramalari Siler ******;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:dbh (/ et x y te)
(setq et (vla-get-Activedocument (vlax-get-acad-object)))
(vla-startundomark et)
(if (setq te (ssget "x" '((0 . "*dimension,hatch"))))
(progn
(setvar 'cmdecho 0) (command "_.erase" te "")
)
)
(vlax-for x (vla-get-blocks et)
(if (and (eq :vlax-false (vla-get-isLayout x))
(eq :vlax-false (vla-get-isXref x)))
(vlax-for y x
(if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension")
(vl-catch-all-apply 'vla-delete (list y))
)
)
)
)
(vla-endundomark et)
(vla-regen et acAllViewports)
(princ)
)

13.01.2020 05:59    

Travaci
mühendisce


Kod:

(defun c:dbh (/ et x y te) (vl-load-com)
  (setq et (vla-get-Activedocument (vlax-get-acad-object)))
  (vla-startundomark et)
  (if (setq te (ssget "x" '((0 . "*dimension,hatch,*text"))))
    (progn
      (setvar 'cmdecho 0) (command "_.erase" te "")
    )
  )
  (vlax-for x (vla-get-blocks et)
    (if (and (eq :vlax-false (vla-get-isLayout x))
             (eq :vlax-false (vla-get-isXref x)))
      (vlax-for y x
        (if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension,AcDb*Text")
          (vl-catch-all-apply 'vla-delete (list y))
        )
      )
    )
  )
  (vla-endundomark et)
  (vla-regen et acAllViewports)
  (princ)
)

Travaci (16.07.2020 14:21 GMT)

13.07.2020 16:44    

kral87
Merhabalar
DBH lispi seçili alan içindeki bloklu bloksuz tarama ve ölçüleri siliyor ama seçili alan dışındaki bloklu tarama ve ölçüleride siliyor sadece seçili alan içindekileri silmek için lisp düzenlenebilirmi
seçili alan içinde bloklu tarama yada ölçü olmasada seçili alan dışındaki bloklarda etkileniyor
yardımlarınız için teşekkürler




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;****** Block Icinde Olan ve Olmayan Olcu ve Taramalari Siler ******;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:dbh (/ et x y te)
(setq et (vla-get-Activedocument (vlax-get-acad-object)))
(vla-startundomark et)
(if (setq te (ssget'((0 . "*dimension,hatch"))))
(progn
(setvar 'cmdecho 0) (command "_.erase" te "")
)
)
(vlax-for x (vla-get-blocks et)
(if (and (eq :vlax-false (vla-get-isLayout x))
(eq :vlax-false (vla-get-isXref x)))
(vlax-for y x
(if (wcmatch (vla-get-objectname y) "AcDbHatch,AcDb*Dimension")
(vl-catch-all-apply 'vla-delete (list y))
)
)
)
)
(vla-endundomark et)
(vla-regen et acAllViewports)
(princ)
)

kral87 (14.07.2020 09:16 GMT)

16.07.2020 13:28    

ProhibiT
Alıntı
kral87 :
Merhabalar
DBH lispi seçili alan içindeki bloklu bloksuz tarama ve ölçüleri siliyor ama seçili alan dışındaki bloklu tarama ve ölçüleri de siliyor. Sadece seçili alan içindekileri silmek için lisp düzenlenebilir mi?
Seçili alan içinde bloklu tarama yada ölçü olmasa da seçili alan dışındaki bloklarda etkileniyor yardımlarınız için teşekkürler
.


Daha önce bir kaç kere açıklamaya çalıştığım bir kavram kargaşasına kurban gittiğiniz için sormuşsunuz.
Bu Lisp, "sadece seçili alan içindeki block'ların taramalarını silmek için düzenlenebilir mi?"

Cevap: Düzenlenemez!

Günlük kullanımda pek çoğumuzun "block" diyip geçtiğimiz kavram aslında birbirinden farklı iki nesne türüne karşılık olarak kullanılıyor. Birincisi "Block Definition", ikincisi "Block Reference". Yani ilki Block tanımı ki, bu ekranda görünmez, AutoCAD veri tabanında "Table Objects bölümünde yer alır. Diğeri ise veri tabanında tanımlı Block Tanımını referans alarak oluşturulan ve ekranda görünür olan "Block Referans" nesnesidir. Properties (veya Quick Properties) listesinde, hatta ayarlarınız uygunsa imleci üzerine getirdiğinizde bile bu fark görünür aslında ama kimse dikkat etmez.

Zaten DXF formatında ve Lisp programlarda bu tür Block Referansları "INSERT" nesnesi olarak karşımıza çıkarlar.
Block tanımına ise, yukarıda açıkladığım gibi, ekranda görülemeyeceğinden, BE (Block Editor) kullanmak için açtığınızda listede görülebilir.

Başka konularda da arkadaşlarımızın kafasını karıştıran bir konu olduğu için bu kadar ayrıntılı açıklamak zorunda kaldım.

Sizin sorunuzda ise, söz konusu Lisp Fonksiyonu incelediğimizde, block (tanımı) altında yer alan Hatch ve Dimension nesneleri, Block Tanımında bulunarak siliniyor. Sonuç olarak Block Redefine edildiğinden (yeniden tanımlandığından) çizim içinde (seçilen alanın içinde veya dışında olduğuna bakılmaksızın, aynı isimdeki tüm bloklar yenisiyle (taramasız ve ölçüsüz olarak) yenilenirler.

İlle de bu yöntemi kullanmak isterseniz, seçmek istediğiniz bölgeyi (Copy-Paste, Cut-Paste ve Wblock kullanarak) başka (belki de yeni) bir çizim içine alarak block isimlerini değiştirin (rename edin), sonra aynı konuma yeniden yerleştirin (burada blcok içinde block yani nested block olmamasına dikkat etmeli) bu durumda yukarıdaki Lisp'i sıkıntısız kullanabilirsiniz.

Selam ve saygılarımla herkese kolaylıklar dilerim.

06.08.2020 12:10    

kral87
cevabınız için teşekkürler ProhibiT bey
iyi çalışmalar

Copyright © 2004-2022 SQL: 1.859 saniye - Sorgu: 96 - Ortalama: 0.01936 saniye