08.08.2008 07:38    

ehya
Autolisp ile ilgili tüm sorularınızı bu konu altından sorabilirsiniz.

08.08.2008 12:28    

beyto
sağ ol bu auto lisp hangi programda yazılıyor bide mantığı ne dir acaba paskal mantığı gibi geldi bana

08.08.2008 12:38    

ehya
Autolisp açık kodlama yapılan bir macro yazılım dilidir. Herhangi bir metin editöründe kodlanabilir. Daha iyi bir kontrol sağlanmak istenirse, Autocad'in içinde bulunan Tools --> Autolisp --> VisualLisp Editor programında yazılır.
Mantığı ise, kullanıcı tarafından verilen girişlere göre autolisp komutlarını kullanarak işlem yaptırılmasıdır.
Sitede, solda bulunan Autolisp bölümünden ya da Download bölümünde bulunan Autolisp bölümünden lispleri indirerek ne gibi kolaylıklar sağladığını anlayabilirsiniz.

08.08.2008 15:26    

ehya
Soruda iki türlü soru var. Birincisi sld dosyasını dcl'de kullanmak, diğeri ise sld dosyalarını kütüphane haline çevirip menülerde kullanmak.
1ncisinde, MSLIDE ile slide görüntüsünü oluşturun. Bu resim her zamanki gibi autocad'in tanımlı yollarında olmalı.

Dcl dosyasına yazmanız gereken bölüm;

Kod:

:image {
key="3kp_sld_sec";
color=0;
height=7;
fixed_height=true;
width= 20;
fixed_width=true;
alignment=left;
}


Burada örnek bi dcl den satırı kopyaladım. key adı slide görüntüsünün alt fon rengi, yüksekliği genişliği v.s.
istediğiniz gibi değiştirebilirsiniz.

Lisp bölümüne gelince;

Kod:

(start_image "3kp_sld_sec")
(fill_image  0 0 (dimx_tile "3kp_sld_sec")(dimy_tile "3kp_sld_sec") 0)
(slide_image
  0
  0
  (dimx_tile "3kp_sld_sec")
  (dimy_tile "3kp_sld_sec")
  (strcat "Slide_dosyasının_yeri_yazilacak" sld_dsy))
(end_image)


Yukarıdaki kodları da kendinize göre revize edin. Burada değişecek 2 yer var. birincisi key adları, diğeri ise slide dosyasının yeri.
Lispinize de bu bölümü eklediğinizde slide olarak hazırladığınız görüntüler dcl dosyanızda görünecektir.

2nci ise,
Bu tür nesneleri hazırlarken, öncelikle slide görüntüsünü almak istediğiniz dosyaları tek tek açıp MSLIDE komutu ile slide görüntülerini alın. Daha sonra bu dosyaları bir klasör de toplayın. Daha sonra kolaylık olması açısından C:\Program Files\AutoCAD *** klasörünün altında bulunan slidelib.exe dosyasını da bu klasörün içine kopyalayın.

Şimdi, text tabanlı bir dosya oluşturacağız. Bu dosyada her bir satırda slide dosyalarının ismi olacak. İster elle hazırlayın ister dos komutu kullanın.
Ben dos komutu kullanmanızı tavsiye ediyorum. Tekrar msdos penceresine son kaldığınız yere (slide ların olduğu klasöre) dönün.
"dir *.sld /b > liste.txt" komutunu çalıştırın.

Bu işlem, klasör içinde tüm sld dosyalarının ismini liste.txt dosyasınım içine yazacaktır.

Tekrar msdos penceresine dönün.
"slidelib.exe tefris < liste.txt" komutunu çalıştırın. Daha sonra klasör içine bakın. tefris.slb isimli dosya var mı? Eğer varsa slide kütüphanenizi başarıyla oluşturdunuz demektir.

Bu SLB dosyasını ve bloklarınızı uygun ve yeri değişmeyecek bir yere taşıyın. Ardından menü dosyanızı açın.
Mevcut bir menü dosyanız yok ise, yeni bir menü dosyası oluşturmalısınız.
Bu aşamadan sonra slide kütüphanesinin menü içinde nasıl görüntüleneceğine dair işlemlerimiz var. Bunun için, kendi örnek slide kütüphanemden bir bölümü ekleyip tek tek tarif edeyim.

***MENUGROUP=Archme

***POP1
**Archme
ID_MnArchme [&Archme]

[--]
ID_ArchmeFerf [Ferforje]$I=Ferforje $I=*

Menü dosyası olmayanlar mavi bölüm dahil tamamını bir TXT dosyasına yapıştırıp dosyanın uzantısını MNU olarak değiştirmeleri gerekir. Menü dosyası olanlar kırmızı bölümü almaları yeterlidir.

Aşağıdaki bölüm ise slide kütüphanesindeki slide ların görüntülenmesi ile ilgili bölümdür. Üstteki menü bölümü tamamlandıktan sonra aşağıdaki bu bölüm eklenmelidir.

***image
**ferforje
[Ferforjeler]
[tefris(ferforje_01,Ferforje 01)]^c^c-INSERT;ferforje_01;
[tefris(ferforje_02,Ferforje 02)]^c^c-INSERT;ferforje_02;
[tefris(ferforje_03,Ferforje 03)]^c^c-INSERT;ferforje_03;
[tefris(ferforje_04,Ferforje 04)]^c^c-INSERT;ferforje_04;
[tefris(ferforje_05,Ferforje 05)]^c^c-INSERT;ferforje_05;
[tefris(ferforje_06,Ferforje 06)]^c^c-INSERT;ferforje_06;


Tefris ismi bu listenin oluşumundan sonra SLB uzantılı oluşturacağımız dosya adı.
(ferforje_01,Ferforje 01) bölümü, ilk ferforje_01 ismi oluşturulan slide (SLD) dosyasının adı, ikinci bölüm ise slide kütüphanesi açıldığında menünün solunda görüntülenen isim
^c^c-INSERT;ferforje_02; bölümü ise, komut iptalinin yapılıp insert komutu aracılığı ile ferforje_02 adlı dosyayı çağırır.
Unutulmaması gereken, SLB dosyası ile insert edilecek blok dosyalarının yeri Autocad'in tanımlı yollarında kayıtlı olmalıdır.
Tools --> Options --> Files --> Support File Search Path

Txt dosyasına doğru bir şekilde bu girdileri sağladıktan sonra;

Bu satırı tarif etmek gerekirse, Menü tanım ismini ID_ArchmeFerf olarak tanıttım. Daha sonra [Ferforje] bölümü ile menüde görünen ismi belirttim. $I=Ferforje $I=* ismi ile slide kütüphanesinde Ferforje bölümünün okunmasını sağladım.
Bu işlemi yaptıktan sonra autocad'i açıp menü dosyasınızı güncellediğinizde aşağıdaki gibi bir görüntü elde edeceksiniz.




Bayağı uzun bi ders oldu. İnşallah işinize yarar.

ehya (09.08.2008 18:52 GMT)

09.08.2008 19:00    

Harbi65
arkadaşlar;
while döngüsü içinde getkword gibi bir harf girişi istemeden bir harfe basınca başka bi fonksiyona yönlendirilebilir mi?
mesela entera basınca lispi sonlandırdığı gibi bir harfe basınca başka bi fonksiyona gidecek....

09.08.2008 19:26    

ehya
daha detaylı bilgi versen...
while döngüsü içinde harfe nasıl basmayı düşünüyorsun?

09.08.2008 20:37    

Harbi65
Alıntı
ehya :
daha detaylı bilgi versen...
while döngüsü içinde harfe nasıl basmayı düşünüyorsun?



bir işlemi tekrar tekrar yapan bir while döngüsü düşün.... bu arada entera basınca nasıl çıkmasını sağlıyorsak ; getkword gibi bi giriş yapmaya gerek kalmadan önceden tarfilediğimiz bir harfe basıldığında da başka bir fonksiyon işlemeli....

10.08.2008 11:40    

leonine25
teşekkürler...birde lip kitabını elde edersek fena olmayacak.sitede flash player olarak var ama.tasımak istiyorum

15.08.2008 07:42    

ehya
wolf okumuşsun bi yerlerden bişi aynen gelip burda yazıyorsun :)
daha detaylı yazsan şunu daha güzel olmas mı?

15.08.2008 08:04    

ehya
wolf bilip bilmemekle alakası yok.
senin dediğini anlamadım.. daha detaylı söylermisin?

15.08.2008 08:24    

ehya
iyi de wolf,
selectable değeri sadece görsel olarak sunulan bir değişken. yani bir grup yaptığında bu selectable kapalı ise nesneleri grup olarak seçemessin diye birşey yok.
group alt komutu ile grup adını yazdıktan sonra yine seçim yapacaktır.

15.08.2008 08:51    

ehya
wolf ya sende ya da autocad'inde sorun var :P

iki seçenekte de denedim. ve iki seçenekte de seçimi yaptı..
sanırım group adını yanlış giriyorsun.

15.08.2008 09:02    

ehya
yazıkk :)
boşuna uğraşmışsınn desene :)
bende iki saattir diyorum bu neyin kodu ile uğraşıyor :D

15.08.2008 11:44    

ehya
anladım senin ne yapmak istediğini.
müsait bi zaman kodlamasına bakarım.

16.08.2008 08:24    

ehya
Şimdi de ben soru sorayım.. Cevaplayın bakalım :)

Mevcut dosya için LAS FILE dosyası nasıl hazırlanır? :)

16.08.2008 09:18    

Harbi65
Oldu mu acaba? :)

(defun c:lsf ()
(setq lf (getstring "\n Las Files ismini girin:"))
(command "-layer" "a" "s" lf "" "ex" lf "" "" "")
(princ)
)

16.08.2008 09:28    

ehya
olmadı harbi olmadı..
artık belli şeyleri aş yaa.. :)
ben senden kod istiyorum. autocad komutlarını değil...

ehya (16.08.2008 09:37 GMT)

16.08.2008 09:58    

Harbi65
haklısın wolf....
senin cevap vermen gereken yere yazmışım....:D

ama nerden bileyim.... senin bilemediğini düşünmüştüm:D

18.08.2008 14:06    

ehya
wolf..

geçen sormuştun ama anca cevap verebiliyorum..
örnek olarak verdiğin kodları kısaltma yaptım..
Grup adını öğrenme ve selectable durumu hakkında bilgi kodlarını aşağıda belirtiyorum. Artık gerisini sen hallet. Ben karışmıyorum :)


Kod:

(setq ename (car (entsel)))
;; selectable durumu
(setq durum (cdr (assoc 71 (entget (cdr (assoc 330 (entget ename)))))))

;; grup adı öğrenme
(setq grup_adi (cdr (assoc 3 (entget (cdr (assoc 330 (entget (cdr (assoc 330 (entget ename))))))))))

18.08.2008 14:17    

Harbi65
Lisp de handent komutu ne işe yarar?

> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [43] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.123 saniye - Sorgu: 100 - Ortalama: 0.01123 saniye