Copyright © 2004-2022 SQL: 1.264 saniye - Sorgu: 98 - Ortalama: 0.0129 saniye
17.06.2008 16:45
meteyus |
projelerde geldiğinde sadeleştirme yapılarak ornegin masa sandalye , duvar ve kolon içindeki hatch lerin silinmesi gerekmektedir. bunun nedeni hem projenin kalabalıklasmasını engelemek hemde cıktı aldıgımızda fazla toner harcamasın diye cogu kez hatch lerin temizlenmesi uzun surmekte bu nedenle obje türü (örnek hatch) secilerek bu objeturundeki diğer objeleri secmesini saglayan lisp ihtiyacım var. yardımcı olursanız sevinirim.
|
17.06.2008 19:39
ehya |
Komut ismi SIL
Komutu çalıştır. Referans bir nesne türü seç. Ardından bu nesne türünü silmek istediğin çizimini seç. Kod: (defun c:sil ()
(setvar "errno" 0) (setq nnn nil) (while (= nnn nil) (setq sil_ref (entsel "\nReferans nesne türünü seçin:")) (if (= sil_ref nil) (progn (if (= (getvar "errno") 7) (progn (setvar "errno" 0) (setq nnn nil) ) ) (if (= (getvar "errno") 52) (progn (setvar "errno" 0) (setq nnn t) ) ) ) (progn (setq sil_tanim (cdr (assoc 0 (entget (car sil_ref))))) (alert (strcat "\nSilinecek nesne türü --> " sil_tanim " <--")) (setq sil_nesne (ssget (list (cons 0 sil_tanim)))) (if (= sil_nesne nil) (progn ) (progn (command "erase" sil_nesne "") ) ) ) ) (setq nnn t) ) (princ) ) ehya (05.03.2013 21:25 GMT) |
23.06.2008 07:24
infiniyt |
lisp mimari projeyi temizlemek için dieal gel gelelim gözlemlediğim bir sorun var; layer olarak değilde line,circle,polyline,insert vs olarak görüyor objeleri ve silinmesi istenmeyen bir çok objede silinmiş oluyor
|
23.06.2008 07:40
ehya |
Seçim, nesne türüne göre yapıldığı için silme işlemi nesnelere göre yapılıyor.
İsteyen bunu katman olarak değiştirebilir. Bunu yapmak için (setq sil_tanim (cdr (assoc 0 (entget (car sil_ref))))) (alert (strcat "\nSilinecek nesne türü --> " sil_tanim " <--")) (setq sil_nesne (ssget (list (cons 0 sil_tanim)))) satırlarını (setq sil_tanim (cdr (assoc 8 (entget (car sil_ref))))) (alert (strcat "\nSilinecek nesnelerin katman adı --> " sil_tanim " <--")) (setq sil_nesne (ssget (list (cons 8 sil_tanim)))) olarak değiştirin.
|
23.06.2008 09:01
meteyus |
tesekkürler eline sağlık
|
05.03.2013 20:03
kerem1453 |
sayın ehya bu seçime göre silme lispini katmana göre değiştirdim fakat lispi yükleyip bi kereye mahsuben çalıştırabiliyorum.ikinci defa secim yapmasını istedigimizde lisp çalışmıyo sorun ne olabilir? dwg dosyamızı açıp kapattıgımızda düzeliyor yine bir defa çalışıyor.
|
05.03.2013 21:25
ehya |
kerem1453
Haklısınız. Lispte küçük bir sorun oluşmuş. Düzelttim. Tekrar alabilirsiniz.
|
06.03.2013 12:42
waytooraider |
Hocam elinize sağlık çok güzel bir lisp olmuş.
Seçse move,copy yada silmeyi de seçimden sonra yapsak çok hoş olurdu. Neden böyle bir şey istediğimi açıklayacak olursam ; projelerde bazı blocklar patlamış oluyor.Bu şekilde patlamış olanları silmeden görmüş oluruz. Yada seçim yapıldığında bulut çizilsin gibi bir lisp genel kullanıcılar için harika olurdu.Projedeki tüm insert edilmiş blockları blulut içine alınması.Çok şey istemiş olabilirmiyim:) Saygılarımla Hocam.
|
06.03.2013 13:08
ehya |
waytooraider
lispte bulunan (command "erase" sil_nesne "") satırı silin ve yerine (sssetfirst nil sil_nesne) satırını yazın. Bu işlemden sonra nesneler seçili durumda olacaktır. Daha sonra hangi komutu çalıştırırsanız o komutun seçim setine dahil olacaktır.
|
06.03.2013 13:20
waytooraider |
Çok Teşekkürler.
Peki seçilenlerin üstüne hatch'li daire getirtebilirmiyiz :) Ama olursa müteşşekür olurum. Saygılarımla Ehya Hocam.
|
06.03.2013 13:43
ehya |
"Seçilenlerin üzerine hatch'li daire getirmek" ne demek??
|
06.03.2013 14:10
waytooraider |
Öcelikle sonsuz saygılarımı ileterek başlamak istiyorum.Yıllardır Siz'in ve Şahin Hocamızın yazılarını bıkmadan sıkılmadan hergün takip ediyorum.
Abuk subuk bi cümle kurduysam özürdilerim. Derdimi şu şekilde anlatmak istiyorum. SIL lispini blocklar için kulanmış olayım. Az önce ayarladığınız SIL lispi ile tüm blokları seçtikten sonra; Seçilen blokların üzerine cloud yada içi hatch'li çember çizilsin. Bunu istememin sebebi o bloklardan hangisi patlamış hangisi patlamamış onu görmüş olacağım. Bu sayede bcount ile sayımı yapılmayan blocklar rahatlıkla görülecektir. Sabrınızı zorladıysam çok özür dilerim Saygıdeğer Hocam.
|
06.03.2013 15:50
ehya |
Seçilen paftadaki blokların ortasına işaretlemek için Hatch yapar.
Hatch'in boyutunu değiştirmek için aşağıdaki kod'da bulunan (command "_.circle" ortasi 20) satırdaki 20 sayısını isteğinize göre değiştirin. Komut adı BLSS Kod: (defun c:blss ()
(vl-load-com) (setq sec_bl (ssget (list (cons 0 "INSERT")))) (if (= sec_bl nil) (progn) (progn (setq say_ (sslength sec_bl) c 0) (while (< c say_) (setq tek (ssname sec_bl c)) (vla-getboundingbox (vlax-ename->vla-object tek) 'MinP 'MaxP) (setq MinP (vlax-safearray->list MinP) MaxP (vlax-safearray->list MaxP)) (setq ortasi (polar minP (angle MinP MaxP)(/ (distance MinP MaxP) 2.0))) (command "_.circle" ortasi 20) (setq ent (entlast)) (command "_.hatch" "p" "solid" "s" ent "") (entdel ent) (setq c (+ c 1)))))(princ))
|
06.03.2013 16:14
kerem1453 |
mehmet bey sizden bu lisp için yazma-ekleme imkanınız varsa objenin türüne göre seçim yaptırdıgımızda mesala text secersek yükseklik circle secersek çap sorma şeklinde ekleme imkanı olurmu ?vaktinizi ayırıp ilgilendiginiz için tşk ederim.
|
06.03.2013 16:50
ehya |
Arkadaşlar bu lisp işi uzadıkça uzar. Herkes böyle bir şeklini değiştirmek istese, o zaman ben burada iş yapamam.
İsteklerinizin gelişmiş hali FILTER komutunda zaten mevcut. Buradan istediğiniz gibi seçim seti oluşturabilirsiniz.
|
07.03.2013 06:59
waytooraider |
Select smilar komutu ile harika bir ikili oldu.
Select smilar ile blokları seçip bu lisp ile blokları boyadığımız zaman,patlamış blokları göreceğiz. onları saymakta çok kısa bir zaman alacak farzı misal yangın tesisatında sprinkleri sayarken bcount ve bu lisp ile hatasız sprinkler saymış olacağız. Elinize sağlık çok güzel olmuş.
|
10.03.2013 21:50
waytooraider |
Hocam ne kadar kızarsanız haklısınız,ama dediğiniz circle'ın çapını autocadin için de iken değiştirebilme imkanımız varmı. aşırı yoğunlukta kullandığım bir lisp olduda. Herdefasında masa üstunde lispi bulup o değeri değiştirip tekrar yüklüyorum.Lutfen son bir kez yardımcı olun.
Saygılarımla Ehya Hocam.
|
10.03.2013 22:04
Travaci |
Kod: (defun c:bLs ()
(vl-load-com) (if (not eby) (setq eby 20)) (if (setq by (getint (strcat "\nCircle çapını giriniz: <" (rtos eby) ">: "))) (setq eby by) (setq by eby)) (setq sec_bl (ssget (list (cons 0 "INSERT")))) (if (= sec_bl nil) (progn) (progn (setq say_ (sslength sec_bl) c 0) (while (< c say_) (setq tek (ssname sec_bl c)) (vla-getboundingbox (vlax-ename->vla-object tek) 'MinP 'MaxP) (setq MinP (vlax-safearray->list MinP) MaxP (vlax-safearray->list MaxP)) (setq ortasi (polar minP (angle MinP MaxP)(/ (distance MinP MaxP) 2.0))) (command "_.circle" ortasi by) (setq ent (entlast)) (command "_.hatch" "p" "SOLID" "s" ent "") (entdel ent) (setq c (+ c 1)) ) ) ) (princ) ) Travaci (10.03.2013 22:29 GMT) |
11.03.2013 06:47
waytooraider |
Hocam çok teşekkürler. :)
|
waytooraider |
Hocam bu konuda son bir iyilik istiyorum.Gecenin buçuğu ve hani belki olur.Hatchi blok şeklinde oluşturabilirmi.
|