29.12.2013 08:21    

CAN123
Travacı arkadaşım,

çok teşekkürler,

ellerinize saglık

31.12.2013 07:28    

selcukkpr
Arkadaşlar merhaba;
Sizden bir ricam olacaktı. Seçtiğim dairelerin merkezine, nokta (point) atan bir lisp var mıdır? İlginize teşekkür ederim.

31.12.2013 08:09    

Travaci
selcukkpr




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

31.12.2013 08:14    

selcukkpr
Çok teşekkür ederim Travacı bey;

31.12.2013 08:29    

selcukkpr
Arkadaşlar bende bir lisp var ancak çalışmıyor. kotd diye bir lisp. Projede ki bütün kotları aynı anda düzeltmeye yarıyor. Hepsini girdiğim bir değer kadar arttırıyor veya azaltıyor ancak çalıştıramadım. Böyle bir lisp bileniniz var mı?
İlginize Teşekkür Ederim!...

22.01.2014 18:35    

shootrose
Herkese selamlar ve kolay gelsin.

Sprinkler tesisatında çaplandırma yaparken çap textini attribute blok olarak ;
adet, çap (üstte adet altta çap ) olarak yazmak ve siprinkler adetine (gene üstte adet altta çap ) göre peş peşe toplayıp yaza bilen lispi varmı

22.01.2014 21:50    

Travaci
Alıntı
shootrose :
Herkese selamlar ve kolay gelsin.

Sprinkler tesisatında çaplandırma yaparken çap textini attribute blok olarak ;
adet, çap (üstte adet altta çap ) olarak yazmak ve siprinkler adetine (gene üstte adet altta çap ) göre peş peşe toplayıp yaza bilen lispi varmı


Varsada sitede yok.

13.03.2014 20:57    

ProhibiT


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

linkinde daha önce paylaştığımız bir AutoLISP fonksiyon CAN123 arkadaşımızın isteği üzerine düzenlenip yeniden yazıldı. Algoritma ve kodlama mantığı bakımından yazar arkadaşlarımız için güzel bir örnek olduğu düşünülerek herkese açık paylaşmak uygun geldi. :)
Kod:

;|***************************************************************************|
| PDL: Profile Dimesions Label                                              |
| Görünüş çizgileri seçilen Köşebentin boyut etiketi Text objesine işlenir. |
|            M. Şahin Güvercin www.cizimokulu.com 15.03.2014                |
|---------------------------------------------------------------------------|;
(defun c:PDL (/ ds0 ds1 ds2 ds3 DsT Lns m myerr n olderr PnT RmN)
  (setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com)
  (defun myerr (errmsg) (if (/= errmsg "Function cancelled")
      (prompt errmsg)) (command "._undo" "_e") (command "._U")
    (setq *error* olderr) (princ))
  (setq olderr *error* *error* myerr) (*push-error-using-command*)
  (if (/= (sslength (setq Lns (ssget (list (cons 0 "Line"))))) 3)
    (progn (prompt "\n**** 3 Çizgi seçilmeli! **** - ") (exit))) (setq n -1)
  (while (< (setq m -1 n (1+ n)) 3)
    (setq PnT (cdr (assoc 10 (entget (ssname Lns n)))))
    (while (< (setq m (1+ m)) 3)
      (setq Ds0 (distance PnT (vlax-curve-getClosestPointTo
                               (vlax-ename->vla-object (ssname Lns m)) PnT T)))
      (if DsT (setq Dst (append Dst (list Ds0))) (setq DsT (list Ds0)))))
  (setq DsT (vl-sort DsT '>) ds1 (rtos(nth 0 DsT) 2) ds2 (rtos(nth 4 DsT) 2)
        ds3 (nth 0 (vl-sort (mapcar '(lambda (e1) (vlax-get-property
              (vlax-ename->vla-object (ssname Lns e1)) 'Length)) '(0 1 2)) '>))
        ds3 (rtos (if (< (rem ds3 0.5) 0.2525) (- ds3 (rem ds3 0.5))
                    (+ ds3 (- 0.50 (rem ds3 0.5)))) 2))
  (vlax-put-property (vlax-ename->vla-object (car (entsel "\nText Objesi: ")))
    'TextString (strcat "L" ds1 "x" ds1 "x" ds2 "..." ds3))
  (command "_.undo" "e") (setq *error* olderr) (*pop-error-mode*) (princ))

ProhibiT (15.03.2014 13:54 GMT)

14.03.2014 08:03    

ehya
prohibit




Hocam, kodlarda yeni iki komut görüyorum. Bunların görevi nedir?

*push-error-using-command*
*pop-error-mode*

14.03.2014 09:00    

CAN123
ProhibiT hocam çok teşekkür ederim.

Ellerinize sağlık.

14.03.2014 22:49    

ProhibiT
PDL fonksiyonu güncellendi.

Alıntı
ehya :
prohibit



Hocam, kodlarda yeni iki komut görüyorum. Bunların görevi nedir?

*push-error-using-command*
*pop-error-mode*



Mehmet hocam kusuruma bakmayın soruyu geç gördüm :)

Lisp yazanların en sık yanlışa düştükleri konu. Genelde Hata Yakalama (error trap) fonksiyonları yazılırken farkında olmadan hata yapılıyor. Özellikle Hata Yakalama fonksiyonu içinde (command ... işlevi kullanıldığında push... ve pop... kullanılmadığında, hatanın AutoCAD içinde mi oluştuğu, Lisp içinde mi oluştuğu belirsiz olduğundan buradaki (command... bölümü çalıştırılamıyor.

error trap fonksiyonları en ciddi kaynaklarda bile yanlış kullanılıyor. Daha önce Travacı arkadaşımızla bu konuda detaylı yazışmıştık. Forumda mı yazmıştık, özel mesajlarda mı? Hatırlamıyorum. Genelde üstünkörü yazılan error trap fonksiyonları, hataları yakalamak bir yana kendileri hata kaynağı oluyorlar. Sistemin *error* işlevini değiştirdiğimizde bir AutoLISP fonksiyonda yapılan yanlış bütün diğer Lisp'lerin yanlış çalışmasına sebep oluyor.

Sağlıklı bir hata yakalama fonksiyonu yazmak için *push-error-using-command*, *push-error-using-stack* ve *pop-error-mode* işlevleri uygun yerde kullanılmalıdır. Ben hata yakalama işlevini ana fonksiyonun içinde tanımlamayı tercih ediyorum. Hata yakalama fonksiyon adını da Local Variables listesinde yazınca, yazılan fonksiyon çalıştırıldığında yükleniyor ve etkinleşiyor, başka fonksiyonlara bulaşmıyor. Hata yakalama bölümünde (command ... kullandığımda da push... kullanarak o anki hata durumunu (error state) belirliyorum. işlemlerin sonunda da pop... kullanarak girişteki hata konumuna geri dönüyorum.

Aslında bir kestirme çözüm yöntemi de, hata yakalama işlevi içinde (command ... yerine (command-s ... kullanmak olabilir.



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

linkinde bu konudan bahsetmişiz :)

ProhibiT (14.03.2014 22:57 GMT)

15.03.2014 18:22    

given
Merhabalar,

Elimdeki cizimde planlar X yonunde 97000 mm. saga kaydi. Modele dokunmadan bu cizime ait 330 adet layoutun icine girip tek tek sag tarafa 97000 mm. kaydirmam gerekiyor. Acaba bu islem icin bir lisp ya da komut var midir ? Buna cok ihtiyacim var. Ilginiz ve yardimlariniz icin simdiden tesekkur ederim.

Saygilarimla,

16.03.2014 19:10    

mikemoon


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



Çok süper olmuş donut şeklini daireye çeviriyor fakat bir plakanın üzerinde 6 delik var seçim işlemini 6 kere yapmak zorunda kalıyorum yani delik kaç tane ise okadar yapmak zorunda kalıyorum.
6 tane deliği seçip bu işlemi uyguladığım zaman 6 deliğide daireye çevirecek şekilde lispi düzenleyebilirmisiniz.

ProhibiT (16.03.2014 21:30 GMT)

16.03.2014 21:39    

ProhibiT
Forumdaki bir kodu alıntı yaparak aynen kopyalamayınız. Bu şekilde arama yapan arkadaşların işini zorlaştırırsınız.
Bu konuyla ilgili zaten yeni bir başlık açmıştınız. Hem Burada yazdınız, hem de başka bir başlık açmayınız. Çember ve Daire farklı geometrik şekillerdir. Neden tekli seçim yaptığımızı ilgili linkte ve öncesinde açıklamıştık. Sorunuzun cevabını ilk açtığınız başlıktan takip ediniz.

ProhibiT (16.03.2014 22:17 GMT)

17.03.2014 21:14    

k005
Merhaba arkadaşlar;

Block bir objeyi; yerleştirildiği noktadan itibaren; belirli bir oranda (1.15825 gibi mesela..) küçültebilen ve büyütebilen bir lisp kodlaması nasıl olmalıdır..

yardımcı arkadaş(a)lara şimdiden teşekkürler..

18.03.2014 01:10    

Travaci
k005


Kod:

(defun c:scb (/ ss j sc)
  (setq ss (ssget '((0 . "insert"))) j -1
        sc (getdist "\nScale factor: "))
  (setvar "cmdecho" 0) (command "_.undo" "be")
  (repeat (sslength ss) (setq j (1+ j))
     (command "_.scale" (ssname ss j) ""
        (cdr (assoc 10 (entget (ssname ss j)))) sc))
  (command "_.undo" "e") (setvar "cmdecho" 1) (prin1)
)

18.03.2014 06:13    

k005
Travaci

hocam teşekkürler.. ama tam olarak bu değil.. bunu zaten default scale komutu ile yapıyoruz.

Bu linkteki en son Lisp mantığında; yapmak istiyorum..



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

18.03.2014 07:08    

Travaci
k005


Scale komutuyla nasıl yapıosun merak ettim doğrusu :)

18.03.2014 07:14    

k005
Rutin scale komutu kullanımı ile.. uur8) 0.999 küçültmeye başlangıç oranıdır.. 1.11111 küsür de Büyütmeye başlangıç oranıdır..

18.03.2014 07:28    

Travaci
Toplu seçimler için her block u insert noktasından scale etmeyi kastemiştim ama ... :wink
Görüyorumki senin isteğinde rutin scale komutu kullanımı ile yapılıyormuş :D

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] > 53 < [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.414 saniye - Sorgu: 100 - Ortalama: 0.01414 saniye