11.02.2012 16:19    

Travaci
Alıntı
ehya :
Düzenledim. Tekrar alabilirsin.



Maalesef daha kötü oldu : )

11.02.2012 19:35    

ProhibiT
Lisp saçmalamaz. Önce yapılmak istenen işlem net olarak tanımlanıp, net bir algoritma'dan yola çıkmalı. Gereksiz detaylarla kod uzatılmamalı. Aksi halde kendi oluşturduğunuz labirent'te kaybolursunuz. Ne demiş atalarımız; "Don't create the problem, when trying to solve them"
Kod:

(defun c:ZiZa (/ uN a0 Ln aN p1 p2 p3 p4 p5 p6)
  (setvar "cmdecho" 0) (command "_.undo" "group")
  (setq uN (* (getvar "dimscale") (getvar "dimtxt"))
        a0 (/ (* 60 pi) 180)
        Ln (entget (ssname (ssget ":s" (list (cons 0 "Line"))) 0))
        aN (angle (setq p1 (cdr (assoc 10 Ln)))
                  (setq p6 (cdr (assoc 11 Ln))))
        p1 (polar p1 (+ aN pi) (* 2 uN))
        p6 (polar p6 aN (* 2 uN))
        p2 (polar (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p6) (+ aN pi) uN)
        p3 (polar p2 (- aN a0) uN)
        p4 (polar p3 (+ aN a0) (* 2 uN))
        p5 (polar p4 (- aN a0) uN))
  (entdel (cdr (assoc -1 Ln)))
  (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0)
                 '(100 . "AcDbPolyline") '(90 . 6) '(70 . 0) '(43 . 0.0)
                 '(38 . 0.0) '(39 . 0.0) (cons 10 p1) (cons 10 p2)
                 (cons 10 p3) (cons 10 p4) (cons 10 p5) (cons 10 p6)))
  (command "_.undo" "e") (princ)
)

11.02.2012 21:20    

Travaci
Teşşekkürler abi eline sağlık ama benimkinden biraz farklı olmuş, line çizdikten sonra tekrar seçim yapmam gerekiyor, benim yapmaya çalıştığımda ise sadece ıkı nokta belirliyorsun tıpkı brekline gibi.

12.02.2012 07:26    

ProhibiT
o daha kolay;
Kod:

(defun c:ZiZa (/ uN a0 aN p1 p2 p3 p4 p5 p6)
  (setvar "cmdecho" 0) (command "_.undo" "group")
  (setq uN (* (getvar "dimscale") (getvar "dimtxt"))
        a0 (/ (* 60 pi) 180)
        aN (angle (setq p1 (getpoint "\n   ilk nokta: "))
                  (setq p6 (getpoint p1 "\nikinci nokta: ")))
        p1 (polar p1 (+ aN pi) (* 2 uN))
        p6 (polar p6 aN (* 2 uN))
        p2 (polar (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p6) (+ aN pi) uN)
        p3 (polar p2 (- aN a0) uN)
        p4 (polar p3 (+ aN a0) (* 2 uN))
        p5 (polar p4 (- aN a0) uN))
  (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0)
                 '(100 . "AcDbPolyline") '(90 . 6) '(70 . 0) '(43 . 0.0)
                 '(38 . 0.0) '(39 . 0.0) (cons 10 p1) (cons 10 p2)
                 (cons 10 p3) (cons 10 p4) (cons 10 p5) (cons 10 p6)))
  (command "_.undo" "e") (princ)
)

12.02.2012 09:02    

Travaci
Eline koluna sağlık abi teşekkürler = )

13.02.2012 19:17    

mayyaq61
20 sayısının Cosinus alip 150 çarparak tl_d değişkenine sonucu saklamak istiyorum.

13.02.2012 20:11    

ehya
Alıntı
mayyaq61 :
20 sayısının Cosinus alip 150 çarparak tl_d değişkenine sonucu saklamak istiyorum.




Kod:

(setq tl_d (* 150.0 (cos 20)))

13.02.2012 20:46    

mayyaq61
(defun c:a()

(setq mkr (getpoint "\nBir Nokta Girin.")
m (getreal "\nModül Girin.")
z (getreal "\nDiş Sayısını Girin.")
d (* m z)
da (+ d (* m 2))
df (- d (* m 2.332))
tl_d (* d (cos 20)))

(princ tl_d))


Modül Girin.3
Diş Sayısını Girin.40
48.969848.9698

Olmadı malesef.Sonuç=112.7631145 vermesi gerekti.

13.02.2012 21:12    

ehya
20'nin açı olduğunu söyleseydin daha net cevap verirdim. Lisp yazarken derece kullanılmaz. Bunun radyan cinsinden değeri gerekir.

Kod:

(defun c:a()
(setq mkr (getpoint "\nBir Nokta Girin.")
m (getreal "\nModül Girin.")
z (getreal "\nDiş Sayısını Girin.")
d (* m z)
da (+ d (* m 2))
df (- d (* m 2.332))
tl_d (* d (cos (angtof "20.0"))))
(princ tl_d))

14.02.2012 18:56    

mayyaq61
line ile tanget nasıl kullanırım.

(command "._line" t1 (setvar "osmode" 256)ln20"") olmadı :S
(command" "._line" t1 "_tan to" ln20"") olmadı :S


(setvar "osmode" 256)
(command "._line" t1 ln20) Olmadı No tangent possible

mayyaq61 (14.02.2012 19:02 GMT)

15.02.2012 07:44    

ehya
nokta gösterimi yaparken o noktanın tangent mi olmasını istiyorsun?

15.02.2012 20:32    

mayyaq61
Ehya hocam teğet hallettim.

Divide komutunu kullanırken;

(command "._divide" sc_d 5) Yazdığımda oluyor.

Yanlız benim bölmek istediğim sayı; dv değişkeninde saklı.

(command "._divide" sc_d dv) Yazdığımda olmuyor malesef.

15.02.2012 21:44    

ProhibiT
(command "._divide" sc_d dv) çalıştırmadan önce, AutoCAD komut satırından, (type dv) girin...
STR veya REAL cevabı alıyorsanız hata bundan kaynaklanıyordur. dv'nin türü INT olması gerekir.
dv değişkenine değer atadığınız yeri kontrol edip değerinin integer olmasını sağlayın.

20.02.2012 10:54    

mayyaq61
Hocam çok sağolun.

Real olan değikeni integar dönüştürülebilir mi.


Mesala 2 Türlü civata lisp var.1.standart 2. normal Buları bi dosyada birleştirdim.

Tam olarak yapmak istediğim ise. Civ yazdiğim zaman 2 seçenek açılsın Standart civ mı normal civ mi diye standart seçtiğimde standart civ kodları çalışsın.Normal seçtiğimde ise normal civ kodları çalışsın olabilir mi acaba?


(setq hsp(* z 2.0)
hsp1(/ 360.0 hsp)
hsp2(- 90.0 hsp1)
deneme(polar mkr (angtof "hsp2")5))
(command ".line" deneme mkr"")
Nerde hata var acaba?. hsp2 değeri derece olarak girdim :S

mayyaq61 (21.02.2012 16:27 GMT)

21.02.2012 20:22    

Travaci
Aşağıdaki programlar küçük harfle yazılmış text leri büyük, büyükle yazılmış olanları küçük yapıyor. Fakat türkçe karakterlerde sorun veriyor "İ" leri "I" yapması gibi acaba düzeltmenin bir yolu varmı ?


Kod:

(defun C:kck ( / b hgyuk n l bb hgyuk1 e )
     (TERPRI)
(PRINC "Değiştirilecek Yazıları Seçin.:")
(setq B (SSGET '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (0 . "INSERT") (0 . "ATTDEF") (-4 . "OR>"))))
  (if (/= B "")
       (progn
        (setq N (SSLENGTH B) L 0)
          (WHILE (< L N)
            (setq BB (ENTGET (SSNAME B L)))
             (IF  (= "TEXT" (CDR (ASSOC 0 BB)))
                    (PROGN  (setq HGYUK1 (ASSOC 1 BB))
                            (SETQ HGYUK (STRCASE (CDR HGYUK1) T))
                            (setq BB (SUBST (CONS 1 HGYUK) HGYUK1 BB))
                            (ENTMOD BB)))(setq L (+ L 1)))
       )
  )
)
;;;;;;;;;;;;;;;;;;;;;;;
(defun C:byk ( / b hgyuk n l bb hgyuk1 e )
     (TERPRI)
(PRINC "Degistirilecek Yazilari Seciniz: ")
(setq B (SSGET '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (0 . "INSERT") (0 . "ATTDEF") (-4 . "OR>"))))
  (if (/= B "")
       (progn
        (setq N (SSLENGTH B) L 0)
          (WHILE (< L N)
            (setq BB (ENTGET (SSNAME B L)))
             (IF  (= "TEXT" (CDR (ASSOC 0 BB)))
                    (PROGN  (setq HGYUK1 (ASSOC 1 BB))
                            (SETQ HGYUK (STRCASE (CDR HGYUK1)))
                            (setq BB (SUBST (CONS 1 HGYUK) HGYUK1 BB))
                            (ENTMOD BB)))(setq L (+ L 1)))
       )
  )
)

ehya (22.02.2012 06:32 GMT)

22.02.2012 06:56    

ehya
Türkçe karakter sorunu yüzünden bu yazıları tersine çevirirken tümünü ele almak yerine harf harf yapmalısın.
Türkçe karakterlere gelince bunları uygun olan harf ile değiştirmelisin. Türkçeyi öyle ters çevirmek için strcase komutu tek bir defada işe yaramaz :)

22.02.2012 11:36    

Travaci
n1 den n2 ye çizdirdiğim klavuz çizgisini escape diyip komutu yarım bıraktığımda nasıl sildirebilirim ?

(setq n1 (getpoint "\n Specify first point."))
(setq n2 (getpoint n1 "\n Specify second point."))

22.02.2012 12:02    

ehya
komutu niye yarım bırakıyorsun? iptal durumları için bir özellik ise prohibit hocamın yazdığı birçok lispte bu konu ile ilgili örnekler mevcut.

22.02.2012 13:09    

Travaci
Yarım bırakmamın sebebi komuttu kullanmaktan vezgeçmem

22.02.2012 13:13    

arif35
lisp konusunda birde benim sorduğum soruyu cevap verecek arkadaş varmı? basit herhangi bir lisp ve bunun nasıl kullanıldığı hakkında bilgi istiyorum. hiç kullanmadım şimdiye kadar.

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] > 18 < [20] [25] [30] [35] [40] [42] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.947 saniye - Sorgu: 98 - Ortalama: 0.01987 saniye