Hallo, ich bin neu hier im Forum. Derzeit bereite ich meine Masterarbeit vor, bei der ein komplett mittels ilogic gesteuertes Modell eines Gurtförderes erzeugt werden soll. Leider sind meine Programmierkenntnisse eher dürftig, weshalb ich mich bisher durch die Suche in Foren und bei google vorangekämpft habe. Dieses Forum hat mir bereits ein paar mal weitergeholfen.
Ich hoffe hierbei kann mir nun auch jemand unter die Arme greifen..
Zum allgemeinen Vorgehen:
In einer Baugruppe soll nach einigen Werteeingaben durch den Benutzer ein Teilsegment des Gurtes (gerades Stück oder ein Bogen)nach dem anderen in eine Baugruppe eingefügt werden, sodass sich ein zusammenhängender Verlauf ergibt.
Für die Teilsegmente gibt es jeweils ein Masterbauteil. Die eingelesenen Parameterwerte ändern nach jedem hinzugefügten Teilsegment die Maße des Masterbauteils auf das als nächstes hinzuzufügende Teilsegment.
Mein Problem ist folgendes:
Die so hinzugefügten Einzelsegmente sind abhängig vom jeweiligen Masterbauteil. Dies muss allerdings unterbunden werden, da sich sonst das bereits eingefügte Bauteil auf die Maße des folgenden Teilsegmentes ändert.
Kann man diese Abhängigkeit irgendwie unterdrücken? Mir wurde bereits vorgeschlagen die Einzelsegmente als ilogic Komponenten zu platzieren. Allerdings wird dabei ein Fenster zum Einstellen der Benutzerparameter angezeigt, was jedoch stört. Einen Code für dieses Vorgehen habe ich zudem auch nicht.
Ist das vielleicht mit der Funktion BreakLinkToFile() zu machen? – klingt irgendwie so.. (habe ich aus dem Visual Basic Object Browser)
Vielen Dank bereits vorab dafür, dass Sie sich mit meinem Problem beschäftigen.
P.S. falls noch weitere Fehler im Code enthalten sind, wäre ich über einen Hinweis sehr dankbar.
MfG Mario
Zum besseren Verständnis hier mein bisheriger (noch nicht ganz ausgereifter) Code:
iLogicVb.RunRule("Master:1", "Erstellen von Parametern und Einlesen der Werte")
Parameter.Quiet = True
Anzahl = Parameter("Master:1", "Nummer") ‘ Nummer ist die eingelesene Anzahl der Teilsegmente
‘ überflüssige Parameter werden auf Null gesetzt
For i=Anzahl+1 To Parameter("Master:1","k")’ k ist die Anzahl der im Vorfeld mittels ilogic Code maximal erzeugten Koordinatenpaare
Parameter("Master:1", "KOORDINATE_X_"&i) = 0 mm
Parameter("Master:1","KOORDINATE_Y_"&i) = 0 mm
Next
Dim z1 As String
Dim z2 As String
Dim z3 As String
Dim z4 As String
Dim z5 As String
Dim z6 As String
'Berechnung Neigung in y- und z-Richtung(z Richtung noch nicht integriert)
For i = 1 To Anzahl
z1="KOORDINATE_X_"&i
z2="KOORDINATE_Y_"&i
z3="KOORDINATE_X_"&i+1
z4="KOORDINATE_Y_"&i+1
z5="KOORDINATE_X_"&i+2
z6="KOORDINATE_Y_"&i+2
a1=Parameter("Master:1", z1)
a2=Parameter("Master:1", z2)
a3=Parameter("Master:1", z3)
a4=Parameter("Master:1", z4)
a5=Parameter("Master:1", z5)
a6=Parameter("Master:1", z6)
a8=(a4-a2)/(a3-a1)-(a6-a4)/(a5-a3)
' Auswahl Teilstück Bogen oder Gerade
If Parameter("Master:1", Parameter("KOORDINATE_X_"&i+1)) = 0 mm Then
Goto next_i
Else If a8 = 0 oE Or Parameter("Master:1", Parameter("KOORDINATE_X_"&i+2)) = 0 mm Then
e = MaxOfMany(Parameter("Master:1", Parameter ("KOORDINATE_X_"&i)), Parameter("Master:1", Parameter ("BOGENENDE_X_"&i)), 0)
If e = Parameter("Master:1", Parameter ("KOORDINATE_X_"&i)) Then
go = Parameter("Master:1", Parameter ("KOORDINATE_Y_"&i))
Else
go = Parameter("Master:1", Parameter ("BOGENENDE_Y_"&i))
End If
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Koordinate_x_1") = e
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Koordinate_y_1") = go
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Koordinate_x_2") = Parameter("Master:1", "KOORDINATE_X_"&i+1)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Koordinate_y_2") = Parameter("Master:1", "KOORDINATE_y_"&i+1)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Gurtbreite") = Parameter("Master:1", GURTBREITE)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Gurtdicke") = Parameter("Master:1", GURTDICKE)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Muldung_OT") = Parameter("Master:1", MULDUNG_OT)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Luft") = Parameter("Master:1", LUFT)
'Public Sub AddOccurrence()
' Set a reference to the assembly component definintion.
' This assumes an assembly document is open.
Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
' Set a reference to the transient geometry object.
Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry
'Create a matrix. A New matrix Is initialized With an identity matrix.
Dim oMatrix As Matrix
oMatrix = oTG.CreateMatrix
a7=Atan(N)'*PI()/180)
'Set the rotation Of the matrix about the Z axis.
Call oMatrix.SetToRotation(a7,oTG.CreateVector(0, 0, 1), oTG.CreatePoint(0, 0, 0))
' Set the translation portion of the matrix so the part will be positioned
' at (3,2,1).
Call oMatrix.SetTranslation(oTG.CreateVector((Parameter("Master:1", Parameter("KOORDINATE_X_"&i))/10 oE),(Parameter("Master:1", Parameter("KOORDINATE_Y_"&i))/10 oE) ,(Parameter("Master:1", Parameter("KOORDINATE_Z_"&i))/10 oE)))
' Add the occurrence.
Dim oOcc As ComponentOccurrence
oOcc = oAsmCompDef.Occurrences.Add("R:\Projekte\999999_Uebungsumgebung\Kraut\Obertrum Teilstück ohne Bogen 3D.ipt", oMatrix)
Goto next_i
Else
'Parameterübergabe an Teilsegment (Bogen):
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenmitte_x") = Parameter("Master:1", Parameter("KOORDINATE_X_"&i+1))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenmitte_y") = Parameter("Master:1", Parameter("BOGENMITTE_Y_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenmitte_z") = Parameter("Master:1", Parameter("BOGENMITTE_Z_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenbeginn_x") = Parameter("Master:1", Parameter("BOGENBEGINN_X_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenbeginn_y") = Parameter("Master:1", Parameter("BOGENBEGINN_Y_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenbeginn_z") = Parameter("Master:1", Parameter("BOGENBEGINN_Z_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenende_x") = Parameter("Master:1", Parameter("BOGENENDE_X_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenende_y") = Parameter("Master:1", Parameter("BOGENENDE_Y_"&i))
Parameter("Obertrum Teilstück mit Bogen 3D:"&i, "Bogenende_z") = Parameter("Master:1", Parameter("BOGENENDE_Z_"&i))
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Gurtbreite") = Parameter("Master:1", GURTBREITE)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Gurtdicke") = Parameter("Master:1", GURTDICKE)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Muldung_OT") = Parameter("Master:1", MULDUNG_OT)
Parameter("Obertrum Teilstück ohne Bogen 3D:"&i, "Luft") = Parameter("Master:1", LUFT)
'Public Sub AddOccurrence()
' Set a reference to the assembly component definintion.
' This assumes an assembly document is open.
Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
' Set a reference to the transient geometry object.
Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry
'Create a matrix. A New matrix Is initialized With an identity matrix.
Dim oMatrix As Matrix
oMatrix = oTG.CreateMatrix
' a7=Atan(N)'*PI()/180)
'Set the rotation Of the matrix about the Z axis.
' Call oMatrix.SetToRotation(a7,oTG.CreateVector(0, 0, 1), oTG.CreatePoint(0, 0, 0))
' Set the translation portion of the matrix so the part will be positioned
' at (3,2,1).
Call oMatrix.SetTranslation(oTG.CreateVector((Parameter("Master:1", Parameter("KOORDINATE_X_"&i))/10 oE),(Parameter("Master:1", Parameter("KOORDINATE_Y_"&i))/10 oE) ,(Parameter("Master:1", Parameter("KOORDINATE_Z_"&i))/10 oE)))
' Add the occurrence.
Dim oOcc As ComponentOccurrence
oOcc = oAsmCompDef.Occurrences.Add("R:\Projekte\999999_Uebungsumgebung\Kraut\Obertrum Teilstück mit Bogen 3D.ipt", oMatrix)
End If
next_i:
Next
iLogicVb.RunRule("Master:1", "Allgemeine Angaben")
RuleParametersOutput
'
[Diese Nachricht wurde von motofreakmd am 29. Okt. 2014 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP