private void button1_Click(object sender, EventArgs e) { try { TransformationPlane currentTransformationPlane = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); Tekla.Structures.Model.UI.Picker picker = new Tekla.Structures.Model.UI.Picker(); Tekla.Structures.Model.ModelObject modelObject = picker.PickObject(Tekla.Structures.Model.UI.Picker.PickObjectEnum.PICK_ONE_PART); ArrayList array = new ArrayList(); array = picker.PickPoints(Tekla.Structures.Model.UI.Picker.PickPointEnum.PICK_TWO_POINTS, ""); Tekla.Structures.Model.Part beam = (Tekla.Structures.Model.Part)modelObject; Phase phase = new Phase(); beam.GetPhase(out phase); Tekla.Structures.Geometry3d.Point point1 = (Tekla.Structures.Geometry3d.Point)array[0]; Tekla.Structures.Geometry3d.Point point2 = (Tekla.Structures.Geometry3d.Point)array[1]; double offset = 0; double spacing = 0; double centres = 0; double.TryParse(textBox1.Text, out offset); double.TryParse(textBox2.Text, out spacing); double.TryParse(textBox3.Text, out centres); Tekla.Structures.Geometry3d.LineSegment lineSegment = new Tekla.Structures.Geometry3d.LineSegment(point1, point2); double count = (lineSegment.Length() - offset - 15) / spacing; count = Math.Truncate(count); if (checkBox1.Checked) { ArrayList PartDblRepPropNames = new ArrayList(); PartDblRepPropNames.Add("PROFILE.WIDTH"); Hashtable dblProps = new Hashtable(); beam.GetDoubleReportProperties(PartDblRepPropNames, ref dblProps); double length = (double)dblProps["PROFILE.WIDTH"]; if (length < 171) { MessageBox.Show("Warning: Flange to small"); } BoltXYList staggeredBolt = new BoltXYList(); staggeredBolt.FirstPosition = point1; staggeredBolt.SecondPosition = point2; staggeredBolt.PartToBoltTo = beam; staggeredBolt.PartToBeBolted = beam; staggeredBolt.BoltSize = 19.05; staggeredBolt.Tolerance = 2; staggeredBolt.BoltStandard = "NELSON"; staggeredBolt.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_WORKSHOP; staggeredBolt.CutLength = 100; staggeredBolt.Length = 100; staggeredBolt.ExtraLength = 100; staggeredBolt.ThreadInMaterial = BoltGroup.BoltThreadInMaterialEnum.THREAD_IN_MATERIAL_YES; staggeredBolt.Position.Depth = Position.DepthEnum.MIDDLE; staggeredBolt.Position.Plane = Position.PlaneEnum.MIDDLE; staggeredBolt.Position.Rotation = Position.RotationEnum.FRONT; staggeredBolt.Bolt = true; staggeredBolt.Washer1 = staggeredBolt.Washer2 = staggeredBolt.Washer3 = staggeredBolt.Nut1 = staggeredBolt.Nut2 = false; staggeredBolt.Hole1 = staggeredBolt.Hole2 = staggeredBolt.Hole3 = staggeredBolt.Hole4 = staggeredBolt.Hole5 = false; staggeredBolt.StartPointOffset.Dx = offset; staggeredBolt.AddBoltDistX(0); staggeredBolt.AddBoltDistY(centres / 2); int side = 1; for (int i = 1; i <= count; i++) { side = side * -1; staggeredBolt.AddBoltDistX(i * spacing); staggeredBolt.AddBoltDistY(side * (centres / 2)); } staggeredBolt.Insert(); staggeredBolt.SetPhase(phase); staggeredBolt.Modify(); } if (!checkBox1.Checked) { BoltArray bolt = new BoltArray(); bolt.FirstPosition = point1; bolt.SecondPosition = point2; bolt.PartToBoltTo = beam; bolt.PartToBeBolted = beam; bolt.BoltSize = 19.05; bolt.Tolerance = 2; bolt.BoltStandard = "NELSON"; bolt.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_WORKSHOP; bolt.CutLength = 100; bolt.Length = 100; bolt.ExtraLength = 100; bolt.ThreadInMaterial = BoltGroup.BoltThreadInMaterialEnum.THREAD_IN_MATERIAL_YES; bolt.Position.Depth = Position.DepthEnum.MIDDLE; bolt.Position.Plane = Position.PlaneEnum.MIDDLE; bolt.Position.Rotation = Position.RotationEnum.FRONT; bolt.Bolt = true; bolt.Washer1 = bolt.Washer2 = bolt.Washer3 = bolt.Nut1 = bolt.Nut2 = false; bolt.Hole1 = bolt.Hole2 = bolt.Hole3 = bolt.Hole4 = bolt.Hole5 = false; bolt.StartPointOffset.Dx = offset; bolt.AddBoltDistX(0); bolt.AddBoltDistY(centres); for (int i = 1; i <= count; i++) { bolt.AddBoltDistX(spacing); } bolt.Insert(); bolt.SetPhase(phase); bolt.Modify(); } model.GetWorkPlaneHandler().SetCurrentTransformationPlane(currentTransformationPlane); model.CommitChanges(); } catch { } }