AutoCAD • AutoLISP • Programlama • Püfler • Komutlar • Terimler • Eğitim
aLd • TCad • FacadeCAD • Cephe Kot • HQ Library • FreeMUST • Pasdoc.A
13.12.2009 21:48    

blackhole
lisp yazan arkadaşlar şöyle bir şey geldi aklıma. kullandığımız kısaltmalar bize ne kadar zaman kazandırdığını görmek açısından komutu kaç defa girdiğimizi gösteren bir lisp yazabilir miyiz?örnek: abc komutu olsun bu komut filanca işi yapan bir lisp ve bunu gün içersinde sürekli kullanıyoruz lisp olmasaydı bu komutla değilde bir kaç aşamada yapacağımız işi yapmış olacaktık. dolayısıyla 10 sn. de bitireceğimiz iş belki 1 dk sürecekti ve bu komutu gün içersinde defalarca kullandığımızı düşünelim ve bunun gibi pek çok lisp kullandığımızı düşünelim ne kadar zaman kazandığımızı hesaplayabilmek açısından herhangi bir lispi kaç defa kullandığımızı saydıracak bir lisp olabilir mi? lispte bize soracak hangi komutu saydırmak istiyorsunuz? biz abc yazacağız (misal) ve o lispi saydırıp rakamı bize verecek.:) biraz da dakikalarımızı hesaplayalım di mi?:) lisp kullanan kişiler kısaltmalardan çok kazanıyor bir de bunu somut olarak görelim:)

13.12.2009 22:16    

ehya
aklıma gelen bunu bi genelleme olarak ayırmak mümkün değil.. her lispin içinde ayrı bi kodlama yapıp, numaratör koymak gerekir.. aksi halde kaç defa kullanıldığını öğrenmek bana göre mümkün değil.

13.12.2009 22:35    

yazgunesi
Yazınızı okuyunca ehya arkadaşımızın dediği aklıma geldi.Doğrusu ilginç bir konu.Fikrimce her autolisp dosyası için özel bir kodlama olur kendi bünyesinde ve txt dosyaya kayıt tutabilir tarih gün zaman vs. vs.. Eğer autolisp dosyasının sonlarına doğru bu kodlama yapılırsa lisp bitmeden önce son işlem kayıt işlemi olur. Birde okuyucu lisp yapılır.Merak ttiğiniz zaman çalıştırırsınız.Size bilgi verir. Mesala yani fikir olarak söylüyorum. :-))


Kod:

;  AUTOLISP İÇİNDE BAÅžKA BÄ°R DOSYAYA VERÄ° YAZMAK
;  Autolisp ile bir dosyaya veri yazabilmek için
;  her ÅŸeyden önce yazılacak dosyanın açılması gerekir.


;  Bu yazıda dosyanın açılması kavramı daha önce
;  varolmayan bir dosya için kullanılmaktadır.
;  Yani dosya ilk kez yaratılacaktır.

;  Diyelim çeÅŸitli iÅŸlemler yaptıktan sonra
;  bulduÄŸumuz sonuçları rapor.txt isimli
;  bir dosyada tutmak istiyoruz.

;  Diyelim ki bulduÄŸumuz sonuçlar
;  satır1, satır2, satır3, satır4
;  deÄŸiÅŸkenlerinde tanımlı olsun.

;  AÅŸağıdaki rutin bu iÅŸi yapmaktadır.


(defun C:DosyayaYaz ()

(SETQ SATIR1 "DENEME SATIRI BÄ°R")
(SETQ SATIR2 "DENEME SATIRI Ä°KÄ°")
(SETQ SATIR3 "DENEME SATIRI ÜÇ")
(SETQ SATIR4 "DENEME SATIRI DÖRT")

(setq dosyaadi "C:\\RAPOR.TXT")  ; DOSYANIN DÄ°SKTEKÄ° ADRESÄ° BELÄ°RLENÄ°R
(setq dosya (open dosyaadi "w")) ; BURADA DOSYA YAZMA AMAÇLI AÇILIR

(SETQ BASLIK "BAÅžLIK")

(write-line BASLIK dosya)
(write-line SATIR1 dosya)
(write-line SATIR2 dosya)
(write-line SATIR3 dosya)
(write-line SATIR4 dosya)

)

;  Programı çalıştırıp C sürücüsünde olan
;  RAPOR.TXT açtığımızda şöyle görürüz.

;  BAÅžLIK
;  DENEME SATIRI BÄ°R
;  DENEME SATIRI Ä°KÄ°
;  DENEME SATIRI ÜÇ
;  DENEME SATIRI DÖRT




Kod:

; AUTOLISP İÇİNDE BAŞKA BİR DOSYADAN VERİ OKUMAK

; Aşağıdaki rutin gözat ile seçilebilecek txt uzantılı
; bir dosyadaki verileri okuyarak autolisp formatında
; bir listeye aktarır ve ekrana print eder.

(vl-load-com); Bu satır lisp rutininin visuallisp içeriğini çalıştırmaya olanak verir

(defun c:d1()

(defun veri-oku (/ veri dosyaadi metindosyasi liste)

(setq dosyaadi (getfiled "DATA DOSYASI ... ADRESÄ°NDEDÄ°R :"
(getvar "dwgprefix") "txt" 16 ); Bu bölümde .txt dosyasını gözat ile seçebilmek için popup menü açılır.
   )

(setq metindosyasi (open dosyaadi "r")); dosya okumak amacı ile açılıyor.

(while
  (setq liste (read-line metindosyasi)); satır satır okuma baÅŸlıyor
  (setq veri (cons (read (strcat "(" liste ")")) veri))
)

(close metindosyasi); dosya kapatılıyor
(reverse veri); liste tersten yeniden yazılıyor – duruma göre gerekmeyebilir
)

(setq lst (veri-oku))
(print lst)
(princ)
); Liste ekrana yazılıyor


Örnek programlar internetten alıntıdır..



Linkleri görebilmek için ÜYE olmalısınız.

13.12.2009 23:22    

ProhibiT
yazgunesi arkadaşımızın verdiği örnekte,dosyayı açarken
(setq dosya (open dosyaadi "w")) ;;Write modunda
Bu şeklinde açarsanız, mevcut bir dosya varsa oradaki bilgiler silinerek yeni değerler yazılacaktır.
Eğer dosyayı
(setq dosya (open dosyaadi "a")) ;;Append modunda
açarsak dosya yoksa yeni dosya açılır. Varsa mevcut bilgilerire eklenerek yazılır.

Selamlar, Sevgiler, Kolay Gelsin...

14.12.2009 07:37    

blackhole
herkese teşekkürler ederim. Ehya bunu sadeleştirilmiş halde örnek abc komutu olsun bir şablon oluşturabilir misin?herkese iyi çalışmalar.

21.12.2009 22:58    

Harbi65
Bu konuda istenilene tam cevap vermiyor ama kullanılan komutları, kaç sefer kullanıldığını ve geçen süreyi arka planda hesaplayan lisp...



Linkleri görebilmek için ÜYE olmalısınız.

22.12.2009 11:15    

blackhole
malesef adres açılmıyor. o lispi yazılı olarak koyabilirseniz buraya çok iyi olur teşekkür ederim

22.12.2009 11:29    

Harbi65
Adreste bi sorun yok açılıyor...

> 1 <
Copyright © 2004-2022 SQL: 1.079 saniye - Sorgu: 62 - Ortalama: 0.01741 saniye