1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLİSP NUTSHELL’in Temelleri – Kısım-2

Artık AutoLisp rutinlerini bir dosyada saklamamız gerekmektedir.

AutoLisp dosyaları “lsp” uzantılı basit ASCII metin dosyalarıdır.

Not Defteri uygulamasını veya başka herhangi bir basit metin düzenleyicisini açın ve aşağıdakileri yazın:

(defun testline ()

               ;fonksiyonu tanımlama

(setq a (getpoint “\nBirinci noktayı girin: “))

               ;birinci noktayı elde etme               

(setq b (getpoint “\nİkinci noktayı girin: “))

               ;ikinci noktayı elde etme               

(command “Line” a b “”)

               ;çizgiyi çizme

)

              ;defun fonksiyonunu sonlandırma

Şimdi, bu dosyayı “testline.lsp” olarak kaydedin; bir ASCII Metin dosyası olarak kaydettiğinizden ve AutoCAD‘in araştırma yolundaki “search path“ bir dizine kaydettiğinizden emin olun. Şimdi AutoCAD‘i açın ve komut satırına aşağıdaki satırı yazın:

(load “testline”)

Bu, fonksiyonu belleğe yükler. (“Lsp” uzantısını yazmak zorunda olmadığınızı fark ettiniz mi?) Şimdi şunu yazın:

 (testline)

Fonksiyonunuz şimdi çalışmış olmalıdır.

Bu rutini standart bir AutoCAD komutu gibi davranacak şekilde düzenleyelim:

(defun c:testline ()

;fonksiyonu tanımlama

(setq a (getpoint “\nBirinci noktayı girin : “))

;birinci noktayı elde etme               

(setq b (getpoint “\nİkinci noktayı girin : “))              

;ikinci noktayı elde etme               

(command “Line” a b “”)              

;çizgiyi çizme

)             

;defun fonksiyonunu sonlandırma

Fonksiyon adından önce c: ifadesi koyduğumuz zaman, fonksiyonu çalıştırırken köşeli parantez içine almamız gerekmez. Fonksiyonu tekrar yükleyin ve tekrar çalıştırın.

(load “testline”)testline

Çok daha iyi, değil mi?

Yine de bir sorunumuz var. Rutini yüklediğimizde, sinir bozucu bir “nil” mesajının ortaya çıkmaya devam ettiğini fark ettiniz mi? Ayrıca rutini çalıştırdığımızda bize “nil” esajını aynı şekilde döndürdü. Yükleme veya çalıştırma sırasında bu “nil” mesajını engellemek için (princ) fonksiyonunu kullanabilirsiniz. İşte size rutininizin nasıl görüneceği:

(defun c:testline ()                                                              ;fonksiyonu tanımlama               

(setq a (getpoint “\nBirinci noktayı girin : “))               ;birinci noktayı elde etme               

(setq b (getpoint “\nİkinci noktayı girin : “))                ;ikinci noktayı elde etme               

(command “Line” a b “”)                                                    ;çizgiyi çizme         

(princ)                                                                                    ;çalışmayı temizleme

)                                                                                               ;defun fonksiyonunu sonlandırma

(princ)                                                                                    ;yüklemeyi temizleme

Artık AutoLisp‘in bizim için bazı hesaplamalar yapmasının zamanı geldi.

AutoLisp‘in bizim için belirli bir yükseklikte için bir kiriş çizmesini istediğimizi var sayalım.

Öncelikle, kirişi çizmek için ihtiyaç duyacağımız belirli parametrelerle ilgili kullanıcıdan bilgi almaya başlayacağız.

İşte aşağıdaki şekilde kullanıcının vermesi gereken verilerle çizmeye çalıştığımız kiriş:

Kullanıcıdan almak istediğimiz veriler şunlardır:

Yerleştirme noktası           ip

Kiriş boyu                            lb

Kiriş yüksekliği                  hb

Gövde kalınlığı                   wt

Uç plakası kalınlığı            ep

Diş uzunluğu                       nl

Diş derinliği                         nd

Haydi önce bu değerleri kullanıcıdan almak için bir rutin yazalım.

(defun c:testkiris () 

                                   ;fonksiyonu tanımlama

;******************************************************************               

                                   ;Kullanıcı verilerini elde etme              

(setq lb (getdist “\nKiriş boyu : “))                          ;kirişin uzunluğunu elde etme               

(setq hb (getdist “\nHeight of Beam : “))               ; kirişin yüksekliğini elde etme               

(setq wt (getdist “\nFlange Thickness : “))            ;gövde kalınlığını elde etme               

(setq ep (getdist “\nEnd Plate Thickness : “))       ;uç plakası kalınlığını elde etme               

(setq nl (getdist “\nLength of Notch : “))               ;diş uzunluğunu elde etme               

(setq nd (getdist “\nDepth of Notch : “))               ;diş yüksekliğini elde etme               

                                          ;Kullanıcı Verilerinin Sonu

;**********************************************************************************              

                                          ;Yerleştirme Noktasını elde etme               

(setq ip (getpoint “\nYerleştirme noktası : “))      ;yerleştirme noktasını elde etme

;********************************************************              

(princ)                                                                            ;işleyişi temizleme

)                                                                                       ;defun fonksiyonunun sonu

;***********************************************************************************

(princ)     ; yüklemeyi temizleme

;************************************************************************************

Rutini yükleyin ve çalıştırın. Yukarıda listelenen tüm değerler sizden istenecektir. Gerekli sayıları girin ve sonra değer adlarının önüne ünlem (!) işareti koyarak tüm değişkenlerin değerini kontrol edin. (ör. ip!).

OK. Kullanıcıdan almamız gereken tüm değerleri artık aldık.

Fakat önce, kirişi çizmeden önce gereken diğer noktaları belirlemek için bazı hesaplamalar yapmamız gerekiyor.

 

 

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

2.1.3 – Bodrum Kat – İç Duvarlar

Bodrum katının dış ve iç duvarlarının son düzeni, aşağıdaki bodrum katının çiziminde gördüğünüz gibi olacaktır …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.