09.11.2017 21:11    

admin
Forumumuzda yükselen çıta nedeniyle acemi kullanıcıların soru sormaya çekindiğini fark ettik ve sizlere daha iyi destek verebilmek için acemi kullanıcı bölümlerini açtık.

İşte bunlardan biri:
AutoLISP kodlamaya yeni başlayanların kolay ya da zor her türlü soruyu çekinmeden sorabilecekleri forum bölümüdür.

Lütfen sorularınızı çekinmeden yazın! Size cevap vermek bizim için bir keyif.

23.06.2018 08:16    

turgaygirgin
acemi forum kullanıcılarına yol gösterecek bi bölüm de olsa keşke. :)

24.06.2018 05:21    

Travaci
Turgay sorunu bir çok kez okumamama rağmen birşey anlamadım : ) Madem (assoc 10-11) leri listeliyorsun neden remove a gerek duyuyorsun ?Birinci nesnenin sonu ile ikinci nesnenin başı aynı deği mi ! Yazmaya çalıştığın fonksiyonu paylaşırsan daha iyi anlaşılır. Autolisp ve visual lisp beraber kullanılabilir, bundan dolayı bir hata almazsın.

25.06.2018 05:49    

Travaci
...
(setq ls nil)
(setq ss (ssget (list (cons 0 "Line"))))
...
(repeat (setq n (sslength ss))
(setq ls (append (list (cdr (assoc 10 (entget (ssname ss (setq n (1- n))))))) ls))
)
...
Şeklinde 10 ve 11 noktalarını listeye aldıktan sonra aşağıdaki gibi listedeki benzer elemanları listeden çıkararak ilk ve son hali arasındaki farka bakarak tekrar iki listenin elemanlarını yukarıdaki gibi birleştiriceksin.

(defun itemcount (lst /)
(if lst (cons (- (length lst) (length (setq lst (vl-remove (car lst) lst)))) (itemcount lst)))
)

25.06.2018 10:09    

turgaygirgin
Parantez kapanışlarından sonra açıklama yazacağım artık. Karışmasın diye

12.07.2018 11:57    

ehya
turgaygirgin




bu şekilde yarım kodu test etmek zor.

Mevcut listeniz (a b c d e f) şeklinde midiri?

13.07.2018 08:55    

ehya
Mevcut listen (setq l '((a b) (e d) (c b) (d c))) ise bunu '((a b) (b c ) (c d) (d e)) yaparken bir kuralı olmalı.
Aslında sizin ilk listenizi a b c d e şeklinde düzenleyip bunu sıraladıktan sonra istediğiniz listeyi rahatça kurgulayabiliriz.

Söylediklerim konusunda hem fikir iseniz bununla ilgili basitçe bir örnek fonksiyon hazırlarım

14.07.2018 13:05    

ehya
Örnek kod aşağıdadır. Belirtilen listeyi istediğiniz gibi sıralar..

Kod:

(setq l '((a b) (e d) (c b) (d c)))

(mapcar '(lambda (x)
             (if (> (vl-symbol-name (car x)) (vl-symbol-name (cadr x)))
                 (reverse x)
                 x
             )
         )
        (vl-sort
            (vl-sort l
                     '(lambda (x1 x2)
                          (< (vl-symbol-name (car x1)) (vl-symbol-name (car x2)))
                      )
            )
            '(lambda (x1 x2)
                 (< (vl-symbol-name (cadr x1)) (vl-symbol-name (cadr x2)))
             )
        )
)

25.07.2018 15:44    

turgaygirgin
merhaba,

bir lisp programını çalıştırdığımda , objeye yaklaşarak seçim yaptığımda lisp düzgün çalışıyor.Ancak ekrandan uzaklaşınca lisp düzgün çalışmıyor.bununla ilgili bi ayar var mı?

teşekkür ederim.

25.07.2018 22:33    

alumina
Alıntı
turgaygirgin :

Buyuk ihtimalle "osmode" un kapatilmamis olmasidir. Kodu paylasirsan kesin nedenini soyleriz.

26.07.2018 08:35    

turgaygirgin
Evet haklıymışsınız Alumina Hocam Saolun. Forum yazışmaları ile de ilgili birşey sormak istiyorum.cehaletimi bağışlayın lütfen.
siz cevap verirken:

Alıntı
---------------------------------------------------------------------------------------------------------------------------------
turgaygirgin :
---------------------------------------------------------------------------------------------------------------------------------

bunu nasıl yapıyorsunuz?

26.07.2018 10:57    

alumina
Alıntı
turgaygirgin :

Benim cevap verdigim iletinin uzerindeki "alinti" dan yapilir. Bunu yaparken ileti, yazacagin cevabin uzerine gelir. Forumdaki kirliligi onlemek adina o iletiyi silip kendi iletini yazabilirsin.
Not: Bu sadece pc den giriste yapilabilir. Mobil den giriste olmuyor. (diye biliyorum)

26.07.2018 20:25    

turgaygirgin
Alıntı
alumina :
Anladım hocam saolun.

31.07.2018 19:13    

badcluster
Haritacıyım. Civil 3D üzerinde yoğunlaşmak istiyorum. LISP kodları üzerinde deneme-yanılma yoluyla bir şeyler yapmaya çalışıyorum. Basic programlama bilgim az çok var ama LISP mantığını tam çözebilmiş değilim. Mesele şu: Biz sahadan ölçüm aletleriyle yüzlerce noktalın alımını yapıyoruz ve bir text dosyası olarak onları netcad ya da civil 3d üzerine atabiliyoruz. Şu tür bir text dosyası:

nokta1 78.019 389.831 101.250
nokta2 78.784 389.797 101.355
nokta3 79.670 389.396 102.923
nokta4 78.204 389.219 103.541
nokta5 78.770 388.630 100.950

Bu nokta dosyasını nokta adı, y,x,z koordinatları olarak Cogo Points olarak Civil 3D'ye atıyorum.. Bunun tersini bir lisp ile yaptırmak istiyorum. Yani çizimdeki benim seçtiğim Cogo Point'leri yukarıdaki format ile dışarı aktarsın.. İnternet üzerinde aktarım yapan epey lisp var ama ben NOKTA ADI (NAME) ile aktarısn istiyorum numara ile değil.. Lakin bu "name" değerinin hangi değişkende saklandığını ve onu nasıl çağıracağımı bir türlü bulamadım. entity name var o başka bir şey.. ASSOC fonksiyonuyla ilgili bir şey ama bu NAME hangi numaralı code'da saklanıyor ve onu nasıl çağırırız?

(cogo point properties'e baktığımda name, atributes kısmında görünüyor..)

01.08.2018 07:33    

ehya
Cogopoints nedir bilmem ama autocad içerisindeki point nesnelerinin koordinatlarını verdiğiniz isme göre txt dosyasına kaydeden bir uygulama paylaşıyorum.

Komut ismi NPT

Kod:

(defun c:NPT ()
(if (setq ss (ssget (list (cons 0 "POINT"))))
    (progn
        (if (setq ad (getstring "\nNokta adını yazın:"))
            (progn
                (if (setq dkyt (getfiled "Dosyayı kaydedin" (getvar "dwgprefix") "txt" 1))
                    (progn
                        (setq c 0 say (sslength ss))
                        (setq opp (open dkyt "w"))
(while (< c say)
                            (setq tek (ssname ss c)
                                  sp (cdr (assoc 10 (entget tek)))
                                  op (write-line (strcat ad (itoa (+ c 1)) " " (rtos (car sp)) " " (rtos (cadr sp)) ) opp)
                                  c (1+ c)))
(close opp)
))))))
(princ))

02.08.2018 14:04    

badcluster
Çok teşekkür.. Verdiğiniz örnek kod, geliştirmeler yapmak için faydalı.. Noktaları sizin başlatacağınız bir isimlendirme ile sıralı olarak kaydediyor.. Ekte gönderdiğim çizimde hem cogo (Coordinate Geometry) points hem de normal autocad points nesneleri var.. Cogo Points'lerde properties'e baktığımızda Atributes>Name kısmında nokta adları da var.. Bu nokta adını Lisp kodu ile nasıl elde ederiz ve txt dosyasına yazarız? 392326-eskiz.dwg

02.08.2018 15:19    

ehya
badcluster




Bu nesne türü proxy olarak geçiyor. Nesne üzerinde hiçbir işlem yapılamıyor. (explode hariç)
Civil3d programında iken nesne türünü incelemek gerek.

07.08.2018 13:25    

turgaygirgin
Slm,

Slide dosyalarının DCL içinde görünmemesinin nedenleri nelerdir ?

dcl dosyam

C:\Test\valv.dcl konumunda.

lisp içinde
(setq DCL_id (load_dialog "C:\\Test\\valv.dcl")) olarak yolunu gösteriyorum.

sld dosyaları ve blokları da

C:\Test\valv\ konumunda

lisp içinde

(setq folder$ "C:\\Test\\valv\") olarakta blok ve sld dosyalarının yolunu gösteriyorum.

işlevlerim dogru çalışıyor. dcl açılıyor. isim ve resim üzerinden seçim yapabiliyorum.ama dcl içinde blok önizlemelerini ( sld ) göremiyorum.

Teşekkür ederim
Saygılar.

07.08.2018 14:28    

Travaci
fill_image ve slide_image kodlarının doğruluğundan eminmisin ?

09.08.2018 08:50    

turgaygirgin
Alıntı
Travaci :




Hocam nasıl oldu bilmiyorum.İnternette bulduğum bi lisp i denedim.slide lar görünüyor. Karşılaştırıp mantığını anlamaya çalışıyorum.
teşekkür ederim.

> 1 < [2] [3] [4] [5] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.956 saniye - Sorgu: 101 - Ortalama: 0.01937 saniye