예제 #1
0
        private void AddView(string Name, TSD.Drawing MyDrawing, ArrayList Parts, TSG.CoordinateSystem coordinateSystem)
        {
            TSD.View MyView = new TSD.View(MyDrawing.GetSheet(), coordinateSystem, coordinateSystem, Parts);

            MyView.Name = Name;
            MyView.Insert();
        }
        /// <summary>Opens a drawing in the drawing editor.</summary>
        /// <param name="drawing">Drawing to open.</param>
        /// <returns>A boolean value indicating whether the drawing was opened.</returns>
        public bool Open(TSDrawing drawing)
        {
            if (this.IsActive)
            {
                return(SeparateThread.Execute <bool>(delegate { return this.connection.SetActiveDrawing(drawing, true); }));
            }

            return(false);
        }
예제 #3
0
        public static void main(TSD.Drawing drawing, ref bool globalCheckOK)
        {
            bool localCheckOK = true;



            if (localCheckOK == false)
            {
                globalCheckOK = false;
            }
        }
        public static bool checkPart(List <string> properties, TSM.Part part, TSD.Drawing drawing)
        {
            foreach (string prop in properties)
            {
                bool result = checkProperty(prop, part, drawing);
                if (result == false)
                {
                    return(false);
                }
            }

            return(true);
        }
        public static bool main(TSD.Drawing drawing)
        {
            bool drawingStatus = true;

            TSM.Model _myModel = new TSM.Model();

            if (drawing is TSD.GADrawing)
            {
                drawingStatus = checkDrawing(UserSettings_UDA._GA_drawingProperties, drawing as TSD.GADrawing);
            }
            else if (drawing is TSD.CastUnitDrawing)
            {
                TSD.CastUnitDrawing cu = drawing as TSD.CastUnitDrawing;
                TSM.Assembly        currentAssembly = _myModel.SelectModelObject(cu.CastUnitIdentifier) as TSM.Assembly;
                TSM.Part            currentMainPart = currentAssembly.GetMainPart() as TSM.Part;

                drawingStatus = checkDrawing(UserSettings_UDA._CU_drawingProperties, cu);
                if (drawingStatus)
                {
                    drawingStatus = checkPart(UserSettings_UDA._CU_partProperties, currentMainPart, cu);
                }
            }
            else if (drawing is TSD.AssemblyDrawing)
            {
                TSD.AssemblyDrawing asd             = drawing as TSD.AssemblyDrawing;
                TSM.Assembly        currentAssembly = _myModel.SelectModelObject(asd.AssemblyIdentifier) as TSM.Assembly;
                TSM.Part            currentMainPart = currentAssembly.GetMainPart() as TSM.Part;

                drawingStatus = checkDrawing(UserSettings_UDA._A_drawingProperties, asd);
                if (drawingStatus)
                {
                    drawingStatus = checkPart(UserSettings_UDA._A_partProperties, currentMainPart, asd);
                }
            }
            else if (drawing is TSD.SinglePartDrawing)
            {
                TSD.SinglePartDrawing sp = drawing as TSD.SinglePartDrawing;
                TSM.Part currentPart     = _myModel.SelectModelObject(sp.PartIdentifier) as TSM.Part;

                drawingStatus = checkDrawing(UserSettings_UDA._SP_drawingProperties, sp);
                if (drawingStatus)
                {
                    drawingStatus = checkPart(UserSettings_UDA._SP_partProperties, currentPart, sp);
                }
            }

            return(drawingStatus);
        }
예제 #6
0
        private void AddRotatedView(string Name, TSD.Drawing MyDraiwng, ArrayList Parts, TSG.CoordinateSystem coordinateSystem)
        {
            TSG.CoordinateSystem displayCoordinateSystem = new TSG.CoordinateSystem();

            TSG.Matrix RotationAroundX = TSG.MatrixFactory.Rotate(20.0 * Math.PI * 2.0 / 360.0, coordinateSystem.AxisX);
            TSG.Matrix RotationAroundZ = TSG.MatrixFactory.Rotate(30.0 * Math.PI * 2.0 / 360.0, coordinateSystem.AxisY);

            TSG.Matrix Rotation = RotationAroundX * RotationAroundZ;

            displayCoordinateSystem.AxisX = new TSG.Vector(Rotation.Transform(new TSG.Point(coordinateSystem.AxisX)));
            displayCoordinateSystem.AxisY = new TSG.Vector(Rotation.Transform(new TSG.Point(coordinateSystem.AxisY)));

            TSD.View FrontView = new TSD.View(MyDraiwng.GetSheet(), coordinateSystem, displayCoordinateSystem, Parts);

            FrontView.Name = Name;
            FrontView.Insert();
        }
예제 #7
0
        public static void main(TSD.Drawing drawing)
        {
            string printerName = selectPrinter(drawing);

            if (printerName == "NOT FOUND")
            {
                throw new DivideByZeroException();
            }

            new TeklaMacroBuilder.MacroBuilder()
            .Callback("acmd_display_plot_dialog", "", "main_frame")
            .ValueChange("Plot", "add_revision_info_to_filename", UserSettings_PDF.add_revision_info_to_filename)     //Include Revision Mark
            .ListSelect("Plot", "component_list", printerName)
            .PushButton("butPrint", "Plot")
            .PushButton("cancel_pb", "Plot")
            .Run();
        }
예제 #8
0
        public static void main(TSD.Drawing drawing)
        {
            TSD.DrawingHandler drawingHandler = new TSD.DrawingHandler();
            drawingHandler.SetActiveDrawing(drawing, true);

            bool printingStatus = true;

            if (UserSettings_GLOBAL._removeClouds)
            {
                RemoveClouds.main();
            }

            if (UserControls._pdf)
            {
                try
                {
                    ExportPDF.main(drawing);
                }
                catch
                {
                    printingStatus = false;
                    MainWindow._form.consoleOutput("[ERROR - 4] Failed printing!", "L2");
                }
            }

            if (UserControls._dwg)
            {
                try
                {
                    ExportDWG.main(drawing);
                }
                catch
                {
                    printingStatus = false;
                    MainWindow._form.consoleOutput("[ERROR - 5] Failed exporting!", "L2");
                }
            }

            drawingHandler.CloseActiveDrawing(UserSettings_GLOBAL._drawingSave);

            if (printingStatus == false)
            {
                throw new DivideByZeroException();
            }
        }
예제 #9
0
        public static string selectPrinter(TSD.Drawing drawing)
        {
            string plotter = "NOT FOUND";

            int height = Convert.ToInt32(drawing.Layout.SheetSize.Height);
            int width  = Convert.ToInt32(drawing.Layout.SheetSize.Width);

            foreach (PaperSize current in UserSettings_PDF._plotters)
            {
                if ((width % current._width == 0) && height == current._height)
                {
                    plotter = current._plotterName;
                }
            }

            MainWindow._form.consoleOutput("PRINT - " + plotter + " (" + width.ToString() + "x" + height.ToString() + ")", "L2");
            return(plotter);
        }
예제 #10
0
        public static void DateLastMark(TSD.Drawing croquis, out string revisionMark, out int revisionDateSeconds)
        {
            Type         drawingType  = croquis.GetType();
            PropertyInfo propertyInfo = drawingType.GetProperty("Identifier", BindingFlags.Instance | BindingFlags.NonPublic);
            object       value        = propertyInfo.GetValue(croquis, null);

            Identifier identifier = (Identifier)value;

            TSM.Beam fakeBeam = new TSM.Beam {
                Identifier = identifier
            };

            revisionMark = "";
            fakeBeam.GetReportProperty("REVISION.LAST_MARK", ref revisionMark);

            revisionDateSeconds = 0;
            fakeBeam.GetReportProperty("REVISION.LAST_DATE_CREATE", ref revisionDateSeconds);
        }
예제 #11
0
        public static bool checkProperty(string prop, TSD.Drawing drawing)
        {
            string dummy = "dummy";

            drawing.GetUserProperty(prop, ref dummy);

            int dummyInt = -987;

            drawing.GetUserProperty(prop, ref dummyInt);

            bool status = checker(dummy, dummyInt);

            if (status == false)
            {
                MainWindow._form.consoleOutput(drawing.Mark + " " + prop + " is not set", "L2");
            }

            return(status);
        }
예제 #12
0
 private void BtnApply_Click(object sender, EventArgs e)
 {
     lbCode.Text        = "";
     lbResult.Text      = "";
     SelectedDrawings   = new List <Drawing>();
     progressBar1.Value = 0;
     CD.DetailName      = cbCode.Text;
     if (chkAutoApply.Checked)
     {
         if (btnApply.Text == "Apply")
         {
             DrawingHandler dh = new DrawingHandler();
             SelectedDrawings = Com.EnumtoArrayDr(dh.GetDrawingSelector().GetSelected()).OfType <TSD.Drawing>().ToList().OrderBy(x => x.Title1).ToList();
             if (SelectedDrawings?.Count > 0)
             {
                 progressBar1.Maximum = SelectedDrawings.Count;
                 btnApply.Text        = "Cancel";
                 workerThread.RunWorkerAsync();
             }
             else
             {
                 lbResult.Text = "Please Select Drawings!!";
             }
         }
         else
         {
             workerThread.CancelAsync();
         }
     }
     else
     {
         DrawingHandler dh = new DrawingHandler();
         TSD.Drawing    Dr = dh.GetActiveDrawing();
         if (Dr != null)
         {
             CD.ProceedDrawing(Dr, chkDeleteDim.Checked, lbCode);
         }
     }
 }
예제 #13
0
        public static double getHighestScale(TSD.Drawing currentDrawing)
        {
            double highestScale = 0;

            TSD.DrawingObjectEnumerator ViewEnum = currentDrawing.GetSheet().GetViews();

            while (ViewEnum.MoveNext())
            {
                if (ViewEnum.Current is TSD.View)
                {
                    TSD.View currentView = ViewEnum.Current as TSD.View;

                    if (isView2D(currentView))
                    {
                        double currentScale = currentView.Attributes.Scale;
                        highestScale = Math.Max(currentScale, highestScale);
                    }
                }
            }

            MainWindow._form.consoleOutput("EXPORT - Scale: " + highestScale.ToString(), "L2");

            return(highestScale);
        }
예제 #14
0
        public static void main(TSD.Drawing drawing)
        {
            double scaleFactor   = getHighestScale(drawing);
            double lineTypeScale = scaleFactor;

            if (scaleFactor == 0)
            {
                throw new DivideByZeroException();
            }

            new TeklaMacroBuilder.MacroBuilder()
            .Callback("acmdDisplayExportDrawingsDialog", "", "main_frame")

            .ValueChange("diaExportDrawings", "textFileName", UserSettings_DWG.textFileName)             //Name
            .ValueChange("diaExportDrawings", "optMnuFileType", UserSettings_DWG.optMnuFileType)         //Type DWG
            .ValueChange("diaExportDrawings", "chkButRevisionMark", UserSettings_DWG.chkButRevisionMark) //Include Revision Mark

            //.TabChange("diaExportDrawings", "tabWndProperties", "tabLayerOptions")
            .ValueChange("diaExportDrawings", "optMnuLayerFile", UserSettings_DWG.optMnuLayerFile)                                 //Layer rules
            .ValueChange("diaExportDrawings", "chkUseAdvancedLineTypeConversio", UserSettings_DWG.chkUseAdvancedLineTypeConversio) //Use advanced line type and layer conversion
            .ValueChange("diaExportDrawings", "txtLineTypeMappingFile", UserSettings_DWG.txtLineTypeMappingFile)                   //Conversion type
            .ValueChange("diaExportDrawings", "chkButIncludeEmptyLayers", UserSettings_DWG.chkButIncludeEmptyLayers)               //Include empty layer
            .ValueChange("diaExportDrawings", "chkButObjectColorByLayer", UserSettings_DWG.chkButObjectColorByLayer)               //Object color by layer

            //.TabChange("diaExportDrawings", "tabWndProperties", "tabOptions")
            .ValueChange("diaExportDrawings", "textScaleFactor", scaleFactor.ToString())               //Drawing scale
            .ValueChange("diaExportDrawings", "txtLineTypeScale", lineTypeScale.ToString())            //Line type scale
            .ValueChange("diaExportDrawings", "chkUseGrouping", UserSettings_DWG.chkUseGrouping)       //Export objects as groups
            .ValueChange("diaExportDrawings", "chkUseLineCliping", UserSettings_DWG.chkUseLineCliping) //Cut lines with text
            .ValueChange("diaExportDrawings", "chkSplitSoftLines", UserSettings_DWG.chkSplitSoftLines) //Export custom lines as split lines
            .ValueChange("diaExportDrawings", "chkUsePaperSpace", UserSettings_DWG.chkUsePaperSpace)   //Use paper space

            .PushButton("butExport", "diaExportDrawings")
            .PushButton("butCancel", "diaExportDrawings")
            .Run();
        }
예제 #15
0
        public static void main(TSD.Drawing drawing)
        {
            StringBuilder csv = new StringBuilder();

            string name = drawing.Title1;
            string nr   = drawing.Name;

            int    dmtDateSeconds = 0;
            string dmtDateString  = "";

            drawing.GetUserProperty("DR_RESP_DSGNR_DATE", ref dmtDateSeconds);
            if (dmtDateSeconds != 0)
            {
                DateTime dmtDate = new DateTime(1970, 1, 1);
                dmtDate       = dmtDate.AddSeconds(dmtDateSeconds);
                dmtDateString = dmtDate.ToShortDateString();
            }

            int    revisionDateSeconds = 0;
            string revisionMark        = "";
            string revisionDateString  = "";

            DateLastMark(drawing, out revisionMark, out revisionDateSeconds);
            if (revisionDateSeconds != 0)
            {
                DateTime revisionDate = new DateTime(1970, 1, 1);
                revisionDate       = revisionDate.AddSeconds(revisionDateSeconds);
                revisionDateString = revisionDate.ToShortDateString();
            }

            string newLine = string.Format("{0};{1};{2};{3};{4};", name, nr, revisionMark, dmtDateString, revisionDateString);

            csv.AppendLine(newLine);

            addCSV(csv.ToString());
        }
        // This application assumes that users have already opened a drawing - an assembly drawing.
        // The goal is for the user to see that particular assembly
        // in the model, and to see ONLY that assembly in the model.
        // Therefore all parts which are not associated with this assembly need to be hidden.
        // All the clutter needs to be removed from view.
        // And all parts associated with this assembly need to be visible.

        // Summary: our goals is for users to see, given the particular assembly drawing that they are in,
        // just that ONE assembly within the model, and to have all other parts hidden.

        // Methodology:
        // 1. We obtain the assembly drawing and go through all the drawing objects within the assembly drawing. We get the identifiers of these
        ////  drawing objects and place them in a list (assemblyPartIdentifierList)
        // 2. We obtain the identifiers of all the objects in the model and place them on this list too.
        ///3. We want to hide all objects which are not associated with the assembly drawing which is currently open.
        ///4. Consequently, we obtain a List of identifiers which contains all the objects in the model APART from the assembly parts of the current assembly
        ///// we are working on.
        ///5. We convert this list of identifiers into a TSM.Model Object list, and then again convert this list into an ArrayList.
        ///6. The array list should contain all the objects we need to hide.
        ///7. We use the array list to select all the objects which need to be hidden, in the model.
        ///8. We want to call a macro which hides all the objects currently selected.

        // Two questions, (1) is the above approach a good and efficient wa to solve the above problem>
        // Given a drawing is open, how can one call a macro which hides all selected objects?
        // Your comemnts and criticism would be very much apprieciated.


        private static void GetAssembly()
        {
            try
            {
                // creates model and drawing handle

                TSM.Model myModel = new TSM.Model();

                TSD.DrawingHandler dh = new TSD.DrawingHandler();

                if (dh.GetConnectionStatus() == false)
                {
                    System.Windows.Forms.MessageBox.Show("Could not connect drawing handler.");
                    return;
                }

                // users must have an Assembly drawing open. We want to see the assembly contained in the assembly drawing in the
                // UI. Hence we first obtain the identifiers of the drawing objects.

                TSD.Drawing currentDrawing = dh.GetActiveDrawing();

                if (currentDrawing == null)
                {
                    System.Windows.Forms.MessageBox.Show("Please ensure that an assembly drawing is open");
                    return;
                }

                TSD.AssemblyDrawing currentAssemblyDrawing = currentDrawing as TSD.AssemblyDrawing;

                if (currentAssemblyDrawing == null)
                {
                    System.Windows.Forms.MessageBox.Show("Please ensure that an assembly drawing is open");
                    return;
                }

                if (currentAssemblyDrawing != null)
                {
                    // in order to select in the model space we need to create an array list

                    ArrayList assemblyObjectToBeViewed = new ArrayList();

                    // we need to add a model object to the array list. We are adding the assembly as the model object for the model object selector to select

                    assemblyObjectToBeViewed.Add(myModel.SelectModelObject(currentAssemblyDrawing.AssemblyIdentifier));

                    TSM.UI.ModelObjectSelector selector = new TSM.UI.ModelObjectSelector();
                    selector.Select(assemblyObjectToBeViewed);

                    TSM.Operations.Operation.RunMacro("ShowOnlySelected.cs");
                    TSM.Operations.Operation.RunMacro("FitToView.cs");
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Please ensure you have an Assembly drawing open");
                }
            }

            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }