Üye Ol 
Ücretsiz Kullanıcı Adı Şifre Beni Hatırla Şifremi unuttum
Online
Eski Galeri  
> 1 <

İleti Yazar
25.10.2009 07:25 GMT
52771      




k005

[10] Üstad

Online Durumu

578 ileti
İnşaat Teknikeri
Düzce

Merhaba arkadaşlar;

Daire halkasının kesit alanı hesaplamak için bir Lisp yazdım.. oldu.. fakat buna şimdi bir de Polyline bir obje daha eklemek istiyorum.. onunda alanını ve çevrisini hesaplatmaya çalışıyorum.. seçim konusunda takıldım....

yardımcı olacak arkadaş(lar)a şimdiden teşekkürler. Herkese kolay gelsin.

Kod: (Seç)

;KESİT ALANI HESAPLAMA   E.KALAY 2009
(DEFUN C:ac()
(princ "\nObje Kesit Alanı Hesaplar..")
(setvar "cmdecho" 0)
(setq objt (getint "\nObJe TiPi (CiRcLe/PoLyLiNe) 1/2 ? : "))
(if (= objt  1)
(progn
(setq tc1 (entsel "\nBüyük daireyi seçiniz ?"))
(setq tc2 (entsel "\nKüçük daireyi seçiniz ?"))
(setq tc3 (entget (car tc1)))
(setq tc4 (entget (car tc2)))
(setq R (cdr (assoc 40 tc3)))
(setq ru (cdr (assoc 40 tc4)))
(setq aln  (-(* pi (sqr R))(* pi(sqr ru))))
(setq 2cev (+(* pi (+ R R))(* pi(+ ru ru))))
(princ"\nKesit   ALANI= ")
(princ (strcat  (rtos aln 2 2 ) """ brm²"))
(princ"\nÇevre  TOPLAM= ")
(princ (strcat  (rtos 2cev 2 2 ) """ brm"))
(princ)
)
;******************************************
(if (= objt  2)
(progn
(setq tc1 (entsel "\nBüyük Polyline seçiniz ?"))
(setq tc2 (entsel "\nKüçük Polyline seçiniz ?"))
(setq ply2 (command "area" "o" tc1))
(setq cvr2 (getvar "perimeter"))
(setq ply1 (command "area" "o" tc2))
(setq cvr1 (getvar "perimeter"))
(setq plyalan (- ply2 ply1))
(setq plycevre (+ cvr2 cvr1))---> bu kısımdaki işaret değişecek + olacak arkadaşlar..   
(princ"\nPolyLiNe Kesit Alanı= ")
(princ (strcat  (rtos plyalan 2 2 ) """ brm²"))
(princ"\nPolyLiNe Çevre Toplam= ")
(princ (strcat  (rtos plcevre 2 2 ) """ brm"))
(princ)))))
(setvar "cmdecho" 1)


Bu mesaj k005 tarafından düzenlendi (25.10.2009 10:45 GMT, --- önce)

25.10.2009 09:14 GMT
52773      




ehya

[80] Yetkili

Online Durumu

2642 ileti
Teknik Ressam
Ankara

pline ilgili bölümü aşağıdaki gibi değiştir.
Ayrıca daire bölümünü de kontrol ettim. Bi hata var. Kesit alanı doğru sonuç vermiyor. Örnek olarak, iki dairede verdiği sonuç ile, bu alanı hatch yaparak alanını hesapladığımda aynı sonucu vermedi. Kodlarını tek tek kontrol etmedim. Bu bölümü tekrar kontrol et derim..

Kod: (Seç)

(if (= objt  2)
(progn
(setq tc1 (car (entsel "\nBüyük Polyline seçiniz ?")))
(setq tc2 (car (entsel "\nKüçük Polyline seçiniz ?")))
(command "area" "o" tc1)
(setq ply2 (getvar "area"))
(setq cvr2 (getvar "perimeter"))
(command "area" "o" tc2)
(setq ply1 (getvar "area"))
(setq cvr1 (getvar "perimeter"))
(setq plyalan (- ply2 ply1))
(setq plycevre (- cvr2 cvr1))
(princ"\nPolyLiNe Kesit Alanı= ")
(princ (strcat  (rtos plyalan 2 2 ) """ brm²"))
(princ"\nPolyLiNe Çevre Toplam= ")
(princ (strcat  (rtos plycevre 2 2 ) """ brm"))
(princ)))))
(setvar "cmdecho" 1)

25.10.2009 09:27 GMT
52774      




k005

[10] Üstad

Online Durumu

578 ileti
İnşaat Teknikeri
Düzce

Alıntı
ehya :

tamamdır ehya. teşekkürler.. Daire kesiti ile ilgili kısma gelince,, bir Hata yok sonuç doğru çıkıyor..

(setq aln (-(* pi (sqr R))(* pi(sqr ru)))) burdaki sqr fonksiyonu sende yoktur büyük ihtimalle,, sanırım ondan kaynaklanıyor...

25.10.2009 09:30 GMT
52775      




ehya

[80] Yetkili

Online Durumu

2642 ileti
Teknik Ressam
Ankara

yani sqr fonksiyonunu sanırım dışarıdan ekleme yaptın... ben onu yanlış yazdın düşüncesiyle sqrt olarak değiştirmiştim.

25.10.2009 09:31 GMT
52776      




k005

[10] Üstad

Online Durumu

578 ileti
İnşaat Teknikeri
Düzce

.. evet dışardan ekledim. kolaylık sağlıyor bazı işlemlerde..

25.10.2009 10:23 GMT
52780      




yazgunesi

[70] Editör

Online Durumu

524 ileti
Teknik Ressam
Çanakkale

Kod: (Seç)

KESİT ALANI HESAPLAMA   E.KALAY 2009

;  -- Function: sqr X
;  Compute the square of X; short for `(* X X)'.

; *****       ******        *******         *******

(defun sqr (x)
  (* x x)
)
(princ)
     
; *****       ******        *******         *******

(DEFUN C:ac()
 
(setq mycmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
 
(setq myosm (getvar "OSMODE")) ; osnap modunu değişkene kaydet
(setvar "OSMODE" 0)   ; osnap modunu devre dışı braktık. 

; Program esas kodlar başlangıç :
 
(princ "\nObje Kesit Alanı Hesaplar..")
 
(setq objt (getint "\nObJe TiPi (CiRcLe/PoLyLiNe) 1/2 ? : "))
(if (= objt  1)
(progn
(setq tc1 (entsel "\nBüyük daireyi seçiniz ?"))
(setq tc2 (entsel "\nKüçük daireyi seçiniz ?"))
(setq tc3 (entget (car tc1)))
(setq tc4 (entget (car tc2)))
(setq R (cdr (assoc 40 tc3)))
(setq ru (cdr (assoc 40 tc4)))
(setq aln  (-(* pi (sqr R))(* pi(sqr ru))))
(setq 2cev (+(* pi (+ R R))(* pi(+ ru ru))))
(princ"\nKesit   ALANI= ")
(princ (strcat  (rtos aln 2 2 ) """ brm²"))
(princ"\nÇevre  TOPLAM= ")
(princ (strcat  (rtos 2cev 2 2 ) """ brm"))
(princ)
)
 
;***      ****       ****      *****      *****
 
(if (= objt  2)
(progn
(setq tc1 (car (entsel "\nBüyük Polyline seçiniz ?")))
(setq tc2 (car (entsel "\nKüçük Polyline seçiniz ?")))
(command "area" "o" tc1)
(setq ply2 (getvar "area"))
(setq cvr2 (getvar "perimeter"))
(command "area" "o" tc2)
(setq ply1 (getvar "area"))
(setq cvr1 (getvar "perimeter"))
(setq plyalan (- ply2 ply1))
(setq plycevre (- cvr2 cvr1))
(princ"\nPolyLiNe Kesit Alanı= ")
(princ (strcat  (rtos plyalan 2 2 ) """ brm²"))
(princ"\nPolyLiNe Çevre Toplam= ")
(princ (strcat  (rtos plycevre 2 2 ) """ brm"))
(princ))
)
)
 
; (setvar "cmdecho" 1) ; iptal edilen satır
 
(setvar "cmdecho" mycmd)  ; sistem değişkenlerini geri çağralım.
(setvar "osmode" myosm)  ; herşey ilk andaki gibi olması için..
(princ)
)
(Princ "Lisp'i çalıştırmak için > ac < yazınız! ")


Kodlama ile ilgili kaynak linkler vs. :



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





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



; ******* ********* ************ **********

; SQRT KULLANIMI : sqrt (sqrt number)
; Returns square root of number as a real number.

; ******* ********* ************ **********

Program çalışırken, işlem anında seçim yapılmazsa eğer ;

Küçük daireyi seçiniz ?
Error:bad argument type: lentityp nil
hatasını veriyor..

Daire , pline , join yapılan line objelerinde de test edildi problem yok...

Kesit ALANI= 1001.38 brm²
Çevre TOPLAM= 267.04 brm

PolyLiNe Kesit Alanı= 456.23 brm²
PolyLiNe Çevre Toplam= 39.47 brm

Bundan sonrası için düşüncem cm2 , mt2 , cm3 , mt3 cinsinden seçenekleri ve hesapları uygulamaktır.. .tabi iş icabı gerekliyse eğer. :-)


Bu mesaj yazgunesi tarafından düzenlendi (25.10.2009 10:35 GMT, --- önce)

----------------------------------
www.cizimokulu.com

29.10.2009 12:34 GMT
52888      




k005

[10] Üstad

Online Durumu

578 ileti
İnşaat Teknikeri
Düzce

Obje Kesit Alanı ve çevre hesaplama.. (obje = polyline, circle, ellipse, region)
komutu çalıştırmak için = ac

Kod: (Seç)

;KESİT ALANI HESAPLAMA   E.KALAY 2009
(Defun C:ac()
(princ "\nObje Kesit Alanı Hesaplar..")
(setvar "cmdecho" 0)
(setq tc1 (car (entsel "\nBÜYÜK ŞEKLİ SEÇİNİZ ?")))
(setq tc2 (car (entsel "\nKüçük Şekli seçiniz ?")))
(command "area" "o" tc1)
(setq ply2 (getvar "area"))
(setq cvr2 (getvar "perimeter"))
(command "area" "o" tc2)
(setq ply1 (getvar "area"))
(setq cvr1 (getvar "perimeter"))
(setq plyalan (- ply2 ply1))
(setq plycevre (+ cvr2 cvr1))
(princ "\n============================")
(princ"\nKESİT ALANI  = ")
(princ (strcat  (rtos plyalan 2 2 ) """ brm²"))
(princ"\nÇEVRE TOPLAM = ")
(princ (strcat  (rtos plycevre 2 2 ) """ brm"))
(princ))
(setvar "cmdecho" 1)


Bu mesaj k005 tarafından düzenlendi (29.10.2009 12:45 GMT, --- önce)

> 1 <
Yukarı Çık
Copyright © 2004-2014 | Tüm Hakları Saklıdır | 62 | Site haritası | İstatistikler | Hakkımızda | Kadromuz | Gizlilik | Reklam
AKPINAR Eğitim ve Yazılım Merkezi