Beyond Inventor Wizard... The Community!

Autodesk Inventor en AutoCAD Forum

misschien een hele stomme vraag maar waar kan ik een zaaglijst activeren ?

in het boek kan ik er niets over vinden, en hier op het forum ook niet, of ik kijk verkeerd :$

Aantal maal bekeken: 2625

Hierop reageren

Berichten in deze discussie

beste

heb een code gekregen van iemand om een zaaglijst te maken maar weet zelf niet hoe ik hem moet koppelen

aan inventor deze code zou moeten werken volgens hem bestaat al 10jaar als iemand kan helpen waar we deze code aan kunnen koppelen  

zie bijgevoegde code

De Data_baren.Recordset is de tabel die de verschillende lengtes en aantallen bevat.

Private Sub Cmd_Bereken_Click()
Screen.MousePointer = vbHourglass
ProgressBar1.Visible = True
bOptimaBerekend = True
For i = 0 To 9999
array_profielen1(i).baar = 0
array_profielen1(i).id = 0
array_profielen1(i).Lengte = 0
array_profielen1(i).lhoek = 0
array_profielen1(i).rhoek = 0
Next
For i = 0 To 9999
array_profielen2(i).baar = 0
array_profielen2(i).id = 0
array_profielen2(i).Lengte = 0
array_profielen2(i).lhoek = 0
array_profielen2(i).rhoek = 0
Next
For i = 0 To 9999
array_profielen3(i).baar = 0
array_profielen3(i).id = 0
array_profielen3(i).Lengte = 0
array_profielen3(i).lhoek = 0
array_profielen3(i).rhoek = 0
Next
For i = 0 To 999
tabel_lengtes(i).aantal = 0
tabel_lengtes(i).Lengte = 0
Next
For i = 1 To 9999
For j = 1 To 35
tabel_baren(i).Lengte(j) = 0
tabel_baren(i).lhoek(j) = 0
tabel_baren(i).rhoek(j) = 0
Next
Next

txt_rich.TextRTF = ""
selektie = "SELECT * FROM tbl_baren"
Set Data_baren.Recordset = Data_baren.Database.OpenRecordset(selektie, dbOpenDynaset, 16)

Data_baren.Database.Execute "DELETE * FROM tbl_Baren"

Label3.Caption = ""
Lbl_brutolengte.Caption = ""
Lbl_Nettolengte.Caption = ""
Lbl_procentverlies.Caption = ""
baarlengte = Val(Txt_Lengte_baar.Text) - 2 * Val(Txt_restlengte.Text) - Val(Txt_zaagsnede.Text)
Data_Lengtes.Recordset.MoveFirst
aantal = 0
totale_lengte = 0
Do Until (Data_Lengtes.Recordset.EOF)
If (Data_Lengtes.Recordset.Fields("lengte") > Val(Txt_Lengte_baar.Text)) Then
MsgBox ("Lengte Profiel > Lengte baar !!!")
Exit Sub
End If
For i = 1 To Data_Lengtes.Recordset.Fields("Aantal")
aantal = aantal + 1
array_profielen1(aantal).Lengte = Data_Lengtes.Recordset.Fields("lengte") + Val(Txt_zaagsnede.Text)
'array_profielen1(aantal).lhoek = Data_Lengtes.Recordset.Fields("LHOEK")
'array_profielen1(aantal).rhoek = Data_Lengtes.Recordset.Fields("RHOEK")
array_profielen1(aantal).baar = 0
totale_lengte = totale_lengte + Data_Lengtes.Recordset.Fields("lengte")
Next
Data_Lengtes.Recordset.MoveNext
Loop
Label1.Caption = totale_lengte
geplaatste_profielen = 0
baar = 0
deel_baar = 0
restlengte = baarlengte
aantal1 = aantal
ProgressBar1.Max = aantal1
ProgressBar1.Value = 0
Do
baar = baar + 1
deel_baar = 0
Do
langste_lengte = 0
langste_positie = 0
For i = 1 To aantal1
If ((array_profielen1(i).Lengte > langste_lengte) And (array_profielen1(i).baar = 0)) Then
langste_lengte = array_profielen1(i).Lengte
langste_positie = i
End If
Next
If (langste_positie <> 0) Then
array_profielen1(langste_positie).baar = baar
geplaatste_profielen = geplaatste_profielen + 1
deel_baar = deel_baar + 1
tabel_baren(baar).Lengte(deel_baar) = array_profielen1(langste_positie).Lengte - Val(Txt_zaagsnede.Text)
'tabel_baren(baar).lhoek(deel_baar) = array_profielen1(langste_positie).lhoek
'tabel_baren(baar).rhoek(deel_baar) = array_profielen1(langste_positie).rhoek
Label1.Caption = geplaatste_profielen
Label1.Refresh
ProgressBar1.Value = geplaatste_profielen
restlengte = restlengte - langste_lengte
Else
Exit Do
End If
Loop While ((restlengte > (2.5 * langste_lengte)) And (langste_positie <> 0))

kleinste_rest = restlengte

'Vullen array_profiel3 met array_profielen1
aantal3 = 0
verschillende_lengtes = 0
For i = 1 To aantal1
If (array_profielen1(i).baar = 0) Then
Lengte = array_profielen1(i).Lengte
For j = 1 To verschillende_lengtes
If (Lengte = tabel_lengtes(j).Lengte) Then
bestaat = True
If (tabel_lengtes(j).aantal < 4) Then
aantal3 = aantal3 + 1
array_profielen3(aantal3).Lengte = array_profielen1(i).Lengte
'array_profielen3(aantal3).lhoek = array_profielen1(i).lhoek
'array_profielen3(aantal3).rhoek = array_profielen1(i).rhoek
array_profielen3(aantal3).baar = 0
array_profielen3(aantal3).id = i
tabel_lengtes(j).aantal = tabel_lengtes(j).aantal + 1
End If
End If
Next
If (bestaat = False) Then
verschillende_lengtes = verschillende_lengtes + 1
tabel_lengtes(verschillende_lengtes).Lengte = array_profielen1(i).Lengte
tabel_lengtes(verschillende_lengtes).aantal = 1
aantal3 = aantal3 + 1
array_profielen3(aantal3).Lengte = array_profielen1(i).Lengte
array_profielen3(aantal3).baar = 0
array_profielen3(aantal3).id = i
End If
bestaat = False
End If
Next

'Alle combinaties met 1 profiel
oplossingen = 0
For i = 1 To aantal3
som_lengtes = array_profielen3(i).Lengte
If ((som_lengtes <= restlengte) And (array_profielen3(i).baar = 0)) Then
oplossingen = 1
rest = restlengte - som_lengtes
If (rest < kleinste_rest) Then
combinaties(1).profielnr1 = i
combinaties(1).profielnr2 = 0
combinaties(1).profielnr3 = 0
combinaties(1).profielnr4 = 0
combinaties(1).rest = rest
kleinste_rest = rest
oplossingen = 1
End If
End If
Next

'Alle combinaties met 2 profielen
If (oplossingen <> 0) Then
oplossingen = 0
For i = 1 To aantal3
For j = i + 1 To aantal3
som_lengtes = array_profielen3(i).Lengte + array_profielen3(j).Lengte
If ((som_lengtes <= restlengte) And (array_profielen3(i).baar = 0) And (array_profielen3(j).baar = 0)) Then
oplossingen = 1
rest = restlengte - som_lengtes
If (rest < kleinste_rest) Then
combinaties(1).profielnr1 = i
combinaties(1).profielnr2 = j
combinaties(1).profielnr3 = 0
combinaties(1).profielnr4 = 0
combinaties(1).rest = rest
kleinste_rest = rest
End If
End If
Next
Next
End If

'Alle combinaties met 3 profielen
If (oplossingen <> 0) Then
oplossingen = 0
For i = 1 To aantal3
For j = i + 1 To aantal3
For k = j + 1 To aantal3
som_lengtes = array_profielen3(i).Lengte + array_profielen3(j).Lengte + array_profielen3(k).Lengte
If ((som_lengtes <= restlengte) And (array_profielen3(i).baar = 0) And (array_profielen3(j).baar = 0) And (array_profielen3(k).baar = 0)) Then
oplossingen = 1
rest = restlengte - som_lengtes
If (rest < kleinste_rest) Then
combinaties(1).profielnr1 = i
combinaties(1).profielnr2 = j
combinaties(1).profielnr3 = k
combinaties(1).profielnr4 = 0
combinaties(1).rest = rest
kleinste_rest = rest
oplossingen = 1
End If
End If
Next
Next
Next
End If

'Opslaan gekozen profielen
If (combinaties(1).profielnr1 <> 0) Then
array_profielen3(combinaties(1).profielnr1).baar = baar
geplaatste_profielen = geplaatste_profielen + 1
deel_baar = deel_baar + 1
tabel_baren(baar).Lengte(deel_baar) = array_profielen3(combinaties(1).profielnr1).Lengte - Val(Txt_zaagsnede.Text)
'tabel_baren(baar).lhoek(deel_baar) = array_profielen3(combinaties(1).profielnr1).lhoek
'tabel_baren(baar).rhoek(deel_baar) = array_profielen3(combinaties(1).profielnr1).rhoek
End If
If (combinaties(1).profielnr2 <> 0) Then
array_profielen3(combinaties(1).profielnr2).baar = baar
geplaatste_profielen = geplaatste_profielen + 1
deel_baar = deel_baar + 1
tabel_baren(baar).Lengte(deel_baar) = array_profielen3(combinaties(1).profielnr2).Lengte - Val(Txt_zaagsnede.Text)
End If
If (combinaties(1).profielnr3 <> 0) Then
array_profielen3(combinaties(1).profielnr3).baar = baar
geplaatste_profielen = geplaatste_profielen + 1
deel_baar = deel_baar + 1
tabel_baren(baar).Lengte(deel_baar) = array_profielen3(combinaties(1).profielnr3).Lengte - Val(Txt_zaagsnede.Text)
End If
If (combinaties(1).profielnr4 <> 0) Then
array_profielen3(combinaties(1).profielnr4).baar = baar
geplaatste_profielen = geplaatste_profielen + 1
deel_baar = deel_baar + 1
tabel_baren(baar).Lengte(deel_baar) = array_profielen3(combinaties(1).profielnr4).Lengte - Val(Txt_zaagsnede.Text)
End If
combinaties(1).profielnr1 = 0
combinaties(1).profielnr2 = 0
combinaties(1).profielnr3 = 0
combinaties(1).profielnr4 = 0

'terugpompen array_profielen3 in array_profielen1
For i = 1 To aantal3
array_profielen1(array_profielen3(i).id).baar = array_profielen3(i).baar
Next

'Verder opvullen met kleinse profiel
restlengte = kleinste_rest
Do
kortste_lengte = baarlengte
kortste_positie = 0
For i = 1 To aantal1
If ((array_profielen1(i).Lengte < kortste_lengte) And (array_profielen1(i).baar = 0)) Then
kortste_lengte = array_profielen1(i).Lengte
kortste_positie = i
End If
Next
If (kortste_positie <> 0) Then
restlengte = restlengte - kortste_lengte
If (restlengte >= 0) Then
array_profielen1(kortste_positie).baar = baar
geplaatste_profielen = geplaatste_profielen + 1
deel_baar = deel_baar + 1
tabel_baren(baar).Lengte(deel_baar) = array_profielen1(kortste_positie).Lengte - Val(Txt_zaagsnede.Text)
Label1.Caption = geplaatste_profielen
Label1.Refresh
ProgressBar1.Value = geplaatste_profielen
End If
Else
Exit Do
End If
Loop Until ((restlengte <= 0) Or (kortste_positie = 0))

restlengte = baarlengte
Loop Until (geplaatste_profielen >= aantal)
Label1.Caption = geplaatste_profielen
Label1.Refresh

'Opvullen tbl_Baren
For i = 1 To baar
'SORTEREN
T = 1
v = True
Do While T < 35 And v = True
v = False
j = 1
Do While j <= 35 - T
If tabel_baren(i).Lengte(j) < tabel_baren(i).Lengte(j + 1) Then
Temp = tabel_baren(i).Lengte(j)
tabel_baren(i).Lengte(j) = tabel_baren(i).Lengte(j + 1)
tabel_baren(i).Lengte(j + 1) = Temp
v = True
End If
j = j + 1
Loop
T = T + 1
Loop

Data_baren.Recordset.AddNew
For j = 1 To 35
Data_baren.Recordset.Fields(j - 1) = tabel_baren(i).Lengte(j)
Next
reststuk = Val(Txt_Lengte_baar.Text) - 2 * Val(Txt_restlengte.Text) - Val(Txt_zaagsnede.Text)
For j = 1 To 35
If (tabel_baren(i).Lengte(j) <> 0) Then
reststuk = reststuk - tabel_baren(i).Lengte(j) - Val(Txt_zaagsnede.Text)
End If
Next
Data_baren.Recordset.Fields("reststuk") = reststuk
Data_baren.Recordset.Update
Next
ProgressBar1.Value = 0
PrintResult
Cmd_printen.Enabled = True

Screen.MousePointer = vbNormal
ProgressBar1.Visible = False
End Sub

 

 

 

 

    

    

   

  

    

Dit is VBA code, maar voor zover ik ze begrijp is er hierin een verwijzing naar een database. Dus die heb je ook nodig om de code te kunnen draaien.

is de BOM lijst geen soort van database

of is het mogelijk om bepaalde kolommen te gebruiken uit de BOM lijst heb er maar 3 nodig om deze rule te laten werken (denk ik )

aantal / lengte / stocknummer

hoe kan ik die wegschrijven naar ilogic

De BOM is eerder een soort query naar de componenten in de browser en naar de libraries voor je standaard ondedelen.

Je kan niets wegschrijven naar ilogic, ilogic moet je zelf schrijven.

de vraag was hoe kan ik via ilogic code aan de BOM lijst geraken er staat allen in de snippets / systeem

ThisBOM.OverrideQuantity
ThisBOM.CalculateQuantity

+ export

is er een bepaalde code voor

via export dan , naar excel bvb en daar kan je met formules en VBA  berekeningen doen.Zet wel een trigger in je assembly zodat bij wijzigingen je telkens een nieuwe export bekomt. 

In mijn werk gebruiken wij nooit zaaglijsten, dus wat jullie precies bedoelen met een zaaglijst is mij niet geheel duidelijk. Maar wat ik me kan indenken is dat alle informatie die mensen in een zaaglijst willen hebben toch ook al in de inventor modellen zijn verwerkt? Hierdoor zal het dus ook heel eenvoudig moeten zijn om deze informatie op een goede manier in een zaaglijst te verwerken.
Ik snap dan ook niet goed waarom er naar excel geexporteerd moet worden, omdat je binnen inventor ook toch heel veel berekeningen kan uitvoeren.

Is het misschien mogelijk als iemand hier een specifiek voorbeeld kan geven hoe een zaaglijst er uit moet zien, waar deze informatie vandaan komt en hoe modellen zijn opgebouwd. Aan de hand van voorbeelden kan ik dan kijken of er iets te bedenken is met de standard functionaliteit van Inventor. Dus als iemand wat documenten/parts/assy's/idw's kan verstrekken dan wil ik ook wel eens kijken.

Rob.

Ik snap ook niet waarom er naar excel moet geëxporteerd worden, maar de vraag was " hoe kan ik met iLogic aan de BOM geraken "  dus exporteren  leek mij het enige zinnige antwoord op een niet al te duidelijke vraag.

@Joris, het is inderdaad vaak lastig om een goed beeld te krijgen van wat de vraagsteller wil weten. We doen ons best :)

Je kan via programmatorische weg niet veel aan de bom gaan wijzigen.

Wat is de BOM eigenijk (zoals eerder aangehaald) een samenvatting van de eigenschappen van componenten en samenstellingen in de hoofdsamenstelling.

Je kan die eigenschappen enkel bewerken door (er zijn verschillende manieren) alle onderdelen te doorlopen, en daar de eigenschappen aan te passen. Aldus zal de bom worden aangepast.

Je kan in je onderliggende onderdelen gerust custom iproperties gaan aanmaken en die gaan weergeven in de bom (waar je dan de resultaten van bvb een berekening instopt ofzo)

Maar het is absoluut niet mogelijk om de BOM de customizen, niet met iLogic, vba, vb.net

De enige mogelijkheid die ik ook inderdaad veelvulidg toepas, is export naar excel, tekstbestand, database, ... en daar dan de berekeningen of layout gaan aanpassen..., printen, whatever...

Zo bestaan er al talloze plugins voor inventor, maar die doen natuurlijk nooit niet volledig wat je wil ...

Die staat al een aantal jaren op de request list , maar aan die vraag wordt tot op heden niet beantwoord...

Het zou al mooi zijn moest men wat excel functionaliteit in de BOM steken. Bvb tabbladen aanmaken filters die je kan instellen, formules in de cellen steken etc.

beste hier is een kleine samenstelling parts / samenstellingen / dwg

ik hoop dat de bom lijst mee is

een zaaglijst is een lijst waar alle lengtes van de zelfde profielen verdeeld worden onder de aankoop lengte

voorbeeld

3x 2000mm uit aankoop lengte 7000mm rest 1000mm + aftrek zaagsnede

indien er meer zijn word de verdeling gedaan over meerdere lengtes

zie voorbeeld

Bijlagen:

RSS

Interessante links

Word Fan!

Inventor Wizard Cartoons

Video's

  • Video's toevoegen
  • Alles weergeven

© 2020   Gemaakt door Stefaan Boel.   Verzorgd door

Banners  |  Een probleem rapporteren?  |  Algemene voorwaarden