28.11.2012 08:21    

ufuk19
Öncelikle selamlar. Sizden ricam, şöyle bir lisp, çıkarılacak rakamı bana önceden sorsun mesela elimizde 168.64 rakamı olsun bundan 27 çıkarsın bunun gibi çıkan sonucuda uygun yere yazsın. Umarım anlatabilmişimdir. Şimdiden teşekkürler.

28.11.2012 08:27    

k005
Alıntı
ufuk19 :



Merhaba..

27 sabit mi ?

k005 (28.11.2012 08:38 GMT)

28.11.2012 08:48    

ufuk19
Hayır buradaki 27 rakamı sabit değil yukarıda verilenler meseleyi anlatmam açısından sadece birer örnek

28.11.2012 08:58    

k005
Kod:

;Çıkarma işlemi    E.KALAY   28.11.2012
(defun c:ck()
(setq bnd (getreal "\nRakamı giriniz             : "))
(setq sbt (getreal "\nÇıkarılacak rakamı giriniz : "))
(setq snc (- bnd sbt))
(princ "\n-->  ")
(princ snc)
(setq p1 (getpoint "\nYazılacak yeri belirtiniz ?"))
(command "text" "c" p1 "" 0 (strcat "" (rtos snc 2 2)""))
(princ)
)

28.11.2012 09:27    

ufuk19
k005 ilgine teşekkürler bu lisp te işimizi görür lakin bir adım daha ilerleyip şöyle yapabilirmiyiz. command: ck lispi yazılıp çıkarılacak rakamı önceden girmek daha sonra rakam objeleri seçilerek komuttan çıkmadan seri şekilde yazacak. yukarıdaki örnekteki gibi 27 rakamını girip önceden yazılmış rakamları komuttan çıkmadan seçip uygun yere 90 derece yazmak umarım anlatabilmişimdir

28.11.2012 09:48    

k005
Alıntı
ufuk19 :

Bu kodu bir denermisin..

Kod:

;Çıkarma işlemi    E.KALAY   28.11.2012
(defun c:ck()
(while
(setq sbt (getreal "\nÇıkarılacak rakamı giriniz : "))
(setq bnd (atof(cdr(assoc 1(entget(car(entsel "\nRakamı seçiniz")))))))
(princ "\n")
(setq snc (- bnd sbt))
(princ "\n-->  ")
(princ snc)
(setq p1 (getpoint "\nYazılacak yeri belirtiniz ?"))
(command "text" "c" p1 "" 90 (strcat "" (rtos snc 2 2)""))
(princ)
)
)

28.11.2012 10:10    

ufuk19
k005 ilgine tekrar tekrar teşekkür ederim. Çok güzel olmuş sizden çok olmazsam bi ricam daha var çıkarılacak rakamı baştan bir kere gireyim her seferinde girmeyeyim.

28.11.2012 10:19    

k005
Alıntı
ufuk19 :
şimdi öncelikle şunu söyleyeyim. bir lisp sorusu sormadan önce tam olarak ne istendiği açıkca belirtilmelidir.. bu örnek basit daha karmaşık durumlarda tekrar tekrar kod yazmak gerekir. önceki çalışmlar boşuna gibi bir durum oluşur... son olarak sorduğunuz; eklemeye gelince onu ben tam bilmiyorum.. ama yapılabilir..

28.11.2012 11:39    

ufuk19
İş yerindeki arkadaşlar ve ben yardımlarınız için teşekkür ederiz.

28.11.2012 12:30    

k005
Alıntı
ufuk19 :
İş yerindeki arkadaşlar ve ben yardımlarınız için teşekkür ederiz.



bu şekilde hazırladım.. buyrun..

Kod:

;Çıkarma işlemi    E.KALAY   28.11.2012
(defun c:ck()
(while
  (progn
(if (= sbt nil)(setq sbt 27))
(setq sbtx (getreal (strcat "\nÇıkarılacak rakamı giriniz <" (rtos sbt)"> : ")))
(if (= sbtx nil)(setq sbtx sbt))
(setq sbt sbtx)
(setq bnd (atof(cdr(assoc 1(entget(car(entsel "\nRakamı seçiniz")))))))
(princ "\n")
(setq snc (- bnd sbt))
(princ "\n-->  ")
(princ snc)
(setq p1 (getpoint "\nYazılacak yeri belirtiniz ?"))
(command "text" "c" p1 "" 90 (strcat "" (rtos snc 2 2)""))
(princ)
)
)
)

28.11.2012 13:46    

ProhibiT
Merhaba arkadaşlar,

k005 arkadaşımız yanlış anlamaz, yapıcı eleştiri olarak düşünürse; ufuk19 arkadaşımızın sorusunu ben, "fonksiyonu her çalıştırdığımda bir kere çıkarılacak rakam gireyim, rakamları seçmeye devam ettikçe aynı rakamı çıkarsın sonucu yazmaya devam etsin" şeklinde anlıyorum. Hal böyle olunca algoritma epeyce değişiyor.Sabit sayı while loop'un dışında seçilince, pek çok kontrol ve guruplamaya gerek kalmıyor.
Kod:

(defun c:ck  (/ sbt bnd)
  (setq sbt (getreal "\nÇıkarılacak rakam: " ))
  (while (and sbt (setq bnd (entsel "\nEksiltilecek rakam: ")))
    (setq bnd (atof (cdr (assoc 1 (entget (car bnd))))))
    (command "text" "c" (getpoint "\nSonucun yazılacağı yer: ")
             "" 90 (strcat "" (rtos (- bnd sbt) 2 2) "")) (princ)))
şeklinde çok daha basit ve sade bir fonksiyon yazılabilir.

Kolay gelsin.

28.11.2012 13:54    

mehmet_zaza
Değerli arkadaşlar hazırladığınız lisp çok güzel yalnız lispi çaliştridimizda yazı yüksekliğini sorarsa çok daha güzel olur bence....SAYGILAR....

28.11.2012 14:24    

k005
Alıntı
ProhibiT :

evet hocam çok daha sade bir çalışma olmuş.. bende nacizane girilen sayıyı da ekrana yansıtan; aynı ise enter ile devam eden bir rutin eklemiştim son kodda.. saygılar..

28.11.2012 15:34    

ProhibiT
Mantık güzel, sonuçta gayet güzel elde ediliyor, hiç itirazım yok. Ben soruyu soran arkadaşımızın isteğini farklı anladığım için öyle yorumladım. :) Eski sabit sayıyı unutmaması için;
Kod:

(defun c:ck  (/ sbt bnd)
  (if (= nil (setq sbt (getreal (strcat "\nÇıkarılacak rakam <"
                             (if sbtx (rtos sbtx) "") ">: " ))))
    (setq sbt sbtx) (setq sbtx sbt))
  (while (and sbt (setq bnd (entsel "\nEksiltilecek rakam: ")))
    (setq bnd (atof (cdr (assoc 1 (entget (car bnd))))))
    (command "text" "c" (getpoint "\nSonucun yazılacağı yer: ")
             "" 90 (strcat "" (rtos (- bnd sbt) 2 2) "")) (princ)))

Suyunu çıkardık ya :) if içinde if kullanımının pratik bir örneği :)

28.11.2012 15:40    

k005
Alıntı
ProhibiT :
:)

17.11.2020 15:55    

hakanyuksell
Selamın Aleykum

Örnek olarak yangın tesisatındaki sıfır kotuna göre olan kotları +1500 kotuna göre ayarlamam gerekiyor. Yani proje üzerindeki kotlardan -1500 çıkartmam gerekiyor. Böyle bir lisp var mı?

17.11.2020 19:17    

alumina
Alıntı
hakanyuksell :

Ornek cizim paylasir misiniz?

25.02.2021 08:51    

munurbabayigit
Merhabalar, küçük bi sorum olacaktı. içinde "+" yazan text objesinden çıkarma işlemi yapabilecek lisp lazım.
Örn: 19+206.666 - 58.959 = 19+147.707 şeklinde ve işlem yaptığı text objesini değiştirecek.

> 1 <
Copyright © 2004-2022 SQL: 1.397 saniye - Sorgu: 94 - Ortalama: 0.01486 saniye