Mit VBA Selbstreferenzen zusammen schieben


 Produkt(e):MicroStation
 Version(en):08.11.09.578
 Umgebung:Windows 8
 Produktbereich:Programmierung
 Produktunterbereich:VBA

 

Hintergrundinformation

Beim Referenzieren von Modellen oder durch späteres Editieren kann es leicht passieren, dass die Position des Mastermodells und der jeweiligen Referenzen weit auseinander liegen.
Daher wäre es wünschenswert, die Referenzen so dicht wie möglich an die Position des Mastermodells zu schieben.

Erforderliche Schritte

Es bietet sich an dafür, pauschal mit Hilfe von VBA die Referenzen in die Nähe des Mastermodells zu schieben.
Um dies gleich für alle Modelle zu erledigen, kann man in 2 verschachtelten Schleifen jeweils alle an einem Modell angehängten Referenzen an den Ursprungspunkt des Mastermodells schieben.
Um den Wert der Verschiebung zu berechnen, könnte man jweils von den Ausmaßen des Mastermodells und der Referenzen ausgehen und die Referenzen so schieben, dass die linke untere Ecke der Referenz auf die linke untere Ecke des Mastermodells geschoben wird.

Das folgende kleine Beispiel zeigt einen solchen möglichen Ansatz:

Sub move_refs()
Dim rgMod As Range3d
Dim rgAtt As Range3d
Dim oAtt As Attachment
Dim oMod As ModelReference
For Each oMod In ActiveDesignFile.Models
    oMod.Activate
    rgMod = oMod.Range(False)
    For Each oAtt In ActiveModelReference.Attachments
        rgAtt = oAtt.Range(False)
        oAtt.Move Point3dFromXYZ(-(rgAtt.Low.x - rgMod.Low.x), -(rgAtt.Low.y - rgMod.Low.y), -(rgAtt.Low.Z - rgMod.Low.Z)), False
        oAtt.Rewrite
    Next oAtt
Next oMod
End Sub


 Ursprünglicher Autor:Artur Goldsweer