static TeklaLibrary() { _currentModel = new Model(); _currentPlane = GetWorkPlane(); _picker = new TSMUI.Picker(); _progressBar = new ProgressBar(); }
public void CK10_SetWorkplane() { // Reset the workplane back to global Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); Picker Picker = new Picker(); Part PickedPart = null; try { PickedPart = Picker.PickObject(Picker.PickObjectEnum.PICK_ONE_PART) as Part; } catch { PickedPart = null; } if (PickedPart != null) { // Change the workplane to the coordinate system of the plate var psk = new TransformationPlane(PickedPart.GetCoordinateSystem()); Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(psk); // Show the plate in the model and the workplane change Model.CommitChanges(); // Draw Positive Z axis. GraphicsDrawer Drawer = new GraphicsDrawer(); var red = new Color(1, 0, 0); Drawer.DrawLineSegment(new T3D.Point(0, 0, 0), new T3D.Point(0, 0, 500), red); } }
private TSG.OBB CreateOrientedBoundingBox(TSM.Part part) { TSG.OBB obb = null; if (part != null) { WorkPlaneHandler workPlaneHandler = model.GetWorkPlaneHandler(); TransformationPlane originalTransformationPlane = workPlaneHandler.GetCurrentTransformationPlane(); Solid solid = part.GetSolid(); TSG.Point minPointInCurrentPlane = solid.MinimumPoint; TSG.Point maxPointInCurrentPlane = solid.MaximumPoint; TSG.Point centerPoint = CalculateCenterPoint(minPointInCurrentPlane, maxPointInCurrentPlane); TSG.CoordinateSystem coordSys = part.GetCoordinateSystem(); TransformationPlane localTransformationPlane = new TransformationPlane(coordSys); workPlaneHandler.SetCurrentTransformationPlane(localTransformationPlane); solid = part.GetSolid(); TSG.Point minPoint = solid.MinimumPoint; TSG.Point maxPoint = solid.MaximumPoint; double extent0 = (maxPoint.X - minPoint.X) / 2; double extent1 = (maxPoint.Y - minPoint.Y) / 2; double extent2 = (maxPoint.Z - minPoint.Z) / 2; workPlaneHandler.SetCurrentTransformationPlane(originalTransformationPlane); obb = new TSG.OBB(centerPoint, coordSys.AxisX, coordSys.AxisY, coordSys.AxisX.Cross(coordSys.AxisY), extent0, extent1, extent2); } return(obb); }
public static void Run(Tekla.Technology.Akit.IScript akit) { try { Model model = new Model(); TransformationPlane transformationplane = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); ModelObjectEnumerator modelObjectEnum = model.GetModelObjectSelector().GetSelectedObjects(); if (modelObjectEnum.GetSize() == 1) { while (modelObjectEnum.MoveNext()) { if (modelObjectEnum.Current is Tekla.Structures.Model.Part) { Tekla.Structures.Model.Part part = modelObjectEnum.Current as Tekla.Structures.Model.Part; double level = 0; part.GetReportProperty("TOP_LEVEL_UNFORMATTED", ref level); akit.CommandStart("ail_create_basic_view", "", "main_frame"); akit.ValueChange("Modelling create view", "v1_coordinate", level.ToString("F02")); akit.PushButton("v1_create", "Modelling create view"); } } } model.GetWorkPlaneHandler().SetCurrentTransformationPlane(transformationplane); } catch { } }
private void distance_Click(object sender, EventArgs e) { Picker picker = new Picker(); Part part = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT) as Part; Beam beam = part as Beam; if (beam != null) { var currentPlane = SetPlaneAndReturnOriginal(beam); //cs_net_lib.UI.DrawPlane(beam.GetCoordinateSystem(), new TSM.UI.Color(0.5, 1, 1), // new TSM.UI.Color(1, 0.5, 1), "Вася"); Point px = new Point(-beam.EndPoint.X + beam.StartPoint.X, beam.EndPoint.Y - beam.StartPoint.Y, beam.EndPoint.Z - beam.StartPoint.Z); Vector vZ; vZ = new Vector(-px.Y, px.X, px.Z); var localPlane = new TransformationPlane(beam.EndPoint, new Vector(px), vZ); CoordinateSystem localCoor = new CoordinateSystem(beam.EndPoint, new Vector(px), vZ); cs_net_lib.UI.DrawPlane(beam.GetCoordinateSystem()); cs_net_lib.UI.DrawPlane(localCoor); teklaModel.GetWorkPlaneHandler().SetCurrentTransformationPlane(currentPlane); } ContourPlate plate = part as ContourPlate; if (plate != null) { //cs_net_lib.UI.DrawPlane(beam.GetCoordinateSystem(), new TSM.UI.Color(0.5, 1, 1), // new TSM.UI.Color(1, 0.5, 1), "Вася"); cs_net_lib.UI.DrawPlane(plate.GetCoordinateSystem()); } string tesGid = null; }
/// <summary> /// Creates an instance of <see cref="OBB"/> wrapping given part object. /// </summary> /// <param name="part">Part-type object.</param> /// <returns>Part-oriented bounding box.</returns> public static OBB GetOrientedBoundingBox(this Part part) { var wph = new Model.Model().GetWorkPlaneHandler(); var coordSys = part.GetCoordinateSystem(); var tp = new TransformationPlane(coordSys); wph.SetCurrentTransformationPlane(tp); var solid = part.GetSolid(); var centerPoint = new Point { X = (solid.MaximumPoint.X + solid.MinimumPoint.X) / 2.0, Y = (solid.MaximumPoint.Y + solid.MinimumPoint.Y) / 2.0, Z = (solid.MaximumPoint.Z + solid.MinimumPoint.Z) / 2.0 }; var extents = new double[] { Math.Abs((solid.MaximumPoint.X - solid.MinimumPoint.X) / 2.0), Math.Abs((solid.MaximumPoint.Y - solid.MinimumPoint.Y) / 2.0), Math.Abs((solid.MaximumPoint.Z - solid.MinimumPoint.Z) / 2.0) }; centerPoint = tp.TransformationMatrixToGlobal.Transform(centerPoint); wph.SetCurrentTransformationPlane(new TransformationPlane()); var vectors = new Vector[3]; vectors[0] = coordSys.AxisX; vectors[1] = coordSys.AxisY; vectors[2] = Vector.Cross(vectors[0], vectors[1]); return(new OBB(centerPoint, vectors, extents)); }
static void Main() { Model myModel = new Model(); TransformationPlane savedPlane = myModel.GetWorkPlaneHandler().GetCurrentTransformationPlane(); myModel.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); Picker myPicker = new Picker(); Part myPart = myPicker.PickObject(Picker.PickObjectEnum.PICK_ONE_PART, "Pick Part") as Part; if (myPart != null) { Solid mySolid = myPart.GetSolid(); ArrayList intersectionPoints = PartCenterLineIntersections(myPart, mySolid); Dictionary <Plane, Face> partPlanes = GetGeometricPlanes(mySolid); foreach (Point intersectPoint in intersectionPoints) { DrawFaceOfIntersectionPoint(intersectPoint, partPlanes); } } myModel.GetWorkPlaneHandler().SetCurrentTransformationPlane(savedPlane); }
private void button1_Click(object sender, EventArgs e) { if (!validarMuroSeleccionado()) { return; } model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); TransformationPlane currentTP = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); T3D.CoordinateSystem coordenadasMuro = muro.GetCoordinateSystem(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane(coordenadasMuro)); ParametrosPanel p = new ParametrosPanel(muro); p.dx = Double.Parse(this.txtDx.Text); p.dy = Double.Parse(this.txtDz.Text); p.adicionalDerecha = Double.Parse(this.txtAddDer.Text); p.adicionalIzquierda = Double.Parse(this.txtAdIzq.Text); p.adicionalSuperior = Double.Parse(this.txtAdicionalSup.Text); p.adicionalInferior = Double.Parse(this.txtAdicionalInf.Text); p.diametroBarras = 7.0; p.diametroDiagonal = 4.0; PanelMoldar panel = new PanelMoldar(p); panel.fabricar(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(currentTP); model.CommitChanges(); }
//Shows the beam's extremes in the coordinates of the reference model object private void ShowExtremesInOtherObjectCoordinates(ModelObject ReferenceObject, Beam Beam) { //Set the transformation plane to use the beam's coordinate system in order to get the beam's extremes in the local coordinate system TransformationPlane CurrentTP = _Model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); _Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane(Beam.GetCoordinateSystem())); //Update the beam's extremes to the new transformation plane Beam.Select(); T3D.Point LocalStartPoint = Beam.StartPoint; T3D.Point LocalEndPoint = Beam.EndPoint; //Get the beam's extremes in the reference object's coordinates Matrix TransformationMatrix = MatrixFactory.ByCoordinateSystems(Beam.GetCoordinateSystem(), ReferenceObject.GetCoordinateSystem()); //Transform the extreme points to the new coordinate system T3D.Point BeamStartPoint = TransformationMatrix.Transform(LocalStartPoint); T3D.Point BeamEndPoint = TransformationMatrix.Transform(LocalEndPoint); _Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(CurrentTP); //Transform the points where to show the texts to current work plane coordinate system Matrix TransformationToCurrent = MatrixFactory.FromCoordinateSystem(ReferenceObject.GetCoordinateSystem()); T3D.Point BeamStartPointInCurrent = TransformationToCurrent.Transform(BeamStartPoint); T3D.Point BeamEndPointInCurrent = TransformationToCurrent.Transform(BeamEndPoint); //Display results DrawCoordinateSytem(ReferenceObject.GetCoordinateSystem()); GraphicsDrawer.DrawText(BeamStartPointInCurrent, FormatPointCoordinates(BeamStartPoint), TextColor); GraphicsDrawer.DrawText(BeamEndPointInCurrent, FormatPointCoordinates(BeamEndPoint), TextColor); }
public static dynamic GetTSObject(TransformationPlane dynObject) { if (dynObject is null) { return(null); } return(dynObject.teklaObject); }
private void WriteGeometry(XmlTextWriter writer, Part part, Model myModel) { if (part != null) { WorkPlaneHandler planeHandler = myModel.GetWorkPlaneHandler(); TransformationPlane CurrentPlane = planeHandler.GetCurrentTransformationPlane(); writer.WriteStartElement("Part", null); writer.WriteAttributeString("id", part.Identifier.ID.ToString()); writer.WriteElementString("name", part.Name); writer.WriteElementString("material", part.Material.MaterialString); writer.WriteStartElement("profile", null); writer.WriteElementString("name", part.Profile.ProfileString); writer.WriteEndElement(); Solid solid = part.GetSolid() as Solid; FaceEnumerator myFaceEnum = solid.GetFaceEnumerator(); writer.WriteStartElement("Solid", null); while (myFaceEnum.MoveNext()) { Face myFace = myFaceEnum.Current as Face; if (myFace != null) { writer.WriteStartElement("Face", null); LoopEnumerator myLoopEnum = myFace.GetLoopEnumerator(); while (myLoopEnum.MoveNext()) { Loop myLoop = myLoopEnum.Current as Loop; if (myLoop != null) { writer.WriteStartElement("Loop", null); VertexEnumerator myVertexEnum = myLoop.GetVertexEnumerator() as VertexEnumerator; while (myVertexEnum.MoveNext()) { Point myVertex = myVertexEnum.Current as Point; if (myVertex != null) { writer.WriteStartElement("Vertex", null); writer.WriteElementString("X", myVertex.X.ToString("#.##")); writer.WriteElementString("Y", myVertex.Y.ToString("#.##")); writer.WriteElementString("Z", myVertex.Z.ToString("#.##")); writer.WriteEndElement(); // End Vertex } } writer.WriteEndElement(); // End Loop } } writer.WriteEndElement(); // End Face } } writer.WriteEndElement(); // End Solid planeHandler.SetCurrentTransformationPlane(CurrentPlane); writer.WriteEndElement(); } }
public void CK10_ApplyFitting() { // Current Workplane. Reminder how the user had the model before you did stuff. TransformationPlane CurrentPlane = Model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); Picker Picker = new Picker(); Beam PickedBeam = null; try { PickedBeam = (Beam)Picker.PickObject(Picker.PickObjectEnum.PICK_ONE_PART); } catch { PickedBeam = null; } if (PickedBeam != null) { // Change the workplane to the coordinate system of the Beam var psk = new TransformationPlane(PickedBeam.GetCoordinateSystem()); Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(psk); // Applyfitting Fitting BeamFitting = new Fitting(); BeamFitting.Father = PickedBeam; Plane FittingPlane = new Plane(); FittingPlane.Origin = new T3D.Point(500, 0, 0); FittingPlane.AxisX = new T3D.Vector(0, 0, 500); FittingPlane.AxisY = new T3D.Vector(0, -500, 0); BeamFitting.Plane = FittingPlane; BeamFitting.Insert(); // Apply Line Cut CutPlane BeamLineCut = new CutPlane(); BeamLineCut.Father = PickedBeam; Plane BeamCutPlane = new Plane(); BeamCutPlane.Origin = new T3D.Point(200, 0, 0); BeamCutPlane.AxisX = new T3D.Vector(0, 0, 500); // Changing the positive vs. negative value here determines which direction // the line cut will take away material where as fitting looks at which end // of beam it is closest to figure out how to cut. BeamCutPlane.AxisX = new T3D.Vector(0, -500, 0); BeamLineCut.Plane = BeamCutPlane; BeamLineCut.Insert(); // SetWorkplane back to what user had before Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(CurrentPlane); // Show the plate in the model and the workplane change Model.CommitChanges(); // Draw Positive Z axis. GraphicsDrawer Drawer = new GraphicsDrawer(); var red = new Color(1, 0, 0); Drawer.DrawLineSegment(new T3D.Point(0, 0, 0), new T3D.Point(0, 0, 500), red); } Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); }
public void Initialyze() { _TS.Init(); Model = _TS.GetModel(); if (!Model.GetConnectionStatus()) { throw new Exception("Tekla Model not connected!"); } ModelPlane = _TS.GetModelPlane(); TmpPlane = _TS.GetTmpPlane(); }
private void btnApplyFitting_Click(object sender, EventArgs e) { // Current workplane. Remember how the user had the model before you changed things. TransformationPlane currentPlane = currentModel.GetWorkPlaneHandler().GetCurrentTransformationPlane(); TSMUI.Picker myPicker = new TSMUI.Picker(); Beam currentBeam = null; try { currentBeam = myPicker.PickObject(TSMUI.Picker.PickObjectEnum.PICK_ONE_PART) as Beam; } catch { currentBeam = null; } if (currentBeam != null) { // Change the workplane to the coordinate system of the beam. currentModel.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane(currentBeam.GetCoordinateSystem())); // Apply fitting Fitting beamFitting = new Fitting(); beamFitting.Father = currentBeam; Plane fittingPlane = new Plane(); fittingPlane.Origin = new T3D.Point(500, 0, 0); fittingPlane.AxisX = new T3D.Vector(0, 0, 500); fittingPlane.AxisY = new T3D.Vector(0, 500, 0); beamFitting.Plane = fittingPlane; beamFitting.Insert(); // Apply cut line CutPlane beamLineCut = new CutPlane(); beamLineCut.Father = currentBeam; Plane beamCutPlane = new Plane(); beamCutPlane.Origin = new T3D.Point(2000, 0, 0); beamCutPlane.AxisX = new T3D.Vector(0, 0, 500); // Changing positive vs. negative value here determines which direction // the line cut will take away material where as fittin glooks at which end // of the beam it is closest to to figure out how to cut beamCutPlane.AxisY = new T3D.Vector(0, -500, 0); beamLineCut.Plane = beamCutPlane; beamLineCut.Insert(); // Setworkplane back to what user had before currentModel.GetWorkPlaneHandler().SetCurrentTransformationPlane(currentPlane); // Show the fitting in the model but the user will never see the workplane change currentModel.CommitChanges(); } }
private static TransformationPlane setWorkPlane(Point x, Vector X, Vector Y) { CoordinateSystem XZ = new CoordinateSystem(); //Define origin and two vectors to set the UCS to the XZ plane XZ.Origin = x; XZ.AxisX = X; XZ.AxisY = Y; TransformationPlane XZ_Plane = new TransformationPlane(XZ); return(XZ_Plane); }
public BoltArray CreateBolt(Part part1, Part part2) { int bolt_lng = 33; if (part1 != null && part2 != null) { // Change the workplane to the coordinate system of the plate var cs = part1.GetCoordinateSystem(); var psk = new TransformationPlane(cs); Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(psk); // BoltGroupCode BoltArray BoltArray = new BoltArray(); BoltArray.BoltSize = 20; BoltArray.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_WORKSHOP; BoltArray.BoltStandard = "7798"; BoltArray.CutLength = 100; // Add to specings of bolts in the X direction BoltArray.AddBoltDistX(76.2); BoltArray.AddBoltDistX(76.2); // Only one row of bolts BoltArray.AddBoltDistY(0); // Edge disctance from first point picked to first bolt in x direction BoltArray.StartPointOffset.Dx = 38.1; //Front lines up nicely with x/y position in current workplane. BoltArray.Position.Rotation = Position.RotationEnum.FRONT; BoltArray.PartToBoltTo = part1; BoltArray.PartToBeBolted = part2; BoltArray.FirstPosition = new Point(0, 100, 0); BoltArray.SecondPosition = new Point(1000, 250, 0); PointShow(BoltArray.FirstPosition, "First"); PointShow(BoltArray.SecondPosition, "2nd"); if (BoltArray.Insert()) { // Draw X Axis of bolt group. Line(BoltArray.FirstPosition, BoltArray.SecondPosition); // Set WorkPlane back to what user had before Model.CommitChanges(); return(BoltArray); } else { Tekla.Structures.Model.Operations.Operation .DisplayPrompt("Bolt not done"); } } return(null); }
/// <summary> /// Set Workplane to the given plane and refresh the objects passed /// </summary> /// <param name="plane"></param> /// <param name="modelObjects"></param> public static void SetWorkPlane(TransformationPlane plane, params ModelObject[] modelObjects) { _currentModel.GetWorkPlaneHandler() .SetCurrentTransformationPlane(plane); foreach (var mObject in modelObjects) { if (mObject is null) { continue; } mObject.Select(); } }
public GeometricPlane PickFace() { Picker picker = new Picker(); PickInput input = picker.PickFace("Pick a FACE"); IEnumerator enumerator = input.GetEnumerator(); List <T3D.Point> points = new List <T3D.Point>(); while (enumerator.MoveNext()) { InputItem item = enumerator.Current as InputItem; if (item.GetInputType() == InputItem.InputTypeEnum.INPUT_POLYGON) { ArrayList alist = item.GetData() as ArrayList; // int counter = 1; foreach (T3D.Point p in alist) { points.Add(p); // Txt(p, counter.ToString()); // counter++; } } } T3D.Point origin = points[1]; T3D.Vector axisX = new T3D.Vector(points[0] - points[1]); T3D.Vector axisY = new T3D.Vector(points[2] - points[1]); GeometricPlane geomPlane = new GeometricPlane(origin, axisX, axisY); Model model = new Model(); WorkPlaneHandler workPlane = model.GetWorkPlaneHandler(); TransformationPlane currentPlane = workPlane.GetCurrentTransformationPlane(); Matrix matrix = currentPlane.TransformationMatrixToLocal; T3D.Point p1 = matrix.Transform(geomPlane.Origin); T3D.Point p2 = matrix.Transform(geomPlane.Origin + geomPlane.Normal); geomPlane.Origin = p1; geomPlane.Normal = new T3D.Vector(p2 - p1); T3D.Point dummy = null; int counter = 1; foreach (T3D.Point pt in points) { dummy = matrix.Transform(pt); Txt(dummy, counter.ToString()); counter++; } return(geomPlane); }
public void conver_coordinates_center_point(t3d.Point center, t3d.Point point1, out t3d.Point center1, out t3d.Point point2) { TransformationPlane transformationPlane = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); t3d.Vector vector = new Vector(-center.X + point1.X, -center.Y + point1.Y, -center.Z + point1.Z); t3d.Vector vectory = vector.Cross(new Vector(0, 0, -1)); vector.Normalize(); vectory.Normalize(); TransformationPlane transformation = new TransformationPlane(center, vector, vectory); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(transformation); center1 = transformation.TransformationMatrixToLocal.Transform (transformationPlane.TransformationMatrixToGlobal.Transform(center)); point2 = transformation.TransformationMatrixToLocal.Transform (transformationPlane.TransformationMatrixToGlobal.Transform(point1)); }
private void btnInquire_Click(object sender, EventArgs e) { try { akit.ValueChange("main_frame", "depth_position_om", "3"); Model model = new Model(); TransformationPlane transformationplane = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); Tekla.Structures.Model.UI.Picker picker = new Tekla.Structures.Model.UI.Picker(); Tekla.Structures.Geometry3d.Point point = picker.PickPoint(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(transformationplane); //MessageBox.Show("X = " + point.X.ToString("F02") + "\nY = " + point.Y.ToString("F02") + "\nZ = " + point.Z.ToString("F02")); textBox1.Text = point.X.ToString("F02"); textBox2.Text = point.Y.ToString("F02"); textBox3.Text = point.Z.ToString("F02"); } catch { } }
public void ReperShow(CoordinateSystem beamCoordinateSystem, int lng = 1000) { var trPlane = new TransformationPlane(); Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(trPlane); GraphicsDrawer GraphicsDrawer = new GraphicsDrawer(); Color _color = new Color(1, 0, 0); Point p = beamCoordinateSystem.Origin; Vector aX = beamCoordinateSystem.AxisX.GetNormal(); Vector aY = beamCoordinateSystem.AxisY.GetNormal(); Vector aZ = Vector.Cross(aX, aY); Point pX = PointAddVector(p, aX, lng); Point pY = PointAddVector(p, aY, lng); Point pZ = PointAddVector(p, aZ, lng); GraphicsDrawer.DrawLineSegment(p, pX, _color); Txt(pX, "X"); GraphicsDrawer.DrawLineSegment(p, pY, _color); Txt(pY, "Y"); GraphicsDrawer.DrawLineSegment(p, pZ, _color); Txt(pZ, "Z"); }
public static void Run(Tekla.Technology.Akit.IScript akit) { try { akit.ValueChange("main_frame", "depth_position_om", "3"); akit.CommandStart("ail_create_basic_view", "", "main_frame"); Model model = new Model(); TransformationPlane transformationplane = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); Tekla.Structures.Model.UI.Picker picker = new Tekla.Structures.Model.UI.Picker(); Tekla.Structures.Geometry3d.Point point = picker.PickPoint(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(transformationplane); akit.ValueChange("Modelling create view", "v1_coordinate", point.Z.ToString("F02")); akit.PushButton("v1_create", "Modelling create view"); //akit.PushButton("v1_create_cancel", "Modelling create view"); } catch { } }
private void WriteBolts(XmlTextWriter writer, Part part, Model myModel) { if (part != null) { ModelObjectEnumerator myBoltEnum = part.GetBolts(); while (myBoltEnum.MoveNext()) { BoltArray myBolt = myBoltEnum.Current as BoltArray; writer.WriteStartElement("Bolt", null); writer.WriteAttributeString("id", myBolt.Identifier.ID.ToString()); WorkPlaneHandler planeHandler = myModel.GetWorkPlaneHandler(); TransformationPlane currentPlane = planeHandler.GetCurrentTransformationPlane(); CoordinateSystem bCoordSys = myBolt.GetCoordinateSystem(); TransformationPlane BoltPlane = new TransformationPlane(bCoordSys); planeHandler.SetCurrentTransformationPlane(BoltPlane); myBolt.Select(); CoordinateSystem bCoordSys1 = myBolt.GetCoordinateSystem(); WriteCoordSys(writer, bCoordSys1); writer.WriteStartElement("BoltPositions", null); foreach (Point p in myBolt.BoltPositions) { writer.WriteElementString("Bolt position", p.ToString()); } writer.WriteEndElement(); writer.WriteEndElement(); planeHandler.SetCurrentTransformationPlane(currentPlane); } } }
public List <LineSegment> new_get_lower_edge(Part Gpart) { List <LineSegment> lineSegmentList = new List <LineSegment>(); Point point1 = new Point(); Point point2 = new Point(); Point point3 = new Point(); Point point4 = new Point(); Point point5 = new Point(); Tekla.Structures.Model.Solid solid = Gpart.GetSolid(Tekla.Structures.Model.Solid.SolidCreationTypeEnum.PLANECUTTED); EdgeEnumerator edgeEnumerator = solid.GetEdgeEnumerator(); Point maximumPoint = solid.MaximumPoint; Point minimumPoint = solid.MinimumPoint; TransformationPlane transformationPlane = this.myModel.GetWorkPlaneHandler().GetCurrentTransformationPlane(); Point point6 = transformationPlane.TransformationMatrixToGlobal.Transform(maximumPoint); Point point7 = transformationPlane.TransformationMatrixToGlobal.Transform(minimumPoint); if (point6.Z > point7.Z) { point3 = minimumPoint; } else if (point6.Z < point7.Z) { point3 = maximumPoint; } if (solid != null) { while (edgeEnumerator.MoveNext()) { Edge current = edgeEnumerator.Current as Edge; if (current.StartPoint.Z - current.EndPoint.Z == 0.0 && current.StartPoint.Z == point3.Z) { LineSegment lineSegment = new LineSegment(current.StartPoint, current.EndPoint); lineSegmentList.Add(lineSegment); } } } return(lineSegmentList); }
public static List <Point> GetColumnPoints( Tekla.Structures.Model.Model Model, Point ptStart, double firstLevel, double secondLevel) { TransformationPlane transformationPlane = Model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); Matrix transformationMatrixToLocal = transformationPlane.TransformationMatrixToLocal; Point point = transformationPlane.TransformationMatrixToGlobal.Transform(ptStart); Vector vector1 = new Vector(0.0, 0.0, firstLevel); Vector vector2 = new Vector(0.0, 0.0, secondLevel); point.Z = 0.0; Point p1 = point + (Point)vector1; Point p2 = point + (Point)vector2; return(new List <Point>() { transformationMatrixToLocal.Transform(p1), transformationMatrixToLocal.Transform(p2) }); }
public void CK10_Bolt() { // Current Workplane. Reminder how the user had the model before you did stuff. TransformationPlane CurrentPlane = Model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); Picker Picker = new Picker(); Part PickedFirstPart = null; Part PickedSecondPart = null; try { PickedFirstPart = (Part)Picker.PickObject(Picker.PickObjectEnum.PICK_ONE_PART); PickedSecondPart = (Part)Picker.PickObject(Picker.PickObjectEnum.PICK_ONE_PART); } catch (ArgumentException e) { MessageBox.Show($"Not Picked Exception {e}"); PickedFirstPart = null; PickedSecondPart = null; } ContourShow(PickedSecondPart); CreateBolt(PickedFirstPart, PickedSecondPart); }
public void CK08_CreatePlate() { ArrayList PickedPoints = null; Picker Picker = new Picker(); try { PickedPoints = Picker.PickPoints(Picker.PickPointEnum.PICK_POLYGON); } catch { PickedPoints = null; } if (PickedPoints != null) { ContourPlate Plate = new ContourPlate(); Plate.AssemblyNumber.Prefix = "P"; Plate.AssemblyNumber.StartNumber = 1; Plate.PartNumber.Prefix = "p"; Plate.PartNumber.StartNumber = 1; Plate.Name = "PLATE"; Plate.Profile.ProfileString = "PL25"; Plate.Material.MaterialString = "C245"; Plate.Finish = ""; Plate.Class = "1"; Plate.Position.Depth = Position.DepthEnum.FRONT; foreach (T3D.Point ThisPoint in PickedPoints) { var chamfer = new Chamfer(12.7, 12.7, Chamfer.ChamferTypeEnum.CHAMFER_LINE); var conturPoint = new ContourPoint(ThisPoint, chamfer); Plate.AddContourPoint(conturPoint); } if (!Plate.Insert()) { Tekla.Structures.Model.Operations.Operation.DisplayPrompt("Plate wasn't created."); } else { // Change the workplane to the coordinate system of the plate. var transformationPlane = new TransformationPlane(Plate.GetCoordinateSystem()); Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(transformationPlane); // Show the plate in the model and the workplane change. Model.CommitChanges(); // This gets the plate's coordinates and information in the current workplane. Plate.Select(); ReperShow(Plate.GetCoordinateSystem()); // Draw the coordinate of the plate in the model in the local coordinate system. GraphicsDrawer Drawer = new GraphicsDrawer(); foreach (ContourPoint ContourPoint in Plate.Contour.ContourPoints) { double x = ContourPoint.X, y = ContourPoint.Y, z = ContourPoint.Z; T3D.Point CornerPoint = new T3D.Point(x, y, z); PointXYZ(ContourPoint); //double ImperialValue = 25.4; //double XValue = Math.Round(CornerPoint.X / ImperialValue, 4); //double YValue = Math.Round(CornerPoint.Y / ImperialValue, 4); //double ZValue = Math.Round(CornerPoint.Z / ImperialValue, 4); //Drawer.DrawText(CornerPoint, "(" + XValue + "," + YValue + "," + ZValue + ")", new Color(1,0,0)); Drawer.DrawLineSegment(new LineSegment(new T3D.Point(0, 0, 0), new T3D.Point(0, 0, 500)), new Color(1, 0, 0)); } mw.Msg("На экране Tekla построена пластина по заданным точкам" + " и показаны координаты этих точек и репер ПСК. [OK]"); MessageBox.Show("Построена пластина."); mw.Msg(); } } }
private void InsertComponents(ModelObject mObj, List <TSM.Component> components) { TransformationPlane originalTransformationplane = null; WorkPlaneHandler wHandler = null; try { wHandler = model.GetWorkPlaneHandler(); originalTransformationplane = wHandler.GetCurrentTransformationPlane(); ComponentInput compInput = new ComponentInput(); Part fatherpart = mObj as Part; Assembly assembly = fatherpart.GetAssembly(); // Get the transformationplane from objects coordinate systems vectors and because objects coordinate system is not the same XY plane as of models, // so cross product needs to be made for the Y-axis TransformationPlane fatherpartsTransformationPlane = new TransformationPlane(fatherpart.GetCoordinateSystem().Origin, fatherpart.GetCoordinateSystem().AxisX, Vector.Cross(fatherpart.GetCoordinateSystem().AxisY, fatherpart.GetCoordinateSystem().AxisX)); lock (wHandler) { wHandler.SetCurrentTransformationPlane(fatherpartsTransformationPlane); } double minX = fatherpart.GetSolid().MinimumPoint.X; double minY = fatherpart.GetSolid().MinimumPoint.Y; double minZ = fatherpart.GetSolid().MinimumPoint.Z; double maxX = fatherpart.GetSolid().MaximumPoint.X; double maxY = fatherpart.GetSolid().MaximumPoint.Y; double maxZ = fatherpart.GetSolid().MaximumPoint.Z; bool changeDirection = false; if (data.Direction == "y-") { double temp = maxY; maxY = minY; minY = temp; changeDirection = true; } Solid s = fatherpart.GetSolid(); FaceEnumerator fEnum = s.GetFaceEnumerator(); StringBuilder sb = new StringBuilder(); while (fEnum.MoveNext()) { } Point p1 = null; Point p2 = null; List <Point> cutPartPoints = new List <Point>() { new Point(), new Point(), new Point(), new Point() }; ContourPlate cutpart = null; for (int i = 0; i < components.Count; i++) { cutpart = new ContourPlate(); cutpart.Name = "Leikkaus"; cutpart.Position.Depth = Position.DepthEnum.MIDDLE; cutpart.Position.Plane = Position.PlaneEnum.MIDDLE; cutpart.Class = BooleanPart.BooleanOperativeClassName; cutpart.Material.MaterialString = "Reikä"; cutpart.Profile.ProfileString = "PL135"; BooleanPart bPart = new BooleanPart(); compInput = new ComponentInput(); double[] variables; switch (i) { case 0: p1 = new Point(maxX - data.LeftShoeDist, 0, minZ); p2 = new Point(maxX - data.LeftShoeDist, maxY, minZ); variables = WallShoeUtils.GetComponentVariables(components[i]); if (variables[0] != 0) { AddWallShoeCut(variables, p1, minY, maxY, changeDirection, fatherpart); } break; case 1: p1 = new Point(minX + data.RightShoeDist, 0, minZ); p2 = new Point(minX + data.RightShoeDist, maxY, minZ); variables = WallShoeUtils.GetComponentVariables(components[i]); if (variables[0] != 0) { AddWallShoeCut(variables, p1, minY, maxY, changeDirection, fatherpart); } break; case 2: p1 = new Point(maxX - data.LeftBoltDist, 0, maxZ + data.LeftBoltOffset); p2 = new Point(maxX - data.LeftBoltDist, maxY, maxZ + data.LeftBoltOffset); break; case 3: p1 = new Point(minX + data.RightBoltDist, 0, maxZ + data.RightBoltOffset); sb.AppendLine(data.RightBoltDist + " " + data.RightBoltOffset); p2 = new Point(minX + data.RightBoltDist, maxY, maxZ + data.RightBoltOffset); break; } compInput.AddOneInputPosition(p1); compInput.AddOneInputPosition(p2); components[i].SetComponentInput(compInput); if (!components[i].Insert()) { TSM.Operations.Operation.DisplayPrompt("Komponentin " + i + " asettaminen epäonnistui!"); WriteLog("Komponentin " + i + " asettaminen epäonnistui!"); } } foreach (TSM.Component c in components) { assembly.Add(c); assembly.Modify(); } } catch (Exception ex) { WriteLog(ex.Message + "\n" + ex.StackTrace); } finally { lock (wHandler) { wHandler.SetCurrentTransformationPlane(originalTransformationplane); } } }
public override bool Run(List <InputDefinition> Input) { try { GetValuesFromDialog(); WorkPlaneHandler wph = Model.GetWorkPlaneHandler(); TransformationPlane tp = wph.GetCurrentTransformationPlane(); TransformationPlane tppart = null; BoltGroup bg = Model.SelectModelObject((Identifier)Input[0].GetInput()) as BoltGroup; bg.Select(); List <Part> parts = new List <Part>(); parts.Add(bg.PartToBeBolted); parts.Add(bg.PartToBoltTo); foreach (Part p in bg.OtherPartsToBolt) { parts.Add(p); } #region Clear List <Part> _part = new List <Part>(); foreach (Part p in parts) { bool flag = false; foreach (Part pp in _part) { if (pp.Identifier.ID == p.Identifier.ID) { flag = true; } } if (!flag) { _part.Add(p); } } parts.Clear(); parts = _part; #endregion foreach (Part p in parts) { if (p is Beam) { Beam b = p as Beam; b.Select(); double k = 0.0; b.GetReportProperty("PROFILE.FLANGE_SLOPE_RATIO", ref k); if (k == 0) { continue; } tppart = new TransformationPlane(p.GetCoordinateSystem()); wph.SetCurrentTransformationPlane(tppart); bg.Select(); foreach (Point pb in bg.BoltPositions) { Point _pb = new Point(pb); #region Уклон полок - точки через солид GeometricPlane gp = new GeometricPlane( _pb, new Vector(0, 1, 0), new Vector(0, 0, 1)); List <List <Point> > lp = IntersectSolid(p.GetSolid(), gp); List <LineSegment> ls = new List <LineSegment>(); for (int i = 0; i < lp[0].Count - 1; i++) { Point p1 = lp[0][i]; Point p2 = lp[0][i + 1]; Vector v = new Vector(p2.X - p1.X, p2.Y - p1.Y, p2.Z - p1.Z); v.Normalize(1.0); if (v.Y != 0 && v.Z != 0) { ControlLine cl = new ControlLine(); cl.Line.Point1 = p1; cl.Line.Point2 = p2; // cl.Insert(); ls.Add(new LineSegment(p1, p2)); } } Point _p1 = lp[0][0]; Point _p2 = lp[0][lp[0].Count - 1]; Vector _v = new Vector(_p2.X - _p1.X, _p2.Y - _p1.Y, _p2.Z - _p1.Z); if (_v.Y != 0 && _v.Z != 0) { ls.Add(new LineSegment(_p1, _p2)); ControlLine cl = new ControlLine(); cl.Line.Point1 = _p1; cl.Line.Point2 = _p2; // cl.Insert(); } #endregion #region Точки для построения пластины double diam = bg.BoltSize; double tol = GOST_10906_78[diam][0]; double _b = GOST_10906_78[diam][1]; double t1 = GOST_10906_78[diam][2]; double t2 = GOST_10906_78[diam][3]; int kf = (_pb.Z <= ((Point)b.GetReferenceLine(false)[0]).Z ? -1 : 1); _pb.Z += kf * _b * 0.5; double h = double.MaxValue; LineSegment lsb = ls[0]; foreach (LineSegment lsi in ls) { double t = Distance.PointToLineSegment(_pb, lsi); if (h >= t) { h = t; lsb = lsi; } } //ControlLine cli = new ControlLine(); //cli.Line.Point1 = lsb.Point1; //cli.Line.Point2 = lsb.Point2; //cli.Insert(); Point pb1 = new Point(_pb.X, _pb.Y + 1000, _pb.Z); Point pbi = Intersection.LineToLine( new Line(lsb), new Line(_pb, pb1)).Point1; //cli.Line.Point1 = _pb; //cli.Line.Point2 = pbi; //cli.Insert(); #endregion ContourPlate cp = new ContourPlate(); Contour cr = new Contour(); cr.AddContourPoint(new ContourPoint(new Point(pbi.X - _b * 0.5, pbi.Y, pbi.Z), null)); cr.AddContourPoint(new ContourPoint(new Point(pbi.X + _b * 0.5, pbi.Y, pbi.Z), null)); cr.AddContourPoint(new ContourPoint(new Point(pbi.X + _b * 0.5, pbi.Y, pbi.Z - kf * _b), null)); cr.AddContourPoint(new ContourPoint(new Point(pbi.X - _b * 0.5, pbi.Y, pbi.Z - kf * _b), null)); cp.Contour = cr; cp.Profile.ProfileString = "PL" + t1.ToString(); cp.AssemblyNumber.Prefix = prefix_asm; cp.AssemblyNumber.StartNumber = start_part; cp.PartNumber.Prefix = prefix_part; cp.PartNumber.StartNumber = start_part; cp.Name = name; cp.Material.MaterialString = material; cp.Finish = finish; if (kf == -1 && pbi.Y > 0) { cp.Position.Depth = Position.DepthEnum.FRONT; } else if (kf == -1 && pbi.Y < 0) { cp.Position.Depth = Position.DepthEnum.BEHIND; } else if (kf == 1 && pbi.Y > 0) { cp.Position.Depth = Position.DepthEnum.BEHIND; } else if (kf == 1 && pbi.Y < 0) { cp.Position.Depth = Position.DepthEnum.FRONT; } cp.Insert(); if (weight != 0.0 && us_prop_weight != "") { cp.SetUserProperty(us_prop_weight, weight); cp.Modify(); } BooleanPart bp = new BooleanPart(); ContourPlate cp2 = new ContourPlate(); Contour cr2 = new Contour(); cr2.AddContourPoint(new ContourPoint(new Point(pbi.X, pbi.Y, pbi.Z), null)); cr2.AddContourPoint(new ContourPoint(new Point(pbi.X, pbi.Y, pbi.Z - kf * _b), null)); cr2.AddContourPoint(new ContourPoint(new Point(pbi.X, pbi.Y + (pbi.Y > 0 ? -1 * (t1 - t2) : (t1 - t2)), pbi.Z - kf * _b), null)); cp2.Contour = cr2; cp2.Profile.ProfileString = "PL" + (_b + 10).ToString(); cp2.Class = BooleanPart.BooleanOperativeClassName; cp2.Insert(); bp.Father = cp; bp.OperativePart = cp2; bp.Insert(); cp2.Delete(); BoltArray ba = new BoltArray(); ba.FirstPosition = pb; ba.SecondPosition = new Point(pb.X + 100, pb.Y, pb.Z); ba.BoltStandard = bg.BoltStandard; ba.Position.Rotation = Position.RotationEnum.TOP; ba.BoltType = bg.BoltType; ba.BoltSize = bg.BoltSize; ba.Tolerance = tol; ba.Bolt = false; ba.AddBoltDistX(0); ba.AddBoltDistY(0); ba.PartToBeBolted = cp; ba.PartToBoltTo = cp; ba.Insert(); } } } wph.SetCurrentTransformationPlane(tp); } catch (Exception Exc) { MessageBox.Show(Exc.ToString()); } return(true); }
public void GetProperties() { ModelObjectEnumerator modelObjectEnum = model.GetModelObjectSelector().GetSelectedObjects(); if (modelObjectEnum.GetSize() == 1) { while (modelObjectEnum.MoveNext()) { if (modelObjectEnum.Current is Tekla.Structures.Model.ContourPlate) { Tekla.Structures.Model.ContourPlate contourPlate = (Tekla.Structures.Model.ContourPlate)modelObjectEnum.Current; TransformationPlane currentTP = new TransformationPlane(); currentTP = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); contourPlate.Select(); Assembly assembly = contourPlate.GetAssembly() as Tekla.Structures.Model.Assembly; assembly.GetReportProperty("ASSEMBLY_POSITION_CODE", ref gridLocation); partType = contourPlate.GetType().Name; partID = contourPlate.Identifier.ID.ToString(); contourPlate.GetReportProperty("OWNER", ref owner); partPrefix = contourPlate.PartNumber.Prefix; partStartNo = contourPlate.PartNumber.StartNumber.ToString(); assemblyPrefix = contourPlate.AssemblyNumber.Prefix; assemblyStartNo = contourPlate.AssemblyNumber.StartNumber.ToString(); Phase CurrentPhase = new Phase(); contourPlate.GetPhase(out CurrentPhase); phase = CurrentPhase.PhaseNumber.ToString(); name = contourPlate.Name; profile = contourPlate.Profile.ProfileString; material = contourPlate.Material.MaterialString; finish = contourPlate.Finish; classValue = contourPlate.Class; if (contourPlate.Position.Plane == Position.PlaneEnum.LEFT) { positionOnPlane = PositionPlaneEnum.Left; } else if (contourPlate.Position.Plane == Position.PlaneEnum.MIDDLE) { positionOnPlane = PositionPlaneEnum.Middle; } else if (contourPlate.Position.Plane == Position.PlaneEnum.RIGHT) { positionOnPlane = PositionPlaneEnum.Right; } positionOnPlaneOffset = contourPlate.Position.PlaneOffset.ToString("F02"); if (contourPlate.Position.Rotation == Position.RotationEnum.BACK) { positionRotation = PositionRotationEnum.Back; } else if (contourPlate.Position.Rotation == Position.RotationEnum.BELOW) { positionRotation = PositionRotationEnum.Below; } else if (contourPlate.Position.Rotation == Position.RotationEnum.FRONT) { positionRotation = PositionRotationEnum.Front; } else if (contourPlate.Position.Rotation == Position.RotationEnum.TOP) { positionRotation = PositionRotationEnum.Top; } positionRotationOffset = contourPlate.Position.RotationOffset.ToString("F02"); if (contourPlate.Position.Depth == Position.DepthEnum.BEHIND) { positionAtDepth = PositionDepthEnum.Behind; } else if (contourPlate.Position.Depth == Position.DepthEnum.FRONT) { positionAtDepth = PositionDepthEnum.Front; } else if (contourPlate.Position.Depth == Position.DepthEnum.MIDDLE) { positionAtDepth = PositionDepthEnum.Middle; } positionAtDepthOffset = contourPlate.Position.DepthOffset.ToString("F02"); contourPlate.GetUserProperty("USER_FIELD_1", ref userfield1); contourPlate.GetUserProperty("USER_FIELD_2", ref userfield2); contourPlate.GetUserProperty("USER_FIELD_3", ref userfield3); contourPlate.GetUserProperty("USER_FIELD_4", ref userfield4); contourPlate.GetUserProperty("comment", ref notesComments); contourPlate.GetUserProperty("FIT_NOTES", ref fittingNotes); contourPlate.GetUserProperty("FIT_NOTES2", ref fittingNotes2); contourPlate.GetUserProperty("cambering", ref cambering); contourPlate.GetUserProperty("PAINT", ref paint); contourPlate.GetUserProperty("PRELIM_MARK", ref preliminaryMark); contourPlate.GetUserProperty("PAINT_WFT", ref paintWFT); contourPlate.GetUserProperty("PAINT_DFT", ref paintDFT); double dblshear1 = 0; contourPlate.GetUserProperty("shear1", ref dblshear1); dblshear1 = dblshear1 * 0.001; shearStart = dblshear1.ToString(); double dblshear2 = 0; contourPlate.GetUserProperty("shear2", ref dblshear2); dblshear2 = dblshear2 * 0.001; shearEnd = dblshear2.ToString(); double dblaxial1 = 0; contourPlate.GetUserProperty("axial1", ref dblaxial1); dblaxial1 = dblaxial1 * 0.001; axialStart = dblaxial1.ToString(); double dblaxial2 = 0; contourPlate.GetUserProperty("axial2", ref dblaxial2); dblaxial2 = dblaxial2 * 0.001; axialEnd = dblaxial2.ToString(); double dblmoment1 = 0; contourPlate.GetUserProperty("moment1", ref dblmoment1); dblmoment1 = dblmoment1 * 0.001; momentStart = dblmoment1.ToString(); double dblmoment2 = 0; contourPlate.GetUserProperty("moment2", ref dblmoment2); dblmoment2 = dblmoment2 * 0.001; momentEnd = dblmoment2.ToString(); contourPlate.GetUserProperty("CONN_CODE_END1", ref connCodeStart); contourPlate.GetUserProperty("CONN_CODE_END2", ref connCodeEnd); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(currentTP); } } } if (modelObjectEnum.GetSize() > 1) { partType = ""; partID = ""; owner = ""; gridLocation = ""; partPrefix = ""; partStartNo = ""; assemblyPrefix = ""; assemblyStartNo = ""; phase = ""; name = ""; profile = ""; material = ""; finish = ""; classValue = ""; userfield1 = ""; userfield2 = ""; userfield3 = ""; userfield4 = ""; notesComments = ""; fittingNotes = ""; fittingNotes2 = ""; cambering = ""; paint = ""; preliminaryMark = ""; paintWFT = ""; paintDFT = ""; shearStart = ""; shearEnd = ""; axialStart = ""; axialEnd = ""; momentStart = ""; momentEnd = ""; connCodeStart = ""; connCodeEnd = ""; positionOnPlane = new PositionPlaneEnum(); positionOnPlaneOffset = ""; positionRotation = new PositionRotationEnum(); positionRotationOffset = ""; positionAtDepth = new PositionDepthEnum(); positionAtDepthOffset = ""; } }
public void GetProperties() { ModelObjectEnumerator modelObjectEnum = model.GetModelObjectSelector().GetSelectedObjects(); if (modelObjectEnum.GetSize() == 1) { while (modelObjectEnum.MoveNext()) { if (modelObjectEnum.Current is Tekla.Structures.Model.ContourPlate) { Tekla.Structures.Model.ContourPlate contourPlate = (Tekla.Structures.Model.ContourPlate)modelObjectEnum.Current; TransformationPlane currentTP = new TransformationPlane(); currentTP = model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); contourPlate.Select(); Assembly assembly = contourPlate.GetAssembly() as Tekla.Structures.Model.Assembly; assembly.GetReportProperty("ASSEMBLY_POSITION_CODE", ref gridLocation); partType = contourPlate.GetType().Name; partID = contourPlate.Identifier.ID.ToString(); contourPlate.GetReportProperty("OWNER", ref owner); partPrefix = contourPlate.PartNumber.Prefix; partStartNo = contourPlate.PartNumber.StartNumber.ToString(); assemblyPrefix = contourPlate.AssemblyNumber.Prefix; assemblyStartNo = contourPlate.AssemblyNumber.StartNumber.ToString(); Phase CurrentPhase = new Phase(); contourPlate.GetPhase(out CurrentPhase); phase = CurrentPhase.PhaseNumber.ToString(); name = contourPlate.Name; profile = contourPlate.Profile.ProfileString; material = contourPlate.Material.MaterialString; finish = contourPlate.Finish; classValue = contourPlate.Class; if (contourPlate.Position.Plane == Position.PlaneEnum.LEFT) positionOnPlane = PositionPlaneEnum.Left; else if (contourPlate.Position.Plane == Position.PlaneEnum.MIDDLE) positionOnPlane = PositionPlaneEnum.Middle; else if (contourPlate.Position.Plane == Position.PlaneEnum.RIGHT) positionOnPlane = PositionPlaneEnum.Right; positionOnPlaneOffset = contourPlate.Position.PlaneOffset.ToString("F02"); if (contourPlate.Position.Rotation == Position.RotationEnum.BACK) positionRotation = PositionRotationEnum.Back; else if (contourPlate.Position.Rotation == Position.RotationEnum.BELOW) positionRotation = PositionRotationEnum.Below; else if (contourPlate.Position.Rotation == Position.RotationEnum.FRONT) positionRotation = PositionRotationEnum.Front; else if (contourPlate.Position.Rotation == Position.RotationEnum.TOP) positionRotation = PositionRotationEnum.Top; positionRotationOffset = contourPlate.Position.RotationOffset.ToString("F02"); if (contourPlate.Position.Depth == Position.DepthEnum.BEHIND) positionAtDepth = PositionDepthEnum.Behind; else if (contourPlate.Position.Depth == Position.DepthEnum.FRONT) positionAtDepth = PositionDepthEnum.Front; else if (contourPlate.Position.Depth == Position.DepthEnum.MIDDLE) positionAtDepth = PositionDepthEnum.Middle; positionAtDepthOffset = contourPlate.Position.DepthOffset.ToString("F02"); contourPlate.GetUserProperty("USER_FIELD_1", ref userfield1); contourPlate.GetUserProperty("USER_FIELD_2", ref userfield2); contourPlate.GetUserProperty("USER_FIELD_3", ref userfield3); contourPlate.GetUserProperty("USER_FIELD_4", ref userfield4); contourPlate.GetUserProperty("comment", ref notesComments); contourPlate.GetUserProperty("FIT_NOTES", ref fittingNotes); contourPlate.GetUserProperty("FIT_NOTES2", ref fittingNotes2); contourPlate.GetUserProperty("cambering", ref cambering); contourPlate.GetUserProperty("PAINT", ref paint); contourPlate.GetUserProperty("PRELIM_MARK", ref preliminaryMark); contourPlate.GetUserProperty("PAINT_WFT", ref paintWFT); contourPlate.GetUserProperty("PAINT_DFT", ref paintDFT); double dblshear1 = 0; contourPlate.GetUserProperty("shear1", ref dblshear1); dblshear1 = dblshear1 * 0.001; shearStart = dblshear1.ToString(); double dblshear2 = 0; contourPlate.GetUserProperty("shear2", ref dblshear2); dblshear2 = dblshear2 * 0.001; shearEnd = dblshear2.ToString(); double dblaxial1 = 0; contourPlate.GetUserProperty("axial1", ref dblaxial1); dblaxial1 = dblaxial1 * 0.001; axialStart = dblaxial1.ToString(); double dblaxial2 = 0; contourPlate.GetUserProperty("axial2", ref dblaxial2); dblaxial2 = dblaxial2 * 0.001; axialEnd = dblaxial2.ToString(); double dblmoment1 = 0; contourPlate.GetUserProperty("moment1", ref dblmoment1); dblmoment1 = dblmoment1 * 0.001; momentStart = dblmoment1.ToString(); double dblmoment2 = 0; contourPlate.GetUserProperty("moment2", ref dblmoment2); dblmoment2 = dblmoment2 * 0.001; momentEnd = dblmoment2.ToString(); contourPlate.GetUserProperty("CONN_CODE_END1", ref connCodeStart); contourPlate.GetUserProperty("CONN_CODE_END2", ref connCodeEnd); model.GetWorkPlaneHandler().SetCurrentTransformationPlane(currentTP); } } } if (modelObjectEnum.GetSize() > 1) { partType = ""; partID = ""; owner = ""; gridLocation = ""; partPrefix = ""; partStartNo = ""; assemblyPrefix = ""; assemblyStartNo = ""; phase = ""; name = ""; profile = ""; material = ""; finish = ""; classValue = ""; userfield1 = ""; userfield2 = ""; userfield3 = ""; userfield4 = ""; notesComments = ""; fittingNotes = ""; fittingNotes2 = ""; cambering = ""; paint = ""; preliminaryMark = ""; paintWFT = ""; paintDFT = ""; shearStart = ""; shearEnd = ""; axialStart = ""; axialEnd = ""; momentStart = ""; momentEnd = ""; connCodeStart = ""; connCodeEnd = ""; positionOnPlane = new PositionPlaneEnum(); positionOnPlaneOffset = ""; positionRotation = new PositionRotationEnum(); positionRotationOffset = ""; positionAtDepth = new PositionDepthEnum(); positionAtDepthOffset = ""; } }