Ejemplo n.º 1
0
        private void InitTableData()
        {
            md       = (ModelDoc2)DrawingPropertySet.SwApp.ActiveDoc;
            mde      = md.Extension;
            fracdisp = mde.GetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearDecimalDisplay,
                                                    (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified);
            //int den = mde.GetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearFractionDenominator,
            //  (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified);
            decs = mde.GetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearDecimalPlaces,
                                                (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified);
            decd = mde.GetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearDecimalDisplay,
                                                (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified);

            try {
                mde.SetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearDecimalDisplay,
                                             (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified, (int)swFractionDisplay_e.swDECIMAL);
                mde.SetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearDecimalPlaces,
                                             (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified, 3);
                mde.SetUserPreferenceInteger((int)swUserPreferenceIntegerValue_e.swUnitsLinearDecimalDisplay,
                                             (int)swUserPreferenceOption_e.swDetailingNoOptionSpecified, 3);
                md.ForceRebuild3(false);

                table = new swTableType.swTableType((DrawingPropertySet.SwApp.ActiveDoc as ModelDoc2),
                                                    Redbrick.MasterHashes);
            } catch (NullReferenceException nre) {
                if (_swApp != null)
                {
                    if (dept > -1)
                    {
                        Redbrick.InsertBOM(_swApp, dept);
                    }
                    else
                    {
                        Redbrick.InsertBOM(_swApp);
                    }
                    InitTableData();
                }
                else
                {
                    throw new NullReferenceException(@"No table found.");
                }
            } catch (Exception e) {
                RedbrickErr.ErrMsg em = new RedbrickErr.ErrMsg(e);
                em.ShowDialog();
                Close();
            } finally {
                //
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Show a list of materials used. Doesn't seem overly useful.
        /// TODO: Make this button cool
        /// </summary>
        /// <param name="sender">Who clicked?</param>
        /// <param name="e">Any args?</param>
        private void btnMatList_Click(object sender, EventArgs e)
        {
            DataDisplay dd   = new DataDisplay();
            ModelDoc2   doc  = (ModelDoc2)PropertySet.SwApp.ActiveDoc;
            CutlistData cd   = PropertySet.CutlistData;
            string      name = string.Empty;

            swTableType.swTableType st;

            try {
                st = new swTableType.swTableType(doc, Redbrick.MasterHashes);
                cd.IncrementOdometer(CutlistData.Functions.MaterialList);
                DataTable stp = (DataTable)DictToPartList(st.GetParts(), cd);

                if (doc != null)
                {
                    name    = doc.GetPathName();
                    dd.Text = "Materials/Edges used in " + System.IO.Path.GetFileNameWithoutExtension(name);
                }

                var q = (from a in stp.AsEnumerable()
                         group a by a.Field <string>("Material") into x
                         orderby x.Key
                         select new { Material = x.Key, Count = x.Count() });

                var r = (from a in stp.AsEnumerable()
                         group a by a.Field <string>("EdgeFront") into x
                         where x.Key != string.Empty
                         orderby x.Key
                         select new { Edging = x.Key, Count = x.Count() });

                var s = (from a in stp.AsEnumerable()
                         group a by a.Field <string>("EdgeBack") into x
                         where x.Key != string.Empty
                         orderby x.Key
                         select new { Edging = x.Key, Count = x.Count() });

                var t = (from a in stp.AsEnumerable()
                         group a by a.Field <string>("EdgeLeft") into x
                         where x.Key != string.Empty
                         orderby x.Key
                         select new { Edging = x.Key, Count = x.Count() });

                var u = (from a in stp.AsEnumerable()
                         group a by a.Field <string>("EdgeRight") into x
                         where x.Key != string.Empty
                         orderby x.Key
                         select new { Edging = x.Key, Count = x.Count() });

                var v = (from a in q select a.Material)
                        .Union
                            (from b in r select b.Edging)
                        .Union
                            (from c in s select c.Edging)
                        .Union
                            (from d in t select d.Edging)
                        .Union
                            (from f in u select f.Edging);

                dd.Grid.DataSource = ListToDataTable(v.ToList());
                // heheheehe!
                dd.ColorRows((rw) => { return(rw.Cells["Material"].Value.ToString().Contains("TBD")); },
                             Color.Yellow,
                             Color.Red);
                dd.ShowDialog();
            } catch (NullReferenceException nre) {
                if (comboBox1.SelectedValue != null)
                {
                    Redbrick.InsertBOM(_swApp, (int)comboBox1.SelectedValue);
                }
                else
                {
                    Redbrick.InsertBOM(_swApp);
                }
                btnLookup_Click(this, new EventArgs());
            } catch (ArgumentOutOfRangeException aoore) {
                PropertySet.SwApp.SendMsgToUser2(@"No acceptable parts in BOM.",
                                                 (int)swMessageBoxIcon_e.swMbStop,
                                                 (int)swMessageBoxBtn_e.swMbOk);
            } catch (Exception ex) {
                PropertySet.SwApp.SendMsgToUser2(ex.Message, (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk);
            }
        }
Ejemplo n.º 3
0
        //private void insert_BOM() {
        //  ModelDoc2 md = (ModelDoc2)SwApp.ActiveDoc;
        //  DrawingDoc dd = (DrawingDoc)SwApp.ActiveDoc;
        //  ModelDocExtension ex = (ModelDocExtension)md.Extension;
        //  int bom_type = (int)swBomType_e.swBomType_PartsOnly;
        //  int bom_numbering = (int)swNumberingType_e.swNumberingType_Flat;
        //  int bom_anchor =(int)swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft;
        //  SolidWorks.Interop.sldworks.View v = GetFirstView(SwApp);

        //  if (dd.ActivateView(v.Name)) {
        //    v.InsertBomTable4(
        //      false,
        //      Properties.Settings.Default.BOMLocationX, Properties.Settings.Default.BOMLocationY,
        //      bom_anchor,
        //      bom_type,
        //      v.ReferencedConfiguration,
        //      Properties.Settings.Default.BOMTemplatePath,
        //      false,
        //      bom_numbering,
        //      false);
        //  }
        //}

        /// <summary>
        /// Show what will be uploaded to the as a cutlist, only with hardware and other oddments filtered out.
        /// </summary>
        /// <param name="sender">Who clicked?</param>
        /// <param name="e">Any args?</param>
        private void btnLookup_Click(object sender, EventArgs e)
        {
            DataDisplay dd = new DataDisplay();

            dd.swApp = _swApp;
            ModelDoc2   doc  = (ModelDoc2)PropertySet.SwApp.ActiveDoc;
            CutlistData cd   = PropertySet.CutlistData;
            string      name = string.Empty;

            swTableType.swTableType st;

            try {
                st = new swTableType.swTableType(doc, Redbrick.MasterHashes);
                cd.IncrementOdometer(CutlistData.Functions.ExamineBOM);
                DataTable stp = (DataTable)DictToPartList(st.GetParts(Redbrick.BOMFilter), cd);
                dd.PathIndex = st.PathList;
                if (doc != null)
                {
                    name    = doc.GetPathName();
                    dd.Text = System.IO.Path.GetFileNameWithoutExtension(name) + " cutlist BOM...";
                }

                dd.Grid.DataSource = stp;

                dd.ColorRows(
                    // λ! Wooo!
                    (r) => {
                    if (r.Cells["Update"].Value != null)
                    {
                        return(r.Cells["Update"].Value.ToString().ToUpper() == "YES");
                    }
                    else
                    {
                        return(false);
                    }
                },
                    Color.Red,
                    Color.Yellow
                    );

                dd.ShowDialog();
            } catch (NullReferenceException nre) {
                if (comboBox1.SelectedValue != null)
                {
                    Redbrick.InsertBOM(_swApp, (int)comboBox1.SelectedValue);
                }
                else
                {
                    Redbrick.InsertBOM(_swApp);
                }
                btnLookup_Click(this, new EventArgs());
            } catch (ArgumentOutOfRangeException aoore) {
                PropertySet.SwApp.SendMsgToUser2(@"No acceptable parts in BOM.",
                                                 (int)swMessageBoxIcon_e.swMbStop,
                                                 (int)swMessageBoxBtn_e.swMbOk);
            } catch (Exception ex) {
                PropertySet.SwApp.SendMsgToUser2(ex.Message,
                                                 (int)swMessageBoxIcon_e.swMbStop,
                                                 (int)swMessageBoxBtn_e.swMbOk);
            }
        }