private static void getPoint(__DrawingData drawing) { TSD.DrawingHandler drawingHandler = new TSD.DrawingHandler(); if (drawingHandler.GetConnectionStatus()) { TSD.ContainerView sheet = drawingHandler.GetActiveDrawing().GetSheet(); TSD.UI.Picker picker = drawingHandler.GetPicker(); T3D.Point viewPoint = null; TSD.ViewBase selectedView = null; MainForm._form.add_text("Select origin point in drawing view"); picker.PickPoint("Pick one point", out viewPoint, out selectedView); T3D.Point sheetPoint = TSD.Tools.DrawingCoordinateConverter.Convert(selectedView, sheet, viewPoint); if (selectedView != null) { if (selectedView is TSD.View) { drawing.setView(selectedView as TSD.View); } } drawing.setSheet(sheet); drawing.setPoints(viewPoint, sheetPoint); } }
private Tuple <TSDrg.PointList, TSDrg.View> getRectangleCornersFromUser() { TSDrg.DrawingHandler myDrawingHandler = new TSDrg.DrawingHandler(); TSDrg.UI.Picker pointPicker = myDrawingHandler.GetPicker(); TSDrg.PointList myPoints = null; TSDrg.ViewBase myViewBase = null; TSDrg.View myView = myViewBase as TSDrg.View; TSDrg.StringList promptMsg = new TSDrg.StringList(); promptMsg.Add("Select first corner of the rectangle"); promptMsg.Add("Select second corner of the rectangle"); try { pointPicker.PickPoints(2, promptMsg, out myPoints, out myViewBase); myView = myViewBase as TSDrg.View; while (myView == null) { pointPicker.PickPoints(2, promptMsg, out myPoints, out myViewBase); myView = myViewBase as TSDrg.View; } return(new Tuple <TSDrg.PointList, TSDrg.View>(myPoints, myView)); } catch (Tekla.Structures.Drawing.PickerInterruptedException interrupted) { //Tekla.Structures.Model.Operations.Operation.DisplayPrompt("THIS METHOD NOT WORKING BECAUSE TEKLA API IS THE WORST THING I HAVE EVER WORKED WITH"); lbl_info.Text = "User interrupted action."; return(new Tuple <TSDrg.PointList, TSDrg.View>(myPoints, myView)); } }
private Tuple <TSG.Point, TSDrg.View> GetPointViewFromUser() { TSDrg.DrawingHandler myDrawingHandler = new TSDrg.DrawingHandler(); TSDrg.UI.Picker pointPicker = myDrawingHandler.GetPicker(); TSG.Point myPoint = null; TSDrg.ViewBase myViewBase = null; TSDrg.View myView = myViewBase as TSDrg.View; try { pointPicker.PickPoint("Pick a point to insert dimesnion", out myPoint, out myViewBase); myView = myViewBase as TSDrg.View; while (myView == null) { pointPicker.PickPoint("Selected point is not inside a view. Pick a point to insert dimension", out myPoint, out myViewBase); myView = myViewBase as TSDrg.View; } return(new Tuple <TSG.Point, TSDrg.View>(myPoint, myView)); } catch (Tekla.Structures.Drawing.PickerInterruptedException interrupted) { //Tekla.Structures.Model.Operations.Operation.DisplayPrompt("THIS METHOD NOT WORKING BECAUSE TEKLA API IS THE WORST THING I HAVE EVER WORKED WITH"); lbl_status.Text = "User interrupted action."; return(new Tuple <TSG.Point, TSDrg.View>(myPoint, myView)); } }
public _Mark(TSD.Mark mark, TSM.ModelObject part, TSD.ModelObject DRpart, TSD.ViewBase view) { _mark = mark; _part = part; _DRpart = DRpart; _view = view; }
public __ViewBaseData(TSD.ViewBase currentView) { view = currentView; markBeams = new List <_Mark_Beam>(); markPolyBeams = new List <_Mark_PolyBeam>(); markContourPlates = new List <_Mark_ContourPlate>(); markBoltGroup = new List <_Mark_BoltGroup>(); markSingleRebars = new List <_Mark_SingleRebar>(); markRebarBases = new List <_Mark_RebarGroup>(); sectionMarks = new List <_SectionMark>(); detailMarks = new List <TSD.DetailMark>(); txt = new List <TSD.Text>(); straightDimSets = new List <_StraightDimentionSet>(); arcs = new List <TSD.Arc>(); lines = new List <TSD.Line>(); polylines = new List <TSD.Polyline>(); circles = new List <TSD.Circle>(); clouds = new List <TSD.Cloud>(); rectangles = new List <TSD.Rectangle>(); polygons = new List <TSD.Polygon>(); txtFiles = new List <TSD.TextFile>(); dwgRefs = new List <TSD.DwgObject>(); }
public NeighborLabelDrawer(Point pickedPoint, ViewBase viewBase, TSD.Grid grid) { _pickedPoint = pickedPoint; _viewBase = viewBase; _fatherGrid = grid; GetRelatedGridLineProperties(); FindNextAndPrevLabel(); GetOrientation(); }
internal static void GetPickedObjects(out TSD.Grid grid, out TSD.ViewBase view, out Point point) { Picker picker = drawingHandler.GetPicker(); TSD.DrawingObject drawingObj; picker.PickObject("Выберите ось", out drawingObj, out view); grid = drawingObj as TSD.Grid; picker.PickPoint("Выберите точку", out point, out view); }
private void button2_Click(object sender, EventArgs e) { DrawingHandler dh = new DrawingHandler(); Tekla.Structures.Geometry3d.Point point = null; Tekla.Structures.Drawing.ViewBase view = null; dh.GetPicker().PickPoint("hi", out point, out view); Tekla.Structures.Geometry3d.Point endpoint = new Tekla.Structures.Geometry3d.Point(); endpoint.X = 1142 + point.X; endpoint.Y = 815 + point.Y; Tekla.Structures.Drawing.Rectangle rectangle = new Tekla.Structures.Drawing.Rectangle(view, point, endpoint); rectangle.Insert(); Tekla.Structures.Geometry3d.Point tpoint = new Tekla.Structures.Geometry3d.Point(endpoint.X, point.Y); Tekla.Structures.Geometry3d.Point tendpoint = new Tekla.Structures.Geometry3d.Point(); tendpoint.X = tpoint.X - 128; tendpoint.Y = tpoint.Y + 59; Tekla.Structures.Drawing.Rectangle titlebox = new Tekla.Structures.Drawing.Rectangle(view, tpoint, tendpoint); titlebox.Insert(); }
public void populate(TSD.DrawingObjectEnumerator all) { int i = 0; int tot = all.GetSize(); MainForm._form.replace_text("Total objects to proccess: " + tot.ToString()); foreach (TSD.DrawingObject one in all) { i++; MainForm._form.replace_text("Proccessing: " + i.ToString() + " of " + tot.ToString()); if (one is TSD.Mark || one is TSD.StraightDimensionSet || one is TSD.SectionMark || one is TSD.DetailMark || one is TSD.Text || //one is TSD.Arc || one is TSD.Line || one is TSD.Polyline || one is TSD.Circle || one is TSD.Cloud || one is TSD.Rectangle || one is TSD.Polygon || one is TSD.TextFile || one is TSD.DwgObject) { TSD.ViewBase oneView = one.GetView(); foreach (TSD.ViewBase stored in data.Keys) { if (stored.IsSameDatabaseObject(oneView)) { data[stored].addOneObject(one); break; } } } } MainForm._form.add_text(String.Empty); }
private void PickObjectInDrawing_Click(object sender, EventArgs e) { Picker picker = new DrawingHandler().GetPicker(); DrawingObject pickedObject = null; TSD.ViewBase viewBase = null; try { picker.PickObject("选择视图中的一个对象", out pickedObject, out viewBase); ShowDrawingObjectInfo(pickedObject, viewBase); } catch (System.Exception ex) { MessageBox.Show(ex.Message); return; } }
void IDrawLabel.DrawLabel(Point pickedPoint, TSD.ViewBase viewBase, double frameHeight, double frameWidth, string nextLabel, string prevLabel) { if (!String.IsNullOrEmpty(nextLabel)) { Point startToNext = new Point(pickedPoint.X + frameWidth / 2, pickedPoint.Y + frameHeight / 2); Point endToNext = new Point(pickedPoint.X + frameWidth / 2, pickedPoint.Y + 1.5 * frameHeight); Point textNext = new Point(endToNext.X, endToNext.Y + frameHeight / 2); Drawer.InsertLine(viewBase, startToNext, endToNext); Drawer.InsertText(viewBase, textNext, nextLabel); } if (!String.IsNullOrEmpty(prevLabel)) { Point startToPrev = new Point(pickedPoint.X + frameWidth / 2, pickedPoint.Y - frameHeight / 2); Point endToPrev = new Point(pickedPoint.X + frameWidth / 2, pickedPoint.Y - 1.5 * frameHeight); Point textPrev = new Point(endToPrev.X, endToPrev.Y - frameHeight / 2); Drawer.InsertLine(viewBase, startToPrev, endToPrev); Drawer.InsertText(viewBase, textPrev, prevLabel); } }
/// <summary> /// 显示拾取对象的信息; /// </summary> /// <param name="pickedObject"></param> private void ShowDrawingObjectInfo(DrawingObject pickedObject, TSD.ViewBase viewBase) { if (null == pickedObject) { return; } if (pickedObject is TSD.ModelObject) { TSD.ModelObject modelObjectInDrawing = pickedObject as TSD.ModelObject; TSM.ModelObject modelObject = CDimTools.GetInstance().TransformDrawingToModel(modelObjectInDrawing); if (modelObject is TSM.Part) { TSM.Part partInModel = modelObject as TSM.Part; TSD.Part partInDrawing = modelObjectInDrawing as TSD.Part; CMrPart mrPart = new CMrPart(partInModel, partInDrawing); CDimTools.GetInstance().InitMrPart(partInModel, viewBase as TSD.View, mrPart); UpdateUIInfo(mrPart); } } }
private static void createLinesNoOffset(List <TSD.Line> input, List <TSD.Line> output, TSD.ViewBase inputView, TSD.ViewBase outputView) { foreach (TSD.Line inputLine in input) { T3D.Point startPoint = inputLine.StartPoint; T3D.Point endPoint = inputLine.EndPoint; bool found = false; foreach (TSD.Line outputLine in output) { if (outputLine.StartPoint == startPoint && outputLine.EndPoint == endPoint) { found = true; break; } } if (found == false) { TSD.Line outputLine = new TSD.Line(outputView, startPoint, endPoint, inputLine.Attributes); outputLine.Attributes = inputLine.Attributes; outputLine.Insert(); } } }
private static void createPolygons(List <TSD.Polygon> input, List <TSD.Polygon> output, TSD.ViewBase inputView, TSD.ViewBase outputView) { foreach (TSD.Polygon inputPoly in input) { TSD.PointList pts = new TSD.PointList(); foreach (T3D.Point pt in inputPoly.Points) { T3D.Point temp = __GeometryOperations.applyGlobalOffset(pt); pts.Add(temp); } bool found = false; bool same = true; foreach (TSD.Polygon outputPoly in output) { if (outputPoly.Points.Count == pts.Count) { if (outputPoly.Points.Count != 0) { for (int i = 0; i < outputPoly.Points.Count; i++) { T3D.Point oldpt = outputPoly.Points[0]; T3D.Point newpt = pts[0]; if (__GeometryOperations.compare2Points(oldpt, newpt) == false) { same = false; break; } } if (same == true) { found = true; break; } for (int i = 0; i < outputPoly.Points.Count; i++) { T3D.Point oldpt = outputPoly.Points[0]; T3D.Point newpt = pts[pts.Count - i - 1]; if (__GeometryOperations.compare2Points(oldpt, newpt) == false) { same = false; break; } } if (same == true) { found = true; break; } } } } if (found == false) { TSD.Polygon outputLine = new TSD.Polygon(outputView, pts, inputPoly.Attributes); outputLine.Attributes = inputPoly.Attributes; outputLine.Insert(); } } }
private static void createRectangles(List <TSD.Rectangle> input, List <TSD.Rectangle> output, TSD.ViewBase inputView, TSD.ViewBase outputView) { foreach (TSD.Rectangle inputRectangle in input) { T3D.Point startPoint = __GeometryOperations.applyGlobalOffset(inputRectangle.StartPoint); T3D.Point endPoint = __GeometryOperations.applyGlobalOffset(inputRectangle.EndPoint); bool found = false; foreach (TSD.Rectangle outputLine in output) { if (outputLine.StartPoint == startPoint && outputLine.EndPoint == endPoint) { found = true; break; } else if (outputLine.StartPoint == endPoint && outputLine.EndPoint == startPoint) { found = true; break; } } if (found == false) { TSD.Rectangle outputLine = new TSD.Rectangle(outputView, startPoint, endPoint, inputRectangle.Attributes); outputLine.Attributes = inputRectangle.Attributes; outputLine.Insert(); } } }
private static void createCircles(List <TSD.Circle> input, List <TSD.Circle> output, TSD.ViewBase inputView, TSD.ViewBase outputView) { foreach (TSD.Circle inputCircle in input) { T3D.Point centerPoint = __GeometryOperations.applyGlobalOffset(inputCircle.CenterPoint); bool found = false; foreach (TSD.Circle outputCircle in output) { if (outputCircle.CenterPoint == centerPoint && outputCircle.Radius == inputCircle.Radius) { found = true; break; } } if (found == false) { TSD.Circle outputLine = new TSD.Circle(outputView, centerPoint, inputCircle.Radius, inputCircle.Attributes); outputLine.Attributes = inputCircle.Attributes; outputLine.Insert(); } } }
private static void createDimentionLineSets(List <_StraightDimentionSet> input, List <_StraightDimentionSet> output, TSD.ViewBase outputView) { foreach (_StraightDimentionSet inputDimSet in input) { TSD.PointList outputPoints = new TSD.PointList(); foreach (T3D.Point ip in inputDimSet._points) { T3D.Point op = __GeometryOperations.applyGlobalOffset(ip); outputPoints.Add(op); } bool found = false; _StraightDimentionSet outputDimSetCopy = null; foreach (_StraightDimentionSet outputDimSet in output) { if (inputDimSet._points.Count == outputDimSet._points.Count) { if (outputDimSet._points.Count != 0) { bool local = true; for (int i = 0; i < outputDimSet._points.Count; i++) { bool same = __GeometryOperations.compare2PointsNullTolerance(outputPoints[i], outputDimSet._points[i]); if (same == false) { local = false; break; } } if (local == true) { if (outputDimSet._first.UpDirection == inputDimSet._first.UpDirection) { found = true; outputDimSetCopy = outputDimSet; break; } } } } } if (found == false) { TSD.StraightDimensionSetHandler sds = new TSD.StraightDimensionSetHandler(); TSD.StraightDimensionSet outputDimSet = sds.CreateDimensionSet(outputView, outputPoints, inputDimSet._first.UpDirection, inputDimSet._set.Distance, inputDimSet._set.Attributes); outputDimSet.Distance = inputDimSet._set.Distance; outputDimSet.Modify(); } else { if (outputDimSetCopy != null) { outputDimSetCopy._set.Distance = inputDimSet._set.Distance; outputDimSetCopy._set.Modify(); } } } }
public static void Run(Tekla.Technology.Akit.IScript akit) { try { Model model = new Model(); DrawingHandler drawingHandler = new DrawingHandler(); Drawing drawing = drawingHandler.GetActiveDrawing(); if (drawing != null) { Tekla.Structures.Drawing.StraightDimension sd = null; Tekla.Structures.Drawing.Bolt bolt = null; DrawingObjectEnumerator drawingObjectEnum = drawingHandler.GetDrawingObjectSelector().GetSelected(); while (drawingObjectEnum.MoveNext()) { if (drawingObjectEnum.Current is Tekla.Structures.Drawing.StraightDimension) { sd = (Tekla.Structures.Drawing.StraightDimension)drawingObjectEnum.Current; } if (drawingObjectEnum.Current is Tekla.Structures.Drawing.Bolt) { bolt = (Tekla.Structures.Drawing.Bolt)drawingObjectEnum.Current; } } if (bolt == null) { Tekla.Structures.Drawing.UI.Picker picker = drawingHandler.GetPicker(); DrawingObject drawingObject = null; Tekla.Structures.Drawing.ViewBase viewBase = null; Tekla.Structures.Geometry3d.Point pickedPoint = null; Type[] TypeFilter = new Type[] { typeof(Tekla.Structures.Drawing.Bolt) }; picker.PickObject("pick bolt", TypeFilter, out drawingObject, out viewBase, out pickedPoint); bolt = (Tekla.Structures.Drawing.Bolt)drawingObject; } Tekla.Structures.Model.BoltGroup mBolt = (Tekla.Structures.Model.BoltGroup)model.SelectModelObject((Identifier)bolt.ModelIdentifier); string note = ""; if (mBolt is BoltArray) { BoltArray boltArray = (BoltArray)mBolt; if (boltArray.GetBoltDistYCount() == 1 && boltArray.GetBoltDistY(0) == 0) { note = (mBolt.BoltPositions.Count - 1).ToString() + " No SPACES @ " + boltArray.GetBoltDistX(1).ToString() + " = "; } if (boltArray.GetBoltDistY(0) > 0) { } } else if (mBolt is BoltXYList) { BoltXYList boltXYList = (BoltXYList)mBolt; note = (boltXYList.BoltPositions.Count - 1).ToString() + " STAGGERED No SPACES @ " + (boltXYList.GetBoltDistX(1)).ToString() + " = "; } Tekla.Structures.Drawing.UI.DrawingObjectSelector drawingObjectSelector = drawingHandler.GetDrawingObjectSelector(); drawingObjectSelector.SelectObject(sd); akit.ValueChange("main_frame", "gr_sel_dimension", "1"); akit.Callback("acmd_display_attr_dialog", "dim_dial", "main_frame"); akit.PushButton("dim_set", "dim_dial"); akit.TabChange("dim_dial", "tabWndDimAttrib", "tabMarks"); akit.PushButton("dim_on_off", "dim_dial"); akit.ValueChange("dim_dial", "txtFldPrefix", note); akit.PushButton("dim_modify", "dim_dial"); akit.PushButton("dim_cancel", "dim_dial"); } } catch { } }
void ButtonDoClick(object sender, EventArgs e) { TSD.DrawingHandler drawingHandler = new TSD.DrawingHandler(); TSD.UI.Picker picker = drawingHandler.GetPicker(); TSG.Point point1 = null; TSG.Point point2 = null; TSG.Point point3 = null; TSD.ViewBase view = null; Shell shell = null; try { shell = new Shell(Convert.ToDouble(diameterTextBox.Text), Convert.ToDouble(thicknessTextBox.Text), chamferTopComboBox.SelectedItem.ToString(), chamferBotComboBox.SelectedItem.ToString(), Convert.ToDouble(angleTrimTextBox.Text), Convert.ToDouble(angleRotateTextBox.Text), Convert.ToDouble(angleSectorTextBox.Text), Convert.ToInt32(nPartTextBox.Text)); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } if (shell != null) { try { picker.PickThreePoints("1st poit", "2nd point", "3rd point", out point1, out point2, out point3, out view); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } double angleP2 = GetAngle(new TSG.Point((point2.X - point1.X), (point2.Y - point1.Y))); double angleP3 = GetAngle(new TSG.Point(((point3.X - point1.X) * Math.Cos(-angleP2) - (point3.Y - point1.Y) * Math.Sin(-angleP2)), ((point3.X - point1.X) * Math.Sin(-angleP2) + (point3.Y - point1.Y) * Math.Cos(-angleP2)))); int kof = ((angleP3 >= 0) && (angleP3 < Math.PI)) ? -1 : 1; double lArc = (shell.diameter / 2 - shell.thickness / 2) * shell.angleSector; for (int i = 0; i < shell.arrLine.Length; i++) { TSG.Point p1 = new TSG.Point((point1.X + (i * lArc / shell.nPart) * Math.Cos(angleP2)), (point1.Y + (i * lArc / shell.nPart) * Math.Sin(angleP2))); TSG.Point p2 = new TSG.Point((point1.X + i * lArc / shell.nPart * Math.Cos(angleP2) + kof * shell.arrLine[i] * Math.Sin(angleP2)), (point1.Y + i * lArc / shell.nPart * Math.Sin(angleP2) - kof * shell.arrLine[i] * Math.Cos(angleP2)));; TSD.Text.TextAttributes txtAtributes = new TSD.Text.TextAttributes(); txtAtributes.Angle = angleP2 * 180 / Math.PI + 90; string dimText = (Math.Round(shell.arrLine[i]).ToString()); TSD.Text dim = new TSD.Text(view, p1, dimText, txtAtributes); dim.Insert(); TSD.Line line = new TSD.Line(view, p1, p2); line.Insert(); } TSD.Line line2 = new TSD.Line(view, point1, new TSG.Point((point1.X + lArc * Math.Cos(angleP2)), (point1.Y + lArc * Math.Sin(angleP2)))); line2.Insert(); } }
public _Mark_SingleRebar(TSD.Mark mark, TSM.ModelObject part, TSD.ModelObject dr, TSD.ViewBase vv) : base(mark, part, dr, vv) { }
public _Mark_ContourPlate(TSD.Mark mark, TSM.ModelObject part, TSD.ModelObject dr, TSD.ViewBase vv) : base(mark, part, dr, vv) { }
public _Mark_BoltGroup(TSD.Mark mark, TSM.ModelObject part, TSD.ModelObject dr, TSD.ViewBase vv) : base(mark, part, dr, vv) { }
public _Mark_PolyBeam(TSD.Mark mark, TSM.ModelObject part, TSD.ModelObject dr, TSD.ViewBase vv) : base(mark, part, dr, vv) { }