Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Phyton Script- Optimierung von Stablängen


  • Please log in to reply
24 replies to this topic
mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Hallo Leute,

ich habe nun das kleine Prog. fast fertig. Ich würde ganz gerne noch eine Möglichkeit einarbeiten in der man die Schnittbreite vom Sägeblatt berücksichtigt, in der Regel wären das ca. 3,00 mm.

 

Wäre echt nett.

 

Lg



lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

ist doch eigentlich recht einfach

Schnittbreite := 3
FileRead,p,%1%
  l:=[],k:=[],sk:=[],s:=1,in:=1,m:=6000+Schnittbreite
  if(!ErrorLevel){
    while(RegExMatch(p,"sm)(.*?(\d+)\D+(\d+|\d+\.\d+)([dcm]+?m?).*?)(\d|)",o,s))
    ,s+=Strlen(o1),x.= o3*(O4="m"?1000:(O4="dm"?100:(O4="cm"?10:1)))+Schnittbreite " " o2 "`n"{
    }Sort x,RN
    Loop,parse,x,%A_Space%`n
      if(!(A_Index&1&&l.Insert(tg:=A_LoopField)))
        loop % A_LoopField-1
          l.Insert(tg)
    for i,v in l
      while(v),(in>=sk.MaxIndex())?(sk.Insert(0),k[in,1]:=0):""{
        ((v+sk[in])<=m)?(k[in].Insert(v),sk[in]+=v,in:=1,v:=0):++in
      }
    Loop % k.MaxIndex(){
      r .= "stange " (i:=A_Index) "     ->zuschnitte->"
      Loop % k[i].MaxIndex()-1
        r .= k[i,A_Index+1]-Schnittbreite " | " 
      r .= " rest = " m-sk[i] "mm`n"
    }
    msgbox % r
  }else
  msgbox feher beim öffnen von datei %1%

was ist den das für zeugs was du da zerschnippelst ?



strobo
  • Members
  • 359 posts
  • Last active: Mar 10 2015 08:13 PM
  • Joined: 19 Jun 2012

Du vergisst den Verschnitt beim Rest.


Regards,
Babba

mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Wenn ich einen Stab der Länge 6000 mm habe und ich 60 x 100 mm Stücken brauche würde das ja in der Praxis mit einem Stab nicht ausreichen da wie gesagt 3 mm pro Schnitt dazu kommen dh. 

 

Stab 1 ->Zuschnitte-> | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | Rest = 0mm

 

würde nicht funktionieren, da allein die Schnittbreite in der Summe schon 180 mm betragen würde.

 

:)



lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

sage mal hast du überhaubt meinen code oben probiert ???

geht genau auf

 

@ Babba  richtig beim rest sollte es sebstverfreilich so sein ...

 r .= " rest = " ( m-sk[i]  -Schnittbreite )    "mm`n"


mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Ja das stimmt, ich hatte die zwei entscheidenden Zeilen übersehen da Ich den Code nicht per Copy and Paste verwendet hatte.

Funktioniert super...

 

Danke. :)

 

Ps: ich benötige das Prog. für die Kalkulation von Stabstahl, um halt die Bestellmengen so gering wie möglich zu halten.



mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

So nun habe ich mal ein wenig rum probiert und mir ist da folgendes aufgefallen...

Das Ergebnis ist noch nicht ganz optimal.

 

Stab 1 ->Zuschnitte-> | 1000 | 1000 | 1000 | 1000 | 1000 | 985 | rest = -3mm

 

bekommt man das auch irgendwie gelöst? (den negativen Wert)



lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012

sowas hier sollte gehen

 r .= (  m-sk[i] <= 0
      ? (" kein Verschnitt`n")
      : (" rest = " (m-sk[i]-Schnittbreite) "mm`n")  )
}
msgbox % r


mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

So habe ich´s jetzt gelöst... 

 

       r .= (  (m-sk[i]-Schnittbreite) < 0
       ? ( "Rest = " m-sk[i] " mm`n`n")
       : (" Rest = " (m-sk[i]-Schnittbreite) " mm`n`n")  )

    }


mirco
  • Members
  • 32 posts
  • Last active: Mar 26 2016 10:03 AM
  • Joined: 29 Nov 2012

Hey lasso,

 

ich hätte bezüglich des o.g. Skriptes noch ne Frage. Gibt es ne Möglichkeit die einzelnen Längen mit Positionsnummern zu versehen?

 

z.B.

 

Pos 1 = 4 x 812mm
Pos 2 = 5 x 1210mm
Pos 3 = 3 x 23cm
Pos 4 = 12 x 341mm