示例#1
0
        public void OpenDrawingListOfColumns()
        {
            var macroBuilder = new MacroBuilder();

            //open drawing list and show columns
            macroBuilder.ValueChange("main_frame", "sel_all", "0");
            macroBuilder.ValueChange("main_frame", "sel_all", "1");
            macroBuilder.ValueChange("main_frame", "sel_filter", "Steel_Column");
            macroBuilder.Callback("acmdSelectAll", "", "main_frame");
            macroBuilder.Callback("gdr_menu_select_active_draw", "", "main_frame");
            macroBuilder.PushButton("dia_draw_display_all", "Drawing_selection");
            macroBuilder.PushButton("dia_draw_filter_by_parts", "Drawing_selection");

            macroBuilder.Run();

            //recorded macro code for reference

            //akit.ValueChange("main_frame", "sel_all", "0");
            //akit.ValueChange("main_frame", "sel_all", "1");
            //akit.ValueChange("main_frame", "sel_filter", "Steel_Column");
            //akit.Callback("acmdSelectAll", "", "main_frame");
            //akit.Callback("gdr_menu_select_active_draw", "", "main_frame");
            //akit.PushButton("dia_draw_display_all", "Drawing_selection");
            //akit.PushButton("dia_draw_filter_by_parts", "Drawing_selection");
        }
示例#2
0
        private void addMark(string attributeName, bool customAmount, string barNo = null)
        {
            if (!TeklaStructures.Connect())
            {
                return;
            }
            var macroBuilder = new MacroBuilder();

            if (customAmount)
            {
                macroBuilder.Callback("acmd_create_marks_selected", "", "View_10 window_1");
                macroBuilder.ValueChange("rebar_mark_dial", "gr_rebar_mark_get_menu", attributeName);
                macroBuilder.PushButton("gr_rebar_get", "rebar_mark_dial");
                macroBuilder.TableSelect("rebar_mark_dial", "gr_mark_selected_elements", new int[] { 1 });
                macroBuilder.Activate("rebar_mark_dial", "gr_mark_selected_elements");
                macroBuilder.ValueChange("gr_mark_text", "gr_text", barNo);
                macroBuilder.PushButton("gr_mark_prompt_modify", "gr_mark_text");
                macroBuilder.PushButton("rebar_mark_modify", "rebar_mark_dial");
                macroBuilder.Run();
            }
            else
            {
                macroBuilder.Callback("acmd_create_marks_selected", "", "View_10 window_1");
                macroBuilder.ValueChange("rebar_mark_dial", "gr_rebar_mark_get_menu", attributeName);
                macroBuilder.PushButton("gr_rebar_get", "rebar_mark_dial");
                macroBuilder.PushButton("rebar_mark_modify", "rebar_mark_dial");
                macroBuilder.Run();
            }
        }
示例#3
0
        /// <summary>*******************************************************************
        ///
        ///
        /// HELPER METHODS
        ///
        ///
        /// </summary>*******************************************************************

        private void changeDialog(string attributeFileName, dialogType objectType)
        {
            if (!TeklaStructures.Connect())
            {
                return;
            }
            var macroBuilder = new MacroBuilder();

            switch (objectType)
            {
            case dialogType.bar:
                macroBuilder.Callback("acmd_display_selected_drawing_object_dialog", "", "View_10 window_1");
                macroBuilder.ValueChange("rebar_dial", "gr_rebar_get_menu", attributeFileName);
                macroBuilder.PushButton("gr_rebar_get", "rebar_dial");
                macroBuilder.PushButton("rebar_modify", "rebar_dial");
                macroBuilder.Run();
                break;

            case dialogType.coupler:
                macroBuilder.Callback("acmd_display_selected_drawing_object_dialog", "", "View_10 window_1");
                macroBuilder.ValueChange("part_dial", "gr_part_get_menu", attributeFileName);
                macroBuilder.PushButton("gr_part_get", "part_dial");
                macroBuilder.PushButton("part_modify", "part_dial");
                macroBuilder.Run();
                break;

            default:
                break;
            }
        }
示例#4
0
        private void changeSelectionFilter(string filterName, bool partOnly)
        {
            if (!TeklaStructures.Connect())
            {
                return;
            }
            var macroBuilder = new MacroBuilder();

            macroBuilder.Callback("acmd_display_gr_select_filter_dialog", "", "main_frame");
            macroBuilder.ValueChange("diaSelDrawingObjectGroupDialogInstance", "get_menu", filterName);
            macroBuilder.PushButton("dia_pa_apply", "diaSelDrawingObjectGroupDialogInstance");
            if (partOnly)
            {
                macroBuilder.ValueChange("main_frame", "gr_sel_all", "0");
                macroBuilder.ValueChange("main_frame", "gr_sel_drawing_part", "1");
            }
            else
            {
                macroBuilder.ValueChange("main_frame", "gr_sel_all", "1");
            }
            macroBuilder.Run();
        }
        /// <summary>
        /// Renumbers part that need renumbering.
        /// </summary>
        /// <param name="model">Tekla.Structures.Model model</param>
        public static void RenumberParts(TSM.Model model)
        {
            // check if numberinghistory.txt exists and change its name
            RenameNumberingHistory(model);

            foreach (PartCustom part in partList)
            {
                if (part.NeedsToChange)
                {
                    string partCurrentPosition;
                    partCurrentPosition = part.prefix.ToString() + part.number.ToString();

                    int newNum;
                    string oppositePrefix = ChangeCapitalization(part.Prefix);

                    // checks if a part with same position has already been assigned a new number.
                    // If so, it skips it --> tekla applies the new number from the first part to all of the same parts
                    // all changes are collected in prefixChanges dictionary.
                    if (!prefixChanges.ContainsKey(partCurrentPosition))
                    {
                        bool firstGo = true;
                        string preNumber = string.Empty;
                        string postNumber = string.Empty;

                        do
                        {
                            int maxOppositeNumber = positionsDictionary[oppositePrefix].Max();
                            int maxNumber = positionsDictionary[part.Prefix].Max();

                            newNum = Math.Max(maxNumber, maxOppositeNumber) + 1;

                            // adds new number to prefixChanges dictionary
                            Tuple<string, int> tuple = new Tuple<string, int>(part.prefix, newNum);

                            if (firstGo)
                            {
                                prefixChanges.Add(partCurrentPosition, tuple);
                            }
                            else
                            {
                                prefixChanges.Remove(partCurrentPosition);
                                prefixChanges.Add(partCurrentPosition, tuple);
                            }

                            // select part - clumsy, could it be improved?
                            ArrayList aList = new ArrayList();
                            TSM.Object tPart = model.SelectModelObject(part.Identifier);
                            TSM.UI.ModelObjectSelector selector = new TSM.UI.ModelObjectSelector();
                            aList.Add(tPart);
                            selector.Select(aList);

                            TSM.Part myPart = tPart as TSM.Part;

                            // preNumber and postNumber strings are compared in the 'while' of the do-while loop, to determine if Macrobuilder
                            // macro was succesfully run.
                            // (sometimes Tekla doesn't want to apply certain numbers - e.g.: if they were in use in previous model stages, ... )
                            preNumber = myPart.GetPartMark();

                            // use Macrobuilder dll to change numbering
                            MacroBuilder macroBuilder = new MacroBuilder();
                            macroBuilder.Callback("acmdAssignPositionNumber", "part", "main_frame");
                            macroBuilder.ValueChange("assign_part_number", "Position", newNum.ToString());
                            macroBuilder.PushButton("AssignPB", "assign_part_number");
                            macroBuilder.PushButton("CancelPB", "assign_part_number");
                            macroBuilder.Run();

                            postNumber = myPart.GetPartMark();

                            bool ismacrounning = true;
                            while (ismacrounning)
                            {
                                ismacrounning = TSM.Operations.Operation.IsMacroRunning();
                            }

                            // add newly created part mark to positionsDict
                            positionsDictionary[part.Prefix].Add(newNum);

                            firstGo = false;

                        }
                        //while (!AssignmentSuccesCheck(model));
                        while (preNumber == postNumber);
                    }
                }
            }
        }