private static void changeCut(TSM.BooleanPart currentBoolean) { TSM.Part cutPart = currentBoolean.OperativePart as TSM.Part; double minCutZ = findMinimum(cutPart); TSM.Part realPart = currentBoolean.Father as TSM.Part; double minPartZ = findMinimum(realPart); double delta = minPartZ - minCutZ; setCutPoints(cutPart, delta); }
private static void changePartToSubAssembly(TSM.Assembly assembly, ArrayList wrongParts, Tekla.Technology.Akit.IScript akit) { TSM.UI.ModelObjectSelector selector = new TSM.UI.ModelObjectSelector(); selector.Select(wrongParts); akit.Callback("acmdRemoveFromAssemblyActionCB", "", "View_01 window_1"); //assembly.Modify(); selector = new TSM.UI.ModelObjectSelector(); TSM.ModelObjectEnumerator selectionEnum = selector.GetSelectedObjects(); while (selectionEnum.MoveNext()) { if (selectionEnum.Current is TSM.Part) { TSM.Part newPart = selectionEnum.Current as TSM.Part; TSM.Assembly partNewAssembly = newPart.GetAssembly() as TSM.Assembly; ArrayList currentSelection = new ArrayList(); currentSelection.Add(assembly); selector.Select(currentSelection); TSM.ModelObjectEnumerator selectionEnum2 = selector.GetSelectedObjects(); while (selectionEnum2.MoveNext()) { if (selectionEnum2.Current is TSM.Assembly) { TSM.Assembly newAssembly = selectionEnum2.Current as TSM.Assembly; newAssembly.Add(partNewAssembly); newAssembly.Modify(); } } } } foreach (TSM.Part part in wrongParts) { TSM.Assembly newAssembly = part.GetAssembly() as TSM.Assembly; removeAssemblyPropertys(newAssembly, akit); } }
private static double findMinimum(TSM.Part current) { double min = Double.MaxValue; if (current is TSM.ContourPlate) { TSM.ContourPlate currentCP = current as TSM.ContourPlate; foreach (Point cur in currentCP.Contour.ContourPoints) { if (min > cur.Z) { min = cur.Z; } } } else if (current is TSM.Beam) { TSM.Beam currentBeam = current as TSM.Beam; min = Math.Min(currentBeam.StartPoint.Z, currentBeam.EndPoint.Z); } return min; }
private static ArrayList findWrongParts(List<string> ignoreClasses, TSM.Assembly assembly) { TSM.Part mainPart = assembly.GetMainPart() as TSM.Part; ArrayList secondaryParts = new ArrayList(assembly.GetSecondaries()); ArrayList wrongParts = new ArrayList(); ignoreClasses.Add(mainPart.Class); foreach (TSM.Part currentPart in secondaryParts) { if (ignoreClasses.Contains(currentPart.Class) == false) { wrongParts.Add(currentPart); } } return wrongParts; }
private static void removeAssemblyPropertys(TSM.Assembly currentAssembly, Tekla.Technology.Akit.IScript akit) { ArrayList currentSelection = new ArrayList(); currentSelection.Add(currentAssembly); TSM.UI.ModelObjectSelector selector = new TSM.UI.ModelObjectSelector(); selector.Select(currentSelection); akit.Callback("acmd_display_selected_object_dialog", "", "View_01 window_1"); TSM.Part currentMainPart = currentAssembly.GetMainPart() as TSM.Part; if (!currentMainPart.Material.MaterialString.StartsWith("C")) { akit.ValueChange("steelassembly_1", "AssemblyPrefix", ""); akit.ValueChange("steelassembly_1", "AssemblyStartNumber", ""); akit.ValueChange("steelassembly_1", "AssemblyName", ""); akit.PushButton("modify_button", "steelassembly_1"); akit.PushButton("OK_button", "steelassembly_1"); } else { if (currentMainPart.CastUnitType == 0) { akit.ValueChange("precastassembly_1", "AssemblyPrefix", ""); akit.ValueChange("precastassembly_1", "AssemblyStartNumber", ""); akit.ValueChange("precastassembly_1", "AssemblyName", ""); akit.PushButton("modify_button", "precastassembly_1"); akit.PushButton("OK_button", "precastassembly_1"); } else { akit.ValueChange("insituassembly_1", "AssemblyPrefix", ""); akit.ValueChange("insituassembly_1", "AssemblyStartNumber", ""); akit.ValueChange("insituassembly_1", "AssemblyName", ""); akit.PushButton("modify_button", "insituassembly_1"); akit.PushButton("OK_button", "insituassembly_1"); } } }
private static List<TSM.Assembly> getSelectedAssemblys(TSM.ModelObjectEnumerator selectedObjects) { List<TSM.Assembly> selectedAssemblys = new List<TSM.Assembly>(); while (selectedObjects.MoveNext()) { if (selectedObjects.Current is TSM.Assembly) { selectedAssemblys.Add(selectedObjects.Current as TSM.Assembly); } } return selectedAssemblys; }
private static void setCutPoints(TSM.Part current, double delta) { if (current is TSM.ContourPlate) { TSM.ContourPlate currentCP = current as TSM.ContourPlate; foreach (Point cur in currentCP.Contour.ContourPoints) { cur.Z += delta; } if (delta <= 0) { if (currentCP.Position.DepthOffset >= 0) { currentCP.Position.Depth = Position.DepthEnum.FRONT; } else { currentCP.Position.Depth = Position.DepthEnum.BEHIND; } } else { if (currentCP.Position.DepthOffset >= 0) { currentCP.Position.Depth = Position.DepthEnum.BEHIND; } else { currentCP.Position.Depth = Position.DepthEnum.FRONT; } } currentCP.Position.DepthOffset = -2.5; } current.Modify(); }