25.02.2009 11:44    

yazgunesi
Formumuzda ssget kullanımı ile ilgili bir çok lispler, soru - cevap konuları mevcut..
Aşağıda bulunan 2 adet lisp ssget kullanarak kopyalama ve taşıma işlemi yapılmasına dair basit bir örnektir.


Kod:

; ssget ile objeyi seçip
; bir noktadan diğer noktaya
; taşıma yapma lispi


(defun c:mov1 ()  ; komut isimi mov1 diye tanımladık.
(prompt "Taşınacak objeleri seç !") ; kullanıcıya bilgi verelim ilk önce
(setq secim1 (ssget)) ; seçim seti oluşturduk , objeyi seçtirdik
(setq nok1 (getpoint "\n Objenin referans noktasını sec:")) ; seçilen obje için referans noktası tayini
(setq nok2 (getpoint "\n Obje nereye taşınacak ? TıKLa:"))  ; seçilen objenin taşınması gereken yer
(command "move" secim1 "" nok1 nok2 )   ; taşınma işleminin yapılması biryerden başka yere..
(princ)
)

(Princ "Lispi çalıştırmak için > mov1 < yazınız! ")


Burada nok1 diye görülen ifade kullanıcı tarafından tanımlanan değişkendir.Yani nok1 den kasıt ''nokta 1'' yada ''birinci nokta'' olarak düşünülüp ''nok1'' diye tanımlanmasıdır.. Bu tip ifadeler ilk bakışta anlamsız gelebilir.. Setq ' dan sonra gelen ilk ifade daima kullanıcı tarafından icad edilir.. Gördüğünüzde gözünüz korkmasın yani.. :D

Kod:

; ssget ile seçilen objeyi
; bir noktadan başka bir noktaya
; copyalama yapma lispi


(defun c:cpy1 ()
(prompt "Kopyalanacak objeleri seç !")          ; kullanıcıya bilgi verelim ilk önce
(setq secim1 (ssget))   ; seçim seti oluşturduk , objeyi seçtirdik
(setq nok1 (getpoint "\n Objenin referans noktasını sec:"))  ; seçilen obje için referans noktası tayini
(setq nok2 (getpoint "\n Nereye kopyalanacak? TıKLa:")) ; seçilen objenin kopyalanması gereken yer
(command "copy" secim1 "" nok1 nok2 ) ; kopyalama  işleminin yapılması biryerden başka yere..
(princ)
)
(Princ "Lispi çalıştırmak için > cpy1 < yazınız! ")

yazgunesi (25.02.2009 11:56 GMT)

25.02.2009 12:12    

seyma_0034
ssget lispte bi kodmudur yoksa autocadde bi komutmu?

25.02.2009 12:15    

fox
komut satırına parentez içinde ssget yaz anlayacaksın.
lispte nesne seçtirmek için kullanılan seçim setinin kodu.

25.02.2009 12:20    

yazgunesi
ssget autolisp komutlarından biridir.Autocad komutu değildir. Birçok autocad komutları autolisp programının içinde kullanabiliyoruz iş yaptırmak için.Yukarıdaki örneklerde copy ve move komutlarını lisp programı içinde kullandık.

Autolisp komutları hangileridir , yada merak ettiğiniz komutun görevinin ne olduğunu öğrenebilmek için aşağıdaki adımları takip edin.

İlk öncde F1 tuşuna bas Autocad acık iken... Aşağıdaki resimlere takip ederek bakınız..


[URL=http://img141.imageshack.us/my.php?image=hlp1.png][IMG]http://img141.imageshack.us/img141/9994/hlp1.th.png[/IMG][/URL]

[URL=http://img210.imageshack.us/my.php?image=hlp2.png][IMG]http://img210.imageshack.us/img210/9682/hlp2.th.png[/IMG][/URL]

[URL=http://img217.imageshack.us/my.php?image=hlp3.png][IMG]http://img217.imageshack.us/img217/4155/hlp3.th.png[/IMG][/URL]

Autocad yardım menüsünü (dökumanını) ara sıra bakınız birçok bilgi mevcuttur..

yazgunesi (25.02.2009 12:51 GMT)

25.02.2009 12:25    

seyma_0034
hmm ok teşekkür ederim cvplar için.....

25.02.2009 13:25    

yazgunesi
Şimdi 2 adet lisp yaptık ama bu iki lispi tek lisp olarak kullansak nasıl olur diye düşünelim ? :D Şimdi tüm kodları birleştirmeden yeni bir lisp yazalım.

Aşağıdaki görünen kodlar cpmov.lsp dosyasında yer alıyor.. Bir adet ana program lispi ve çalıştırılan diğer iki lispimiz.

Kod:

;**************************************************
; Ana program yazımı             
; iki adet lispi tek lisp programı
; olarak çalıştırma fikri..

(defun c:cpmov()  ; yeni komutumuzu tanımlayalım..
(c:mov1)  ; move yapan lispi çalıştıralım..
(c:cpy1)  ; copy yapan lispi çalıştıralım..
(princ)
)
; Yeni komutun uygulanması için açıklama yapalım..
(Princ "Lispi çalıştırmak için > cpmov < yazınız! ")

;  Ana program bitti..             
;                                   
; **************************************************


; ssget ile objeyi seçip
; bir noktadan diğer noktaya
; taşıma yapma lispi


(defun c:mov1 ()
(prompt "Taşınacak objeleri seç !")
(setq secim1 (ssget))
(setq nok1 (getpoint "\n Objenin referans noktasını sec:"))
(setq nok2 (getpoint "\n Obje nereye taşınacak ? TıKLa:"))
(command "move" secim1 "" nok1 nok2 )
(princ)
)

; Mevcut lisp için komut açıklama uyarısı iptal ettik.
; (Princ "Lispi çalıştırmak için > mov1 < yazınız! ")



; ssget ile seçilen objeyi
; bir noktadan başka bir noktaya
; copyalama yapma lispi


(defun c:cpy1 ()
(prompt "Kopyalanacak objeleri seç !")
(setq secim1 (ssget))
(setq nok1 (getpoint "\n Objenin referans noktasını sec:")) 
(setq nok2 (getpoint "\n Nereye kopyalanacak? TıKLa:"))
(command "copy" secim1 "" nok1 nok2 )
(princ)
)

; Mevcut lisp için komut açıklama uyarısı iptal ettik.
; (Princ "Lispi çalıştırmak için > cpy1 < yazınız! ")


Bu autolisp kodlarını nasıl kullanacağınızı bilmiyorsanız eğer aşağıdaki linkten;
AutoLISP > Konu Anlatımları > Lisp Dosyalarının oluşturulması ve Yüklenmesi
konusunu incelemenizi öneririm...

yazgunesi (26.03.2009 19:16 GMT)

> 1 <
Copyright © 2004-2022 SQL: 1.073 saniye - Sorgu: 56 - Ortalama: 0.01916 saniye