Reklam ver...

POLYLINE genişliğini değiştiren AutoLISP uygulaması



Yazar Muharrem Koçyiğit
Mesleği Makine Teknikeri
  AutoCAD, AutoLISP, Visual LISP
  Prosteel Uzmanı
e-mail  

AutoCAD 14 ve üzeri sürümler

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.

Fig.1
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.

Fig.2
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.

Fig.3
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).

Fig.4
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

3 Votes | Average: 5 out of 53 Votes | Average: 5 out of 53 Votes | Average: 5 out of 53 Votes | Average: 5 out of 53 Votes | Average: 5 out of 5 (3 oy, ortalama: 5)
Loading ... Loading ...

4 yorum “POLYLINE genişliğini değiştiren AutoLISP uygulaması”

  • 1
    Orhan TokerNo Gravatar
    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,

  • 2
    Serkan ÖzantNo Gravatar
    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.

  • 3
    NOKTANo Gravatar
    20 December 2006, Wednesday 12:57

    lisp bizim için altın yumurta denilebilir
    Muharrem Koçyiğit

  • 4
    nilgülNo Gravatar
    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

Yorum bırak