POLYLINE genişliğini değiştiren AutoLISP uygulaması
![]() |
Yazar | Muharrem Koçyiğit |
| Mesleği | Makine Teknikeri | |
| AutoCAD, AutoLISP, Visual LISP | ||
| Prosteel Uzmanı | ||
Merhaba Arkadaşlar,
Bugün size anlatacağım Lisp programı ile bir veya birden fazla bileşik çizginin (POLYLINE) kalınlığını bir çırpıda değiştirme imkanına kavuşacaksınız. Eğer “işime yaramaz” diyorsanız programın koduna bir göz atmakta fayda var derim.
Command: KM_PWIDTH
Select objects:(Düzenleme yapmak istediğiniz bileşik çizgileri (POLYLINE) seçin)
Specify new width for POLYLINE <0>:(Bileşik çizginin yeni kalınlığını girin. ENTER tuşuna basarak ön görülen değeri kabul edebilirsiniz)
C:KM_PWIDTH fonksiyonu programın ana bölümünü (main) oluşturur. Burada (ssget) fonksiyonu ile seçim seti oluşturduktan sonra (PWidth-Get-Value) fonksiyonu ile kullanıcıdan veri istenilir ve daha sonra (PWidth-Modify) fonksiyonu çağrılır.
![]() |
Kod.1 - Ana (main) Fonksiyon “C:KM_PWIDTH“ |
PWidth-Set-Value fonksiyonu iki boyutlu çizimlerde bulunan iki çesit POLYLINE varlığını işler. Birisi optimize edilmiş olan bileşik çizgi (LightWeight Polyline / AcDb2dPolyline) diğeri ise artık kullanılmıyan eski bileşik çizgidir (AcDbPolyline). Bu iki tür nesneyi göz önünde bulundurarak bileşik cizgilierin kalınlığı değiştirilir.
NOT: Bazı Yazılımlar AutoCAD R14 sürümün ürettiği eski tip POLYLINE nesnesine gerek duyar. Pek bilinmiyen _CONVERTPOLY komutu ile geri dönüştürebilirsiniz.
PLINETYPE system degişkenin ön ayarı 2 (iki) olarak ayarlıdır ve AutoCAD’ın optimize bileşik çizgiler üretmesini sağlar. Bu değerde bırakmanızı tavsiye ederim. Çizim dosyanız da bu şekilde az yer kaplar.
![]() |
Kod.2 - Alt Fonksiyon “PWidth-Set-Value“ |
PWidth-Modify fonksiyonu oluşturduğumuz önceki seçim setini işler. Seçim setini baştan sonuna kadar dolaşır ve içinde bulunan nesneleri PWidth-Set-Value fonksiyonuna iletir.
![]() |
Kod.3 - Alt Fonksiyon “PWidth-Modify“ |
PWidth-Get-Value fonksiyonun görevi kullanıcıdan herhangi bir reel sayının girmesini sağlamaktır. Bir önce girilen değer kullanacıya tekrar sunulur ve böylelikle kolaylık sağlar. Sıfırdan küçük olan verileri geri çevirir. Bu tür işlemi AutoLisp fonksiyonu (initget) ile zorunlu kılabilirsiniz. Fonksiyonumuzun geri dönüş değeri (return value) reel sayıdır.
Not: Bileşik çizginin kalınlığını belirliyen reel sayı global ortamda bulunan degişkende saklanılıyor (glv:polyline:width).
![]() |
Kod.4 - Alt Fonksiyon “PWidth-Get-Value“ |
Programda kullanılan Visual-Lisp komutları:
(vla-get-ObjectName)
(vlax-variant-value)
(vlax-safearray-get-l-bound)
(vlax-safearray-get-U-bound)
(vlax-method-applicable-p)
(vlax-write-enabled-p)
(vl-catch-all-error-p)
(vl-catch-all-apply)
Kolay gelsin.
Gerekli doysa konumu: Poly-Width.lsp
Benzer Yazılar







20 December 2006, Wednesday 9:49
Sevgili okurlar,
Muharrem bey bizlere Almanya’dan yazı gönderen çok değerli bir arkadaşımız. Kendisinin çalışmaları gerçekten çok değerli ve sitemizde yazdığı için kendimizi şanslı sayıyoruz.
Teşekkürler Muharrem,
20 December 2006, Wednesday 10:09
Autocad’i verimli kullanmak her zaman çizim ortamına hakim olmak anlamına gelmiyor. Anlık ihtiyaçları belirleyip çabucak çözümler bulmakta önemli bir meziyet, bizleri bu yönde teşvik ettiğiniz için tşk. ederiz.
20 December 2006, Wednesday 12:57
lisp bizim için altın yumurta denilebilir
Muharrem Koçyiğit
2 January 2007, Tuesday 17:56
arkadaşlar ben bir inşaat teknikeriyim ve 3dmax notları istiyorum lütfen bana verin
yada yayınlayın