01.12.2012 12:18    

k005
Merhaba arkadaşlar;

Kod:

(Defun C:he()
  (setq pb (getreal "\nProfil boyu  : "))
  (setq eb (getreal "\nEleman boyu  : "))
  (setq um (getreal "\nİmalat adedi : "))
  (setq umb (* eb um))
  (setq tamb (/ umb pb))
  (setq kln (- pb eb))
  ;(if kln < eb
  (princ "\nSonuç : ")
  (princ (strcat "" (rtos tamb 2 2)""))
  (princ)
  )


kalan malzeme miktarını ve boyunu hesaplayan bir lisp üzerinde çalışıyorum,, if yapısı konusunda takıldım.. daha doğrusu, kodlama ne şekilde olmalı..

örnek:
IPE 360 lık profil standart boy : 12 mt
makas elemanı boyu : 7.40 mt
imalat adet : 10

buradan 7.40*10 = 74 mt 74 mt /12 mt = 6,166 adet = 7 adet (boy) profil. (7*12 = 84 mt)
84mt - 74 mt = 10 mt kalan malzeme toplam boyu...

bir makas boyunda sadece bir ek olabilir.. bu durumda kalan malzeme miktarını ve boyunu nasıl kodlayabilirim..?

yardımcı arkadaşa şimdiden teşekkürler.. herkese kolay gelsin..

03.12.2012 14:50    

Travaci
Bakıorum ama anlamıyorum sanırım, if lik bir durum göremiyorum ben, tanımladığınız sayısal işlemi, yukarıda nasıl yaptıysanız aynı şekil yapıcak bir sonuç daha göstericeksiniz..Yanlışmıyım ?

03.12.2012 15:44    

k005
Alıntı
Travaci :

evet o şekilde bir sonuç göstereceğim ama,, bu nasıl olacak...? mesela bu örnek de kalan toplam malzeme miktarı 10mt. bunlar 4,60 1 adet ve 3 adet 1,80m var. toplam 10mt... bu tarz bir kodlama oluşturacağım.. if gerekli olacak kanatindedyim...


12-7,40 = 4,60

4,60*2= 9,20 ---> bundan bir makas daha çıkıyor 9,20-7,40 = 1,80 kalan..


kalan malzemeler :

1,80m 3 adet

4,60m 1 adet
+----------------------
10mt

07.12.2012 15:32    

ProhibiT
Özetin özeti şeklinde "if yapısı" olarak bahsettiğiniz "Algoritma" olsa gerek.
Kod:

;|***************************************************************************|
| CwMw: Cutting with Minimum waste                                          |
|       Author: M. Şahin Güvercin  www.cizimokulu.com  07.12.2012           |
|---------------------------------------------------------------------------|;
(defun c:CwMw (/ ArtanBoyu ArtanParcaBoyu Boy Ek ParcaBoyu ParcaNumarasi
             ParcaSayisi ProfilLBoyu ProfilSayisi)
  (setvar "cmdecho" 0) (command "_.undo" "group")
  (setq ProfilBoyu (getreal "\n Profil Boyu: ")
        ParcaBoyu (getreal "\n  Parça Boyu: ")
        ParcaSayisi (getint "\nParça Sayısı: ")
        ProfilSayisi (1+ (fix (/ (* ParcaSayisi ParcaBoyu) ProfilBoyu)))
        ArtanBoyu (- (* ProfilSayisi ProfilBoyu) (* ParcaBoyu ParcaSayisi)))
  (princ (strcat "\n     Profil Boyu (m.)  : " (rtos ProfilBoyu 2 2)))
  (princ (strcat "\n      Parça Boyu (m.)  : " (rtos ParcaBoyu 2 2)))
  (princ (strcat "\n   Parça Sayısı  (Adet): " (itoa ParcaSayisi)))
  (princ (strcat "\nArtan Parça Boyu (m.)  : " (rtos ArtanBoyu 2 2) "\n"))
  (setq ParcaNumarasi 0 ArtanParcaBoyu 0 Ek "Ek Yok")
  (while (< ParcaNumarasi ParcaSayisi) (setq ParcaNumarasi (1+ ParcaNumarasi))
    (if (equal ArtanParcaBoyu 0.0 5.0E-8)
      (setq  Ek "Ek Yok" Boy (strcat "L=" (rtos ParcaBoyu 2 2))
             ArtanParcaBoyu (- ProfilBoyu ParcaBoyu))
      (setq Ek "Ek Var" Boy (strcat "L=" (rtos ArtanParcaBoyu 2 2) "+"
              (rtos (- ParcaBoyu ArtanParcaBoyu) 2 2) "=" (rtos ParcaBoyu 2 2))
            ArtanParcaBoyu (- ProfilBoyu (- Parcaboyu ArtanParcaBoyu))))
    (princ (strcat (if (< ParcaNumarasi 10) "\n " "\n") (itoa ParcaNumarasi)
    ". Parça, " Ek ", " Boy ", Kalan Parça: " (rtos ArtanParcaBoyu 2 2) " m."))
    (while (and (> ArtanParcaBoyu ParcaBoyu) (/= ParcaNumarasi ParcaSayisi))
      (setq Ek "Ek Yok" Boy (strcat "L=" (rtos ParcaBoyu 2 2))
            ParcaNumarasi (1+ ParcaNumarasi)
            ArtanParcaBoyu (- ArtanParcaBoyu ParcaBoyu))
        (princ (strcat (if (< ParcaNumarasi 10) "\n " "\n")(itoa ParcaNumarasi)
  ". Parça, " Ek ", " Boy ", Kalan Parça: " (rtos ArtanParcaBoyu 2 2) " m."))))
  (command "_.undo" "e") (princ))

Profil Boyu (m.) : 12
Parça Boyu (m.) : 7.4
Parça Sayısı (Adet): 10
Artan Parça Boyu (m.) : 10

1. Parça, Ek Yok, L=7.4, Kalan Parça: 4.6 m.
2. Parça, Ek Var, L=4.6+2.8=7.4, Kalan Parça: 9.2 m.
3. Parça, Ek Yok, L=7.4, Kalan Parça: 1.8 m.
4. Parça, Ek Var, L=1.8+5.6=7.4, Kalan Parça: 6.4 m.
5. Parça, Ek Var, L=6.4+1=7.4, Kalan Parça: 11 m.
6. Parça, Ek Yok, L=7.4, Kalan Parça: 3.6 m.
7. Parça, Ek Var, L=3.6+3.8=7.4, Kalan Parça: 8.2 m.
8. Parça, Ek Yok, L=7.4, Kalan Parça: .8 m.
9. Parça, Ek Var, L=.8+6.6=7.4, Kalan Parça: 5.4 m.
10. Parça, Ek Var, L=5.4+2=7.4, Kalan Parça: 10 m.

Bu algoritmaya göre kesim yapılınca, Hem hiç bir parçada birden fazla ek olmaz, hem de son kesimden sonra artan parça (örnekte 10 m.) tek parça halinde kalır başka bir imalatta işimize yarar.

ProhibiT (08.12.2012 08:17 GMT)

07.12.2012 15:58    

k005
Alıntı
ProhibiT :
Özetin özeti şeklinde "if yapısı" şeklinde bahsettiğiniz "Algoritma" olsa gerek.
[code];|***************************************************************************|

Hocam çok teşekkür ederim,, elinize, yüreğinize sağlık.. :) if yapısı derken.; evet aslında algoritmayı kasdediyordum hocam.. :)

> 1 <
Copyright © 2004-2022 SQL: 1.19 saniye - Sorgu: 54 - Ortalama: 0.02204 saniye