public static void Run(Tekla.Technology.Akit.IScript akit) { var handler = new DrawingHandler(); var selection = handler.GetDrawingObjectSelector().GetSelected(); DrawingHandler.SetMessageExecutionStatus(DrawingHandler.MessageExecutionModeEnum.BY_COMMIT); double rotang = 0; while (selection.MoveNext()) { if (selection.Current is MarkBase) { MarkBase mark = selection.Current as MarkBase; mark.Attributes.RotationAngle = rotang; mark.Attributes.PlacingAttributes.IsFixed = true; mark.Modify(); } else { Text text = selection.Current as Text; text.Attributes.Angle = rotang; text.Attributes.PlacingAttributes.IsFixed = true; text.Modify(); } } DrawingHandler.SetMessageExecutionStatus(DrawingHandler.MessageExecutionModeEnum.INSTANT); handler.GetActiveDrawing().CommitChanges(); }
public static dynamic GetTSObject(MarkBase dynObject) { if (dynObject is null) { return(null); } return(dynObject.teklaObject); }
private void alignMarks(MarkBase baseMark, List <MarkBase> barMarks) { TSG.Point basePoint = baseMark.InsertionPoint; MarkBase[] sortedBarMarks = barMarks.ToArray(); Double[] sortedBarMarkXpos = new Double[barMarks.Count]; bool reversed = false; //create array of barmark positions for sorting for (int i = 0; i < sortedBarMarks.Length; i++) { TSDrg.LeaderLinePlacing placing = (LeaderLinePlacing)sortedBarMarks[i].Placing; //drawcircle(placing.StartPoint, sortedBarMarks[i].GetView()); sortedBarMarkXpos[i] = placing.StartPoint.X; } //sort and check for position of the basemark, if basemark is at the end, then reverse order of marks for sorting Array.Sort(sortedBarMarkXpos, sortedBarMarks); if (basePoint.X > sortedBarMarkXpos.Last()) { reversed = true; Array.Reverse(sortedBarMarks); Array.Reverse(sortedBarMarkXpos); } Double newInsertionYpos = basePoint.Y - PS.Default.usr_BarMarkYOffset; //move barmarks for (int i = 0; i < sortedBarMarks.Length; i++) { TSG.Point currBarMarkPosition = sortedBarMarks[i].InsertionPoint; double newInsertionXpos = 0.0; if (reversed == true) { newInsertionXpos = sortedBarMarkXpos[i] + 75 + sortedBarMarks[i].GetObjectAlignedBoundingBox().Width / 2; } else { newInsertionXpos = sortedBarMarkXpos[i] - 75 - sortedBarMarks[i].GetObjectAlignedBoundingBox().Width / 2; } TSG.Point newInsertionPoint = new TSG.Point(newInsertionXpos, newInsertionYpos); TSG.Vector moveVector = new TSG.Vector( newInsertionPoint.X - currBarMarkPosition.X, newInsertionPoint.Y - currBarMarkPosition.Y, 0.0); sortedBarMarks[i].MoveObjectRelative(moveVector); sortedBarMarks[i].Modify(); newInsertionYpos -= PS.Default.usr_BarMarkYOffset; } }
private void btn_alignSeries_Click(object sender, EventArgs e) { resetForm(); try { List <DrawingObject> usrObjects = getObjectsFromSelection(typeof(MarkBase)); List <MarkBase> usrBarMarks = new List <MarkBase>(); foreach (MarkBase mark in usrObjects) { usrBarMarks.Add(mark); } MarkBase usrBaseMark = getSingleObjectFromUser <MarkBase>() as MarkBase; alignMarks(usrBaseMark, usrBarMarks); } catch (NullReferenceException nullEx) { lbl_info.Text = "Action interrupted."; } }
private void onDragEnd(MarkBase obj) { this.textBox_markerx.Text = obj.X.ToString(); this.textBox_markery.Text = obj.Y.ToString(); }