Çizimdeki noktaları silen AutoLISP uygulaması
![]() |
Yazar | Muharrem Koçyiğit |
| Mesleği | Makine Teknikeri | |
| AutoCAD, AutoLISP, Visual LISP | ||
| Prosteel Uzmanı | ||
| Kategori: | : | Visual Lisp | |
| Dosyalar: | : | Del-Points.rar | |
| İlgili Yazılar: | : | Aşağıda bulabilirsiniz. |
Merhaba arkadaşlar,
Bu günkü Lisp konumuz AutoCAD çiziminde bulunan POINT nesnenelerini silmek. Programı yazarken sizlere AutoLisp ile VisualLisp arasındaki programla farkını göstermek istedim. Onun için iki çesit ana fonksiyon bulunmaktadır.
C:Delpt fonksiyonu (Fig.1) ERASE komutunu kullanarak POINT nesnelerini siler.
![]() |
Fig.1 - Ana (main) Fonksiyon “C:Delpt“ |
C:DelptX fonksiyonu (Fig.2): VisualLisp programlama yöntemi ile (vla-delete) nesneleri silmektedir. AutoLisp’de oluşturduğunuz seçim setininin içeriğini bilmeniz gerekir. (sslength) sonucuna göre while döngüsüyle teker teker ele alabilirsiniz. Visual Lisp ile oluşturulan seçim setinde buna gerek yoktur. Sadece Vlax-for fonksiyonu kullanmak yeterli olacaktır.
![]() |
Fig.2 - Ana (main) Fonksiyon “C:DelptX” (VisuaLisp) |
UTL:SEL:SET-FILTER (Fig.3) ve UTL:ADD:SELECTIONSET fonksiyonlari (Fig.4) kendime ait olan kütüphane (KMLIB.vlx) icinde bulununan yardımcı fonksiyonlardan sadece bir kaçıdır. Yazılımda bu tür alt fonksiyonlara devamlı ihtiyaç duyulur. Onun için programin tasarımını önceden iyi düşünmek gerekir. Asağıda gördüğünüz fonksiyonlar seçim seti olusturmanızda yardımci olur.
![]() |
Fig.3 - Alt Fonksiyon “UTL:SEL:SET-FILTER“ |
Biraz karmaşık gibi görünse de aslında çok akıllıca tasarlanmıştır. Vaktim sınırlı olduğu için bu günkü konumuzu burada noktalamak istiyorum.
![]() |
Fig.4 - Alt Fonksiyon “UTL:ADD-SELECTIONSET“ |
Programda kullanılan VisualLisp komutları:
vl-catch-all-error-p,vl-catch-all-applyvlax-for,vla-Add,vla-itemvlax-Select,vla-SelectOnScreen,vla-Highlightvlax-SafeArray-Fill,vlax-Make-SafeArray
Konu hakkında soru ve yorumlarınızı bekliyorum.
Kolay gelsin
İlgili Yazılar:AutoLISP dersi
Technorati Tags: AutoLISP, Visual LISP
Benzer Yazılar






19 November 2007, Monday 0:47
muharrem bey çlaışmalarınızdan dolayı sizi kutluyorum sayenizde ne güzel şeyler öğrendik çalışmalarınızın devamını bekliyoruz
hayatınızda başarılar diliyorum sevgilerimle
19 November 2007, Monday 21:57
Merhaba Sinan,
övgü dolu sözler duymak güzel bir duygu. Hepinize Teşekkür ederim…
31 December 2007, Monday 14:58
Hocam elinize sağlık birçok yolla nokta silmeyi tarif etmişsiniz. Dikkatimi çeken Autolisp ile silme işlemi. Bu kadar işleme neden gerek var.
(setq ss (ssget “_x” (list (cons 0 “POINT”))))
(command “erase” ss “”)
bu autolisp kodu da aynı işlemi yapıyor. Yazması da daha kısa. Farkını öğrenmemiz mümkün mü?
2 January 2008, Wednesday 22:43
Merhaba Mehmet Bey,
VisualLisp ile seçim seti oluşturmak biraz zahmetli iştir. Fakat bir seferlik zahmete katlanıp yazdıktan sonra *.vlx Kütüphanenisi oluşturur işinize yarıyan fonsiyonlarla çalıstırırsınız. AutoCAD - VBA ‘ye hakimseniz ayni şekilde programlanmanız gerekiyor.
Gelelim asil nedenine Microsoft Sistemine kayıtlı olan her COM programını (bunun icinde VBA / VisualLisp’de dahil) bir VBScript ile otomatikleştirme imkanı bulunmakta, yani >>AutoCAD’ın içine girmeden