Moin
Die einfachste Erklärung lautet, dass Inventor ab einem bestimmten Punkt mit automatischen Aktualisierungen aufhört, da man sonst damit nicht mehr arbeiten könnte. Wenn jede Winzigänderung immer sofort ein komplettes Neuberechnen aller Modelle auslösen würde, wäre die DIVA ziemlich lahm. Man muss hier auch unterscheiden zwischen Modellaktualisierung (Bohrlöcher nachziehen) und Abhängigkeitsauflösung. Das deine Schraube, die eigentlich meines Wissens über iMates in der Bohrung hängt, mit dem Blech wandert klingt merkwürdig. Hast du an den Abhängigkeiten geändert?
Der Schraubengenerator erzeugt an der gewählten Position im Bauteil einen Skizzenpunkt ohne jegliche Abhängigkeiten. Vermutlich transformiert er über eine Matrix die im Dialog gewählten 3D-Koordinaten des Punktes in der Baugruppe in das Bauteil. Da liegt der Punkt dann und wird ein Bohrungszentrum. Ändert sich das Modell, kann das Bohrungszentrum nicht mitwandern, da es keine Abhängigkeit hat. Das Editieren über den Konstruktions-Assi erzeugt vermutlich im Hintergrund die Koordinaten des Skizzenpunktes neu und deshalb "hüpft" die Bohrung anschließend an die richtige Stelle.
Mir ist keine Option bekannt, die hier alles automatisch macht. Mit rechter Maustaste auf die Schraubverbindung und unter "Komponente" --> "Manuelles Auflösen" spart man sich zumindest den Dialog öffnen zu müssen. Oder man klimpert sich eben 3 Zeilen ilogic-Code zusammen, die das per Klick erledigt.
Code:
Option Explicit On Dim oApp As Inventor.Application = ThisApplication
If Not oApp.ActiveDocumentType = kAssemblyDocumentObject Then
Call MsgBox("Funktion nur in Baugruppen verfügbar.", vbCritical, "Schraubverindungen aktualisieren")
Exit Sub
End If
Dim oAssDoc As AssemblyDocument = oApp.ActiveDocument
Dim oAttrMan As AttributeManager = oAssDoc.AttributeManager
Dim oObjColl As ObjectCollection = oAttrMan.FindObjects("FDesign")
Dim oCD As ControlDefinition = oApp.CommandManager.ControlDefinitions.Item("FDSolveManual")
Dim oObj As Object
For Each oObj In oObjColl
If oObj.Type = kComponentOccurrenceObject Then
oAssDoc.SelectSet.Clear
Call oAssDoc.SelectSet.Select(oObj)
Call oCD.Execute
End If
Next
------------------
MfG
Ralf
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP