Produkt(e): | MicroStation | ||
Version(en): | 08.11.09.578 | ||
Umgebung: | Windows 8 | ||
Produktbereich: | Programmierung | ||
Produktunterbereich: | VBA |
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.
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 |