Example #1
0
 internal static void AddModelToList(SwAddin mSwAddin, ModelDoc2 newModel)
 {
     List<ModelDoc2> fM = null;
     string xNameOfAss = mSwAddin.GetXNameForAssembly(false, Path.GetFileNameWithoutExtension(mSwAddin.SwModel.GetPathName()));
     #region Проверка на наличие модели,которая была удалена
     var checkList = new List<ModelDoc2>();
     if (!DictionaryListMdb.ContainsKey(xNameOfAss))
         DictionaryListMdb.Add(xNameOfAss, new List<ModelDoc2>());
     foreach (var m in DictionaryListMdb[xNameOfAss])
     {
         try
         {
             m.GetPathName();
             checkList.Add(m);
         }
         catch (COMException)
         {
             continue;
         }
     }
     #endregion
     if (!checkList.Contains(newModel))
         CheckMdbForDecors(mSwAddin, newModel, checkList, null, fM);
     DictionaryListMdb[xNameOfAss] = checkList;
 }
Example #2
0
 public DocumentEventHandler(ModelDoc2 modDoc, SwAddin addin)
 {
     Document = modDoc;
     UserAddin = addin;
     SwApp = UserAddin.SwApp;
     OpenModelViews = new Hashtable();
 }
Example #3
0
 public KitchenModule(ModelDoc2 _rootModel, Component2 _swRootComponent, SwAddin _swAddin, ModelDoc2 _swModel)
 {
     RootModel = _rootModel;
     swRootComponent = _swRootComponent;
     measure = RootModel.Extension.CreateMeasure();
     swAddin = _swAddin;
     swModel = _swModel;
     rootName = Path.GetFileNameWithoutExtension(RootModel.GetPathName());
 }
Example #4
0
 public ListHiddenComponent(SwAddin swAddin, List<Component2> inListComponent,string name1,string name2)
 {
     _mSwAddin = swAddin;
     _hidComp = inListComponent;
     InitializeComponent();
     Show();
     EditLabel(name1, name2);
     button1.Click +=Button1Click;
 }
Example #5
0
 public frmCopyProject(SwAddin swAdd,ISldWorks iswApp,ModelDoc2 rootModel,string openFile)
 {
     _swAdd = swAdd;
     _iswApp = iswApp;
     _swModelDoc = rootModel;
     _openFile = openFile;
     InitializeComponent();
     WarningLabel.Text = string.Empty;
 }
        public FrmReplaceComponents(SwAddin swAddin, Component2[] selComps)
        {
            InitializeComponent();

            _mSwAddin = swAddin;
            _mSelComps = selComps;
            _swModel = (ModelDoc2)_mSwAddin.SwApp.ActiveDoc;

            Show();
        }
Example #7
0
        public FrmOptions(SwAddin swAdd, ISldWorks iswApp, int cook)
        {
            _swAdd = swAdd;
            _iswApp = iswApp;
            _cook = cook;

            InitializeComponent();
            Closing += FrmOptionsClosing;
            FormClosed += FrmOptionsClosed;
        }
Example #8
0
        public static void Actualization(ModelDoc2 model, SwAddin _mSwAddin)
        {
            Component2 _swSelectedComponent = model.ConfigurationManager.ActiveConfiguration.GetRootComponent3(true);
            OleDbCommand cm;
            OleDbDataReader rd;
            OleDbConnection oleDb;
            if (!_mSwAddin.OpenModelDatabase(model, out oleDb))
                return;
            cm = new OleDbCommand("SELECT * FROM faners ORDER BY FanerName ", oleDb);
            rd = cm.ExecuteReader();
            List<Faner> faners = new List<Faner>();
            while (rd.Read())
            {
                if (rd["FanerType"] as string != null)
                {
                    faners.Add(new Faner((string)rd["FanerName"], (string)rd["FanerType"], (string)rd["DecorGroup"]));
                }
                else
                {
                    faners.Add(new Faner((string)rd["FanerName"], string.Empty, (string)rd["DecorGroup"]));
                }
            }
            rd.Close();
            Feature feature;
            foreach (var faner in faners)
            {
                string suffix = faner.FanerName.Substring(faner.FanerName.Length - 2, 2);

                feature = FindEdge(_swSelectedComponent, faner.AxFanerName);
                if (feature != null)
                {
                    if (feature.IsSuppressed())
                    {
                        _mSwAddin.SetModelProperty(model, "Faner" + suffix, "", swCustomInfoType_e.swCustomInfoText, string.Empty, true);
                        _mSwAddin.SetModelProperty(model, "colorFaner" + suffix, "", swCustomInfoType_e.swCustomInfoText, string.Empty, true);
                    }
                    else
                    {
                        string fieldValue = model.GetCustomInfoValue(string.Empty, "Faner" + suffix);
                        if (fieldValue == string.Empty)
                        {
                            string msgText = "Для данной детали: " + model.GetPathName() + " кромка Faner" + suffix + " в модели не соответствует свойствам файла сборки. Данная кромка не будет импортирована в программу Покупки! Чтобы исправить эту ошибку используйте опцию \"MrDoors - Отделка кромки\"";
                            MessageBox.Show(msgText, @"MrDoors", MessageBoxButtons.OK);
                        }
                    }
                }
            }
        }
Example #9
0
        public FrmEdge(SwAddin swAddin)
        {
            InitializeComponent();
            _mSwAddin = swAddin;
            _swModel = (ModelDoc2)_mSwAddin.SwApp.ActiveDoc;
            _swSelMgr = (SelectionMgr)_swModel.SelectionManager;
            _swAsmDoc = (AssemblyDoc)_swModel;
            _swAsmDoc.NewSelectionNotify += NewSelection;

            pbEdge11.Image = null;
            pbEdge12.Image = null;
            pbEdge21.Image = null;
            pbEdge22.Image = null;
            NewSelection();

            Show();
        }
Example #10
0
        public FrmSetParameters(SwAddin swAddin)
        {
            InitializeComponent();
            bitmap = Properties.Resources.Brush;
            tabMain.AutoSize = true;
            KeyDown += FormKeyDown;

            _mSwAddin = swAddin;
            _swModel = (ModelDoc2)_mSwAddin.SwApp.ActiveDoc;
            _swSelMgr = (SelectionMgr)_swModel.SelectionManager;

            _swAsmDoc = (AssemblyDoc)_swModel;
            _swAsmDoc.NewSelectionNotify += NewSelection;
            _swAsmDoc.AddItemNotify += AddNewItem;
            tabMain.Selected += TabMainTabSelected;
            tabMain.SelectedIndexChanged += TabMainSelectedIndexChanged;
            if (!Properties.Settings.Default.SetParentWindow)
                TopMost = true;
            Show();
            NewSelection();
        }
Example #11
0
 public PmpHandler(SwAddin addin)
 {
     _userAddin = addin;
     _iSwApp = _userAddin.SwApp;
 }
Example #12
0
            public Component2 GetNeighborStand2(SwAddin SwAddin, Planes.Type plane)
            {
                Component2 currentStand = null;
                string currentStandName;
                dynamic currentStandMates;

                string neighborStandPlane = "";
                switch (plane)
                {
                    case Planes.Type.Left:
                        neighborStandPlane = Planes.GetName(Planes.Type.Right);
                        break;
                    case Planes.Type.Right:
                        neighborStandPlane = Planes.GetName(Planes.Type.Left);
                        break;
                }

                bool searchFinished = false;
                Measure measure = SwAddin.RootModel.Extension.CreateMeasure();
                bool findComp;
                string projectName = Path.GetFileNameWithoutExtension(SwAddin.RootModel.GetPathName());
                //а если его просто нет?
                while (!searchFinished)
                {
                    findComp = false;
                    if (currentStand == null)
                    {
                        currentStandMates = this.Component.GetMates();
                        currentStandName = this.Component.Name;
                    }
                    else
                    {
                        currentStandMates = currentStand.GetMates();
                        currentStandName = currentStand.Name;
                    }

                    foreach (var mate in currentStandMates)
                    {
                        if (mate is Mate2)
                        {
                            Mate2 spec = (Mate2)mate;
                            int mec = spec.GetMateEntityCount();
                            if (mec > 1)
                            {
                                for (int ik = 0; ik < mec; ik++)
                                {
                                    MateEntity2 me = spec.MateEntity(ik);
                                    string name = me.ReferenceComponent.Name;
                                    if (!name.Contains(currentStandName))
                                    {
                                        Component2 mateStand = me.ReferenceComponent;
                                        string filePath = mateStand.GetPathName();
                                        SwDMApplication swDocMgr = SwAddin.GetSwDmApp();
                                        SwDmDocumentOpenError oe;
                                        var swDoc = swDocMgr.GetDocument(filePath, SwDmDocumentType.swDmDocumentUnknown, true, out oe);
                                        SwDmCustomInfoType swDmCstInfoType;
                                        string valueOfName = "";
                                        //todo: говнокод детектед
                                        try
                                        {
                                            valueOfName = swDoc.GetCustomProperty("KitchenType", out swDmCstInfoType);
                                        }
                                        catch { }
                                        if (valueOfName.ToLower().Contains("тумба"))
                                        {
                                            SwAddin.RootModel.ClearSelection();
                                            SwAddin.RootModel.Extension.SelectByID2(string.Format("{0}@{1}@{2}", Planes.GetName(plane), currentStand.Name, projectName), "PLANE", 0, 0, 0, false, 0, null, 0);
                                            SwAddin.RootModel.Extension.SelectByID2(string.Format("{0}@{1}@{2}", neighborStandPlane, mateStand.Name, projectName), "PLANE", 0, 0, 0, true, 0, null, 0);
                                            measure.Calculate(null);

                                            if (measure.IsIntersect && measure.IsParallel)
                                            {
                                                currentStand = mateStand;
                                                findComp = true;
                                            }
                                            SwAddin.RootModel.ClearSelection();
                                        }
                                    }
                                }
                            }
                        }
                    }
                    searchFinished = !findComp;
                }
                return currentStand;
            }
Example #13
0
        public static string GetCommentFromProperties(string faner11, string faner12, string faner21, string faner22, double angle, SwAddin _mSwAddin, ModelDoc2 model)
        {
            bool fan11exist = !string.IsNullOrEmpty(faner11) && faner11 != "Нет";
            bool fan12exist = !string.IsNullOrEmpty(faner12) && faner12 != "Нет";
            bool fan21exist = !string.IsNullOrEmpty(faner21) && faner21 != "Нет";
            bool fan22exist = !string.IsNullOrEmpty(faner22) && faner22 != "Нет";
            FanersBools fb = new FanersBools();
            if (fan11exist)
                fb = fb | FanersBools.Faner11;
            if (fan12exist)
                fb = fb | FanersBools.Faner12;
            if (fan21exist)
                fb = fb | FanersBools.Faner21;
            if (fan22exist)
                fb = fb | FanersBools.Faner22;
            #region comment from fb and angle
            if (Math.Abs(angle) < 0.00001)
            {
                switch (fb)
                {
                    case FanersBools.Faner11:
                        return "KROMKOY K SEBE";
                    case FanersBools.Faner12:
                        return "KROMKOY OT SEBYA";
                    case FanersBools.Faner21:
                        return "KROMKOY OT UPORA";
                    case FanersBools.Faner22:
                        return "KROMKOY K UPORU";
                    case FanersBools.Faner21 | FanersBools.Faner22:
                    case FanersBools.Faner12 | FanersBools.Faner11:
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        OleDbCommand cm;
                        OleDbDataReader rd;
                        OleDbConnection oleDb;
                        if (!_mSwAddin.OpenModelDatabase(model, out oleDb))
                            return "Error DB Access!";
                        cm = new OleDbCommand("SELECT * FROM decors_conf ORDER BY id ", oleDb);
                        rd = cm.ExecuteReader();
                        rd.Read();
                        bool? textureDirection = rd["Texture direction"] as bool?;
                        string retresult;
                        if (textureDirection == null || textureDirection == false)
                            retresult= "VOLOKNA GORIZONTALNO";
                        else
                            retresult= "VOLOKNA VERTIKALNO";
                        if (faner11 == "N")
                        {
                            retresult = retresult + ", GOLOY K SEBE";
                        }
                        return retresult;
                    case FanersBools.Faner11 | FanersBools.Faner22:
                        return "KROMKOY K UPORU & K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner21:
                        return "KROMKOY OT UPORA & K SEBE";
                    case FanersBools.Faner12 | FanersBools.Faner22:
                        return "KROMKOY K UPORU & OT SEBYA";
                    case FanersBools.Faner21 | FanersBools.Faner12:
                        return "KROMKOY OT UPORA & OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner22 | FanersBools.Faner12:
                        return "GOLOY OT UPORA";
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21:
                        return "GOLOY K UPORU";
                    case FanersBools.Faner11 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY OT SEBYA";
                    case FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY K SEBE";
                    default:
                        return fb.ToString();

                }
            }
            else if (Math.Abs(angle + 90) < 0.00001 || Math.Abs(angle - 270) < 0.00001)//
            {
                switch (fb)
                {
                    case FanersBools.Faner11:
                        return "KROMKOY OT UPORA";
                    case FanersBools.Faner12:
                        return "KROMKOY K UPORU";
                    case FanersBools.Faner21:
                        return "KROMKOY OT SEBYA";
                    case FanersBools.Faner22:
                        return "KROMKOY K SEBE";
                    case FanersBools.Faner21 | FanersBools.Faner22:
                    case FanersBools.Faner12 | FanersBools.Faner11:
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        OleDbCommand cm;
                        OleDbDataReader rd;
                        OleDbConnection oleDb;
                        if (!_mSwAddin.OpenModelDatabase(model, out oleDb))
                            return "Error DB Access!";
                        cm = new OleDbCommand("SELECT * FROM decors_conf ORDER BY id ", oleDb);
                        rd = cm.ExecuteReader();
                        rd.Read();
                        bool? textureDirection = rd["Texture direction"] as bool?;
                        string retresult;
                        if (textureDirection == null || textureDirection == false)
                            retresult= "VOLOKNA VERTIKALNO";
                        else
                            retresult= "VOLOKNA GORIZONTALNO";
                         if (faner11 == "N")
                        {
                            retresult = retresult + ", GOLOY K SEBE";
                        }
                        return retresult;
                    case FanersBools.Faner11 | FanersBools.Faner22:
                        return "KROMKOY OT UPORA & K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner21:
                        return "KROMKOY OT UPORA & OT SEBYA";
                    case FanersBools.Faner12 | FanersBools.Faner22:
                        return "KROMKOY K UPORU & K SEBE";
                    case FanersBools.Faner21 | FanersBools.Faner12:
                        return "KROMKOY K UPORU & OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner22 | FanersBools.Faner12:
                        return "GOLOY OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21:
                        return "GOLOY K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY K UPORU";
                    case FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY OT UPORA";
                    default:
                        return fb.ToString();

                }
            }
            else if (Math.Abs(angle - 180) < 0.00001 || Math.Abs(angle + 180) < 0.00001)
            {
                switch (fb)
                {
                    case FanersBools.Faner11:
                        return "KROMKOY OT SEBYA";
                    case FanersBools.Faner12:
                        return "KROMKOY K SEBE";
                    case FanersBools.Faner21:
                        return "KROMKOY K UPORU";
                    case FanersBools.Faner22:
                        return "KROMKOY OT UPORA";
                    case FanersBools.Faner21 | FanersBools.Faner22:
                    case FanersBools.Faner12 | FanersBools.Faner11:
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        OleDbCommand cm;
                        OleDbDataReader rd;
                        OleDbConnection oleDb;
                        if (!_mSwAddin.OpenModelDatabase(model, out oleDb))
                            return "Error DB Access!";
                        cm = new OleDbCommand("SELECT * FROM decors_conf ORDER BY id ", oleDb);
                        rd = cm.ExecuteReader();
                        rd.Read();
                        bool? textureDirection = rd["Texture direction"] as bool?;
                        string retresult;
                        if (textureDirection == null || textureDirection == false)
                            retresult= "VOLOKNA GORIZONTALNO";
                        else
                            retresult= "VOLOKNA VERTIKALNO";
                        if (faner11 == "N")
                        {
                            retresult = retresult + ", GOLOY K SEBE";
                        }
                        return retresult;
                    case FanersBools.Faner11 | FanersBools.Faner22:
                        return "KROMKOY OT UPORA & OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner21:
                        return "KROMKOY K UPORU & OT SEBYA";
                    case FanersBools.Faner12 | FanersBools.Faner22:
                        return "KROMKOY OT UPORA & K SEBE";
                    case FanersBools.Faner21 | FanersBools.Faner12:
                        return "KROMKOY K UPORU & K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner22 | FanersBools.Faner12:
                        return "GOLOY K UPORU";
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21:
                        return "GOLOY OT UPORA";
                    case FanersBools.Faner11 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY K SEBE";
                    case FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY OT SEBYA";
                    default:
                        return fb.ToString();

                }
            }
            else if (Math.Abs(angle - 90) < 0.00001)
            {
                switch (fb)
                {
                    case FanersBools.Faner11:
                        return "KROMKOY K UPORU";
                    case FanersBools.Faner12:
                        return "KROMKOY OT UPORA";
                    case FanersBools.Faner21:
                        return "KROMKOY K SEBE";
                    case FanersBools.Faner22:
                        return "KROMKOY OT SEBYA";
                    case FanersBools.Faner21 | FanersBools.Faner22:
                    case FanersBools.Faner12 | FanersBools.Faner11:
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        OleDbCommand cm;
                        OleDbDataReader rd;
                        OleDbConnection oleDb;
                        if (!_mSwAddin.OpenModelDatabase(model, out oleDb))
                            return "Error DB Access!";
                        cm = new OleDbCommand("SELECT * FROM decors_conf ORDER BY id ", oleDb);
                        rd = cm.ExecuteReader();
                        rd.Read();
                        bool? textureDirection = rd["Texture direction"] as bool?;
                        string retresult;
                        if (textureDirection == null || textureDirection == false)
                            retresult= "VOLOKNA VERTIKALNO";
                        else
                            retresult= "VOLOKNA GORIZONTALNO";
                            if (faner11 == "N")
                        {
                            retresult = retresult + ", GOLOY K SEBE";
                        }
                        return retresult;
                    case FanersBools.Faner11 | FanersBools.Faner22:
                        return "KROMKOY K UPORU & OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner21:
                        return "KROMKOY K UPORU & K SEBE";
                    case FanersBools.Faner12 | FanersBools.Faner22:
                        return "KROMKOY OT UPORA & OT SEBYA";
                    case FanersBools.Faner21 | FanersBools.Faner12:
                        return "KROMKOY OT UPORA & K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner22 | FanersBools.Faner12:
                        return "GOLOY K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21:
                        return "GOLOY OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY OT UPORA";
                    case FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY K UPORU";
                    default:
                        return fb.ToString();

                }
            }
            else
                return "angle ne kraten 90";
            #endregion
        }
Example #14
0
 public PartEventHandler(ModelDoc2 modDoc, SwAddin addin)
     : base(modDoc, addin)
 {
     _doc = (PartDoc)Document;
 }
Example #15
0
 public DrawingEventHandler(ModelDoc2 modDoc, SwAddin addin)
     : base(modDoc, addin)
 {
     _doc = (DrawingDoc)modDoc;
 }
Example #16
0
 public AssemblyEventHandler(ModelDoc2 modDoc, SwAddin addin)
     : base(modDoc, addin)
 {
     _doc = (AssemblyDoc)Document;
 }
Example #17
0
 private static void CheckMdbForDecors(SwAddin mSwAddin, ModelDoc2 inModel, List<ModelDoc2> list, Component2 comp, List<ModelDoc2> faulsModels)
 {
     OleDbConnection oleDb;
     if (mSwAddin.OpenModelDatabase(inModel, out oleDb))
     {
         var oleSchem = oleDb.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
         if (oleSchem.Rows.Cast<DataRow>().Any(row => (string)row["TABLE_NAME"] == "decors"))
         {
             if (!list.Contains(inModel))
                 list.Add(inModel);
         }
         else
         {
             if (faulsModels != null && !faulsModels.Contains(inModel))
                 faulsModels.Add(inModel);
             oleDb.Close();
             if (comp != null)
             {
                 comp = comp.GetParent();
                 if (comp != null && !comp.IsSuppressed())
                 {
                     inModel = comp.IGetModelDoc();
                     if (inModel != null && mSwAddin.OpenModelDatabase(inModel, out oleDb) && !list.Contains(inModel))
                     {
                         oleSchem = oleDb.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                         if (oleSchem.Rows.Cast<DataRow>().Any(row => (string)row["TABLE_NAME"] == "decors"))
                         {
                             if (!list.Contains(inModel))
                                 list.Add(inModel);
                         }
                         oleDb.Close();
                     }
                 }
             }
         }
         if (oleDb != null)
             oleDb.Close();
     }
 }
Example #18
0
        internal static List<Component2> GetConfigComponents(SwAddin swAddin, ModelDoc2 model, int configNumber)
        {
            List<Component2> outComps = new List<Component2>();

            List<string> compsNames = GetComponentsNamesOnConfiguration(swAddin, model, configNumber);

            LinkedList<Component2> modelComponents = new LinkedList<Component2>();
            swAddin.GetComponents(model.IGetActiveConfiguration().IGetRootComponent2(), modelComponents, true, false);

            foreach (var component in modelComponents)
            {
                if (component.IsSuppressed()) continue;
                string compName = Path.GetFileNameWithoutExtension(swAddin.GetModelNameWithoutSuffix(component.GetPathName()));

                foreach (string name in compsNames)
                {
                    if (compName.Contains(name))
                    {
                        outComps.Add(component);
                        break;
                    }
                }
            }
            return outComps;
        }
Example #19
0
 public DimensionDraft(SwAddin swAddin)
 {
     _swAdd = swAddin;
     _swApp = swAddin.SwApp;
 }
Example #20
0
        public static string GetComment(ModelDoc2 model, double angle, SwAddin _mSwAddin)
        {
            //Считать по тому, подавлены они физически или нет. Если Есть св-во Faner11 а тела нет или подавлено то записать в свойство пустую строку
            //если наоборот Тело есть а Faner11 -нет или пустое, то записать туда H или DefaultValue
            Component2 _swSelectedComponent =model.ConfigurationManager.ActiveConfiguration.GetRootComponent3(true);
            OleDbCommand cm;
            OleDbDataReader rd;
            OleDbConnection oleDb;
            if (!_mSwAddin.OpenModelDatabase(model, out oleDb))
                return "Error DB Access!";
            cm = new OleDbCommand("SELECT * FROM faners ORDER BY FanerName ", oleDb);
            rd = cm.ExecuteReader();
            List<Faner> faners = new List<Faner>();
            while (rd.Read())
            {
                if (rd["FanerType"] as string != null)
                {
                    faners.Add(new Faner((string)rd["FanerName"], (string)rd["FanerType"], (string)rd["DecorGroup"]));
                }
                else
                {
                    faners.Add(new Faner((string)rd["FanerName"], string.Empty, (string)rd["DecorGroup"]));
                }
            }
            rd.Close();
            FanersBools fb = new FanersBools();
            Feature feature;
            foreach (var faner in faners)
            {
                switch (faner.FanerName.Substring(faner.FanerName.Length - 2, 2))
                {
                    case "11":
                         feature = FindEdge(_swSelectedComponent, faner.AxFanerName);
                            if (feature != null)
                            {
                                if (!feature.IsSuppressed())
                                    fb = fb | FanersBools.Faner11;
                            }
                        break;
                    case "12":
                        feature = FindEdge(_swSelectedComponent, faner.AxFanerName);
                            if (feature != null)
                            {
                                if (!feature.IsSuppressed())
                                    fb = fb | FanersBools.Faner12;
                            }
                        break;
                    case "21":
                        feature = FindEdge(_swSelectedComponent, faner.AxFanerName);
                            if (feature != null)
                            {
                                if (!feature.IsSuppressed())
                                    fb = fb | FanersBools.Faner21;
                            }
                        break;
                    case "22":
                        feature = FindEdge(_swSelectedComponent, faner.AxFanerName);
                            if (feature != null)
                            {
                                if (!feature.IsSuppressed())
                                    fb = fb | FanersBools.Faner22;
                            }
                        break;
                }
            }
            if (angle == 0)
            {
                switch (fb)
                {
                    case FanersBools.Faner11:
                        return "KROMKOY K SEBE";
                    case FanersBools.Faner12:
                        return "KROMKOY OT SEBYA";
                    case FanersBools.Faner21:
                        return "KROMKOY OT UPORA";
                    case FanersBools.Faner22:
                        return "KROMKOY K UPORU";
                    case FanersBools.Faner21 | FanersBools.Faner22:
                    case FanersBools.Faner12 | FanersBools.Faner11:
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        cm = new OleDbCommand("SELECT * FROM decors_conf ORDER BY id ", oleDb);
                        rd = cm.ExecuteReader();
                        rd.Read();
                        bool? textureDirection = rd["Texture direction"] as bool?;
                        if (textureDirection == null || textureDirection == false)
                            return "VOLOKNA GORIZONTALNO";
                        else
                            return "VOLOKNA VERTIKALNO";

                    case FanersBools.Faner11 | FanersBools.Faner22:
                        return "KROMKOY K UPORU & K SEBE";
                    case FanersBools.Faner11 | FanersBools.Faner21:
                        return "KROMKOY OT UPORA & K SEBE";
                    case FanersBools.Faner12 | FanersBools.Faner22:
                        return "KROMKOY K UPORU & OT SEBYA";
                    case FanersBools.Faner21 | FanersBools.Faner12:
                        return "KROMKOY OT UPORA & OT SEBYA";
                    case FanersBools.Faner11 | FanersBools.Faner22 | FanersBools.Faner12:
                        return "GOLOY OT UPORA";
                    case FanersBools.Faner11 | FanersBools.Faner12 | FanersBools.Faner21:
                        return "GOLOY K UPORU";
                    case FanersBools.Faner11 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY OT SEBYA";
                    case FanersBools.Faner12 | FanersBools.Faner21 | FanersBools.Faner22:
                        return "GOLOY K SEBE";
                    default:
                        return fb.ToString();

                }
            }
            else
                return "angle!=0";
        }
Example #21
0
 internal static bool CheckListForDeletedModels(SwAddin mSwAddin)
 {
     var list = new List<ModelDoc2>();
     var swModel = mSwAddin.SwApp.IActiveDoc2;
     string xNameOfAss = mSwAddin.GetXNameForAssembly(false, Path.GetFileNameWithoutExtension(swModel.GetPathName()));
     foreach (var lmdb in DictionaryListMdb[xNameOfAss])
     {
         try
         {
             lmdb.GetPathName();
             list.Add(lmdb);
         }
         catch (COMException)
         {
             continue;
         }
     }
     DictionaryListMdb[xNameOfAss] = list;
     return list.Count == 0;
 }
Example #22
0
 public static void SetDefault(OleDbConnection oleDb, ModelDoc2 _swSelModel, string colorName, SwAddin _mSwAddin,string fullFileNameColor)
 {
     Component2 _swSelectedComponent =_swSelModel.ConfigurationManager.ActiveConfiguration.GetRootComponent3(true);
     OleDbCommand cm;
     OleDbDataReader rd;
     if (!_mSwAddin.OpenModelDatabase(_swSelModel, out oleDb))
         return;
     cm = new OleDbCommand("SELECT * FROM faners ORDER BY FanerName ", oleDb);
     rd = cm.ExecuteReader();
     List<Faner> faners = new List<Faner>();
     while (rd.Read())
     {
         if (rd["FanerType"] as string != null)
         {
             faners.Add(new Faner((string)rd["FanerName"], (string)rd["FanerType"], (string)rd["DecorGroup"]));
         }
         else
         {
             faners.Add(new Faner((string)rd["FanerName"], string.Empty, (string)rd["DecorGroup"]));
         }
     }
     rd.Close();
     string value = string.Empty;
     Feature feature,axfeature;
     foreach (var faner in faners)
     {
         string suffix = faner.FanerName.Substring(faner.FanerName.Length - 2, 2);
                     //красим кромку
         feature = FindEdge(_swSelectedComponent, faner.FanerName);
         axfeature = FindEdge(_swSelectedComponent, faner.AxFanerName);
         if (feature != null && axfeature!=null)
         {
             if (!feature.IsSuppressed() && !axfeature.IsSuppressed())
             {
                 SetDecors(_swSelModel, feature, fullFileNameColor);
                 _mSwAddin.SetModelProperty(_swSelModel, "Faner"+suffix, "",swCustomInfoType_e.swCustomInfoText,faner.DefaultFanerType, true);
                 _mSwAddin.SetModelProperty(_swSelModel, "colorFaner"+suffix, "",swCustomInfoType_e.swCustomInfoText, colorName, true);
             }
         }
     }
 }
Example #23
0
        private static List<string> GetComponentsNamesOnConfiguration(SwAddin _mSwAddin, ModelDoc2 parentModel, int configNumber)
        {
            List<string> elems = new List<string>();

            OleDbConnection oleDb;
            if (_mSwAddin.OpenModelDatabase(parentModel, out oleDb))
            {
                using (oleDb)
                {
                    OleDbCommand cm = new OleDbCommand("SELECT * FROM decors WHERE Number = " + configNumber, oleDb);
                    OleDbDataReader rd = cm.ExecuteReader();
                    while (rd.Read())
                    {
                        elems.Add((string)rd["Element"]);
                    }
                    rd.Close();
                }
            }

            AssemblyDoc pmAssembly = parentModel as AssemblyDoc;
            if (pmAssembly != null)
            {
                var comps = new LinkedList<Component2>();
                _mSwAddin.GetComponents(parentModel.IGetActiveConfiguration().IGetRootComponent2(), comps, true, false);
                foreach (Component2 comp in comps)
                {
                    ModelDoc2 model = comp.IGetModelDoc();
                    AssemblyDoc aDoc = model as AssemblyDoc;
                    if (aDoc != null)
                        elems.AddRange(GetComponentsNamesOnConfiguration(_mSwAddin, model, configNumber));
                }
            }
            return elems;
        }
Example #24
0
        internal static List<DecorsListS> GetListComponentForDecors(SwAddin swAddin, OleDbDataReader reader, LinkedList<Component2> components)
        {
            var listDetailComps = components.Select(x => x.IGetModelDoc()).Where(x => x != null
                                                                                          &&
                                                                                          x.GetType() ==
                                                                                          (int)
                                                                                          swDocumentTypes_e
                                                                                              .swDocPART)
                    .Select(
                        x => Path.GetFileNameWithoutExtension(swAddin.
                                                                  GetModelNameWithoutSuffix(
                                                                      x.GetPathName())));

            var decorsLists = new List<DecorsListS>();
            int i = 0;
            while (reader.Read())
            {
                //if(listDetailComps.Contains((string)reader["Element"]))
                string rr = (string)reader["Element"];
                if (listDetailComps.Where(x => x.Contains(rr)).FirstOrDefault() != null)
                {
                    var numbPos = Convert.ToInt32(reader["Number"]);
                    if (numbPos != i)
                    {
                        foreach (var component2 in components)
                        {
                            if (component2.IsSuppressed()) continue;
                            //if (Path.GetFileNameWithoutExtension(swAddin.GetModelNameWithoutSuffix(component2.GetPathName()))== ((string)reader["Element"]))
                            if (Path.GetFileNameWithoutExtension(swAddin.GetModelNameWithoutSuffix(component2.GetPathName())).Contains((string)reader["Element"]))
                            {
                                decorsLists.Add(new DecorsListS((int)reader["Number"], component2));
                                break;
                            }
                        }
                        i = numbPos;
                    }
                }
            }
            return decorsLists;
        }
Example #25
0
        internal static List<ModelDoc2> GetAllModelsWithMdb(SwAddin mSwAddin, ModelDoc2 swModel)
        {
            UserProgressBar pb;
            mSwAddin.SwApp.GetUserProgressBar(out pb);
            var list = new List<ModelDoc2>();
            var outComps = new LinkedList<Component2>();
            var faulsMod = new List<ModelDoc2>();

            if (mSwAddin.GetComponents(swModel.IGetActiveConfiguration().IGetRootComponent2(),
                                        outComps, true, false))
            {
                pb.Start(0, outComps.Count, "Перебор деталей");
                int i = 0;
                foreach (var component in outComps)
                {
                    if (component.IsSuppressed())
                    {
                        i++;
                        pb.UpdateProgress(i);
                        continue;
                    }
                    var inModel = component.IGetModelDoc();
                    if (list.Contains(inModel))
                    {
                        i++;
                        pb.UpdateProgress(i);
                        continue;
                    }
                    var comp = component;

                    int errCount = 0;
                    while ((inModel == null || mSwAddin.GetModelDatabaseFileName(inModel) == "") && errCount < 10)
                    {
                        if (comp != null)
                        {
                            comp = comp.GetParent();
                            if (comp != null && !comp.IsSuppressed())
                            {
                                inModel = comp.IGetModelDoc();
                            }
                        }
                        errCount++;
                    }
                    if (errCount == 10 && inModel != null)
                    {
                        i++;
                        pb.UpdateProgress(i);
                        continue;
                    }

                    if (inModel != null &&
                        Path.GetFileNameWithoutExtension(inModel.GetPathName()).Contains("#"/* +
                                                                                         mSwAddin.GetXNameForAssembly()*/) &&
                        !list.Contains(inModel) && !faulsMod.Contains(inModel))
                        CheckMdbForDecors(mSwAddin, inModel, list, comp, faulsMod);

                    i++;
                    pb.UpdateProgress(i);
                }
                pb.End();
            }
            return list;
        }
Example #26
0
        internal static List<DimensionConfiguration> GetListComponentForDimension(SwAddin swAddin, OleDbDataReader reader, LinkedList<Component2> components)
        {
            var listDetailComps = components.Select(x => x.IGetModelDoc()).Where(x => x != null)
                    .Select(
                        x => Path.GetFileNameWithoutExtension(swAddin.
                                                                  GetModelNameWithoutSuffix(
                                                                      x.GetPathName()))).ToArray();
            string tmpChar;
            string[] listDetailCompTmp = new string[listDetailComps.Count()];
            int ii = 0;
            foreach (var listDetailComp in listDetailComps)
            {
                if (listDetailComp.Length < 6)
                {
                    listDetailCompTmp[ii] = listDetailComp;
                    ii++;
                    continue;
                }
                tmpChar = listDetailComp.Substring(listDetailComp.Length - 4, 1);
                if ((listDetailComp.Last() == 'P' || listDetailComp.Last() == 'p') && (tmpChar == "#"))
                    listDetailCompTmp[ii] = listDetailComp.Substring(0, listDetailComp.Length - 4);
                else
                    listDetailCompTmp[ii] = listDetailComp;
                ii++;
            }
            //listDetailComps = new string[listDetailCompTmp.Length];
            listDetailComps = listDetailCompTmp;
            var decorsLists = new List<DimensionConfiguration>();
            int i = 0;
            while (reader.Read())
            {
                if (listDetailComps.Contains((string)reader["element"]))
                {
                    var numbPos = Convert.ToInt32(reader["number"]);

                    if (numbPos != i)
                    {
                        List<Component2> compsWithNumberCopies = new List<Component2>();
                        foreach (var comp in components)
                        {
                            string fileName = Path.GetFileNameWithoutExtension(swAddin.GetModelNameWithoutSuffix(comp.GetPathName()));
                            int rIndex = fileName.LastIndexOf('#');
                            if (rIndex != -1)
                                fileName = fileName.Remove(rIndex, fileName.Length - rIndex);
                            if (fileName == (string)reader["Element"])
                                compsWithNumberCopies.Add(comp);
                        }

                        try
                        {
                            compsWithNumberCopies.Sort(
                                (x, y) =>
                                Convert.ToInt32(x.Name.Substring(x.Name.LastIndexOf('-') + 1)).CompareTo(
                                    Convert.ToInt32(y.Name.Substring(y.Name.LastIndexOf('-') + 1))));

                        }
                        catch { }
                        if (compsWithNumberCopies.Count > 0)
                        {
                            Component2 neededComp = compsWithNumberCopies.First();
                            decorsLists.Add(new DimensionConfiguration((int)reader["number"], neededComp,
                                                                       (string)reader["caption"],
                                                                       (string)reader["idslave"], (int)reader["id"]));
                        }
                        i = numbPos;
                    }
                }
            }
            return decorsLists;
        }
Example #27
0
 public UserPmPage(SwAddin addin)
 {
     _userAddin = addin;
     _iSwApp = _userAddin.SwApp;
     CreatePropertyManagerPage();
 }
Example #28
0
        public static void RecopyHeare(SwAddin swAddin, ISldWorks swApp,ModelDoc2 swModelDoc)
        {
            try
            {
            SwAddin.IsEventsEnabled = false;
            swModelDoc.Save();
            ModelDocExtension swModelDocExt = default(ModelDocExtension);
            PackAndGo swPackAndGo = default(PackAndGo);
            Dictionary<string,string> filesToHideAndShow = new Dictionary<string, string>();
            WaitTime.Instance.ShowWait();
            WaitTime.Instance.SetLabel("Отрыв сборки от библиотеки.");
            int warnings = 0;
            int errors = 0;
            string _openFile = swModelDoc.GetPathName();

            swAddin.currentPath = string.Empty;
            swApp.CloseAllDocuments(true);
            if (!Directory.Exists("C:\\Temp"))
                Directory.CreateDirectory("C:\\Temp");
            string tempDir = Path.Combine("C:\\Temp", Path.GetFileNameWithoutExtension(_openFile));
            if (Directory.Exists(tempDir))
            {
                Directory.Delete(tempDir, true);
            }
            Directory.CreateDirectory(tempDir);
            string fileToOpenTemp = Path.Combine(tempDir, Path.GetFileName(_openFile));
            //File.Copy(_openFile, fileToOpenTemp);
            Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(Path.GetDirectoryName(_openFile), tempDir);
            if (!File.Exists(fileToOpenTemp))
            {
                throw new Exception("Ошибка. Не найден файл: " + fileToOpenTemp);
            }
            swAddin.DetachEventHandlers();
            swModelDoc = (ModelDoc2)swApp.OpenDoc6(fileToOpenTemp, (int)swDocumentTypes_e.swDocASSEMBLY,
                                                    (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", errors,
                                                    warnings);
            swAddin.AttachEventHandlers();
            try
            {
                foreach (var file in Directory.GetFiles(Path.GetDirectoryName(_openFile)))
                {
                    File.Delete(file);
                }
                foreach (var directory in Directory.GetDirectories(Path.GetDirectoryName(_openFile)))
                {
                    Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(directory, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
                    //Directory.Delete(directory, true);
                }
            }
            catch (Exception e)
            {
                Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory( tempDir,Path.GetDirectoryName(_openFile),true);
                swAddin.DetachEventHandlers();
                swApp.CloseAllDocuments(true);
                swModelDoc = (ModelDoc2)swApp.OpenDoc6(_openFile, (int)swDocumentTypes_e.swDocASSEMBLY,
                                                        (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", errors,
                                                        warnings);
                swAddin.AttachEventHandlers();
                MessageBox.Show(@"Из-за ошибки: """ + e.Message + @""" не удалось оторвать проект. Перезапустите SW и попробуйте еще раз.");
                return;
            }

            //File.Delete(_openFile);
            swModelDocExt = (ModelDocExtension)swModelDoc.Extension;

            swPackAndGo = (PackAndGo)swModelDocExt.GetPackAndGo();

            //swModelDoc = (ModelDoc2)swApp.OpenDoc6(openFile, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
            //swModelDocExt = (ModelDocExtension)swModelDoc.Extension;

            int namesCount = swPackAndGo.GetDocumentNamesCount();

            object fileNames;
            object[] pgFileNames = new object[namesCount - 1];
            bool status = swPackAndGo.GetDocumentNames(out fileNames);
            string[] newFileNames = new string[namesCount];
            string[] rFileNames1 = fileNames as string[];
            if (rFileNames1 == null)
                throw new Exception("Не удалось оторвать заказ.");
            string[] rFileNames = new string[rFileNames1.Length];

            for (int ii = 0; ii < rFileNames1.Length;ii++ )
            {
                var tt1 = Microsoft.VisualBasic.FileSystem.Dir(rFileNames1[ii]);
                if (tt1==null)
                    tt1 = Microsoft.VisualBasic.FileSystem.Dir(rFileNames1[ii], Microsoft.VisualBasic.FileAttribute.Hidden);
                rFileNames[ii] = Path.Combine(Path.GetDirectoryName(rFileNames1[ii]),tt1);
            }
            //удалить неактуальные программы..
            DeleteXmlFiles(tempDir, rFileNames,_openFile);
            //bool isAuxiliary = (swCompModel.get_CustomInfo2("", "Auxiliary") == "Yes");
            //bool isAccessory = (swCompModel.get_CustomInfo2("", "Accessories") == "Yes");

            //string strSubCompNewFileName;
            //if (GetComponentNewFileName(swModel, isAuxiliary, isAccessory,
            //                            isFirstLevel, strSubCompOldFileNameFromModel,
            //                            out strSubCompNewFileName))
            //{
            //}

            string xName = swAddin.GetXNameForAssembly(false, Path.GetFileNameWithoutExtension(_openFile));
            string furnDir = Path.Combine(Path.GetDirectoryName(_openFile), "ФУРНИТУРА");
            string furnHelpDir = Path.Combine(Path.GetDirectoryName(_openFile), "ФУРНИТУРА", "Модели фурнитуры");
            string partDir = Path.Combine(Path.GetDirectoryName(_openFile), "ДЕТАЛИ");
            string partDirHelp = Path.Combine(Path.GetDirectoryName(_openFile), "ДЕТАЛИ", "Вспомогательные детали");
            string partForAssDir = Path.Combine(Path.GetDirectoryName(_openFile), "ДЕТАЛИ", "Детали для сборок");

            //DSOFile.OleDocumentProperties m_oDocument = null;
            //m_oDocument = new DSOFile.OleDocumentPropertiesClass();
            for (int i = 0; i<namesCount;i++)
            {

                //вот пример как выглядит массив элементов в fileNames. Переделать их в newFileNames и все...
            //                [0]	"c:\\temp\\2222\\2222.sldasm"	string
            //[1]	"d:\\_swlib_backup\\крепежная фурнитура\\вспомогательные\\3090_штифт для эксцентрика пластикового 20 мм.sldprt"	string
            //[2]	"d:\\_swlib_backup\\крепежная фурнитура\\вспомогательные\\3093_эксцентрик пластиковый для дсп 16 мм 20 мм.sldprt"	string
            //[3]	"d:\\_swlib_backup\\крепежная фурнитура\\вспомогательные\\отв для арт. 3090.sldprt"	string
            //[4]	"d:\\_swlib_backup\\крепежная фурнитура\\3093+3090_(эксцентрик пластиковый 20 мм для дсп 16 мм+штифт для эксцентрика пластикового 20 мм).sldasm"	string
            //[5]	"d:\\_swlib_backup\\шкафы-купе\\каркасные детали\\дсп 16 мм\\вспомогательные\\8504_панель вкладная 000a01p.sldprt"	string
            //[6]	"d:\\_swlib_backup\\шкафы-купе\\каркасные детали\\дсп 16 мм\\8504f_панель вкладная 000a01p.sldasm"	string

                //в rFileNames[i] вот что:
                //d:\_swlib_backup\шкафы-купе\каркасы шкафов-купе\вспомогательные\детали для сборок\Панель боковая правая_K02214P.SLDPRT
                //если содержит _swlib_backup и на конце 2 цифры + "P" = заменяем эти 2 цифры на 01 и помещаем оба файлика в список
                //потом пробегусь по списку. 01 - убрать скрытие, для старого - скрыть

                string fileName = Path.GetFileName(rFileNames[i]);
                string tmprFileName = rFileNames[i];
                if (!Directory.Exists(partDir))
                    Directory.CreateDirectory(partDir);
                if (fileName.ToLower().Contains(Path.GetFileName(_openFile.ToLower())))
                {
                    newFileNames[i] = _openFile;
                    continue;
                }
                if (rFileNames[i].ToLower().Contains(tempDir.ToLower()))
                {
                    newFileNames[i] = rFileNames[i].Replace(tempDir.ToLower(), Path.GetDirectoryName(_openFile));
                    continue;
                }
                string idCopyTo = rFileNames[i].Substring(rFileNames[i].Length - 10, 2);
                  int newNumber;
                char lastChar = Path.GetFileNameWithoutExtension(rFileNames[i]).Last();
                if ((lastChar != 'p' && lastChar!='P') || !int.TryParse(idCopyTo, out newNumber))//(rFileNames[i].ToLower().Contains("крепежная фурнитура") || rFileNames[i].ToLower().Contains("фурнитура для каркасов"))
                {
                    if (!Directory.Exists(furnDir))
                        Directory.CreateDirectory(furnDir);

                    if (rFileNames[i].ToLower().Contains("вспомогательные"))
                    {
                        //2222//ФУРНИТУРА//Модели фурнитуры
                        if (!Directory.Exists(furnHelpDir))
                            Directory.CreateDirectory(furnHelpDir);
                        newFileNames[i] = Path.Combine(furnHelpDir, Path.GetFileNameWithoutExtension(rFileNames[i]) + " #" + xName+"-1" + Path.GetExtension(rFileNames[i]));
                        continue;
                    }
                    else
                    {
                        //2222//ФУРНИТУРА//
                        newFileNames[i] = Path.Combine(furnDir, Path.GetFileNameWithoutExtension(rFileNames[i]) + " #" + xName +"-1"+ Path.GetExtension(rFileNames[i]));
                        continue;
                    }
                }
                else
                {
                    tmprFileName = GetFileNameWithoutSuff(rFileNames[i]);
                }
                string fnext = Path.GetFileNameWithoutExtension(tmprFileName);
                string[] arr = fnext.Split('-').ToArray();
                if (arr.Length != 2)
                {
                    //учитывать только последний "-"
                    string[] tmp = new string[2];
                    for (int j = 0; j < arr.Length-1; j++)
                    {
                        tmp[0] = string.Format("{0}-{1}", tmp[0], arr[j]);
                    }
                    tmp[0] = tmp[0].Remove(0, 1);
                    tmp[1] = arr.Last();
                    arr = tmp;
                }
                string newName = arr[0] + " #" + xName+"-" + arr[1] + Path.GetExtension(tmprFileName);
                if (tmprFileName.ToLower().Contains("вспомогательные"))
                {
                    //if (true)//(tmprFileName.ToLower().Contains("детали для сборок"))//|| Path.GetExtension(tmprFileName).ToLower()==".sldprt" )
                    //{
                        if (!Directory.Exists(partForAssDir))
                            Directory.CreateDirectory(partForAssDir);
                        newFileNames[i] = Path.Combine(partForAssDir, newName);
                        continue;
                    //}
                    ////2222\ДЕТАЛИ\Вспомогательные детали
                    //if (!Directory.Exists(partDirHelp))
                    //    Directory.CreateDirectory(partDirHelp);

                    //newFileNames[i] = Path.Combine(partDirHelp, newName);
                    //continue;
                }
                newFileNames[i] = Path.Combine(partDir, newName);
            }
            BStrWrapper[] pgSetFileNames;
            //тут надо немного поправить newFileNames так, чтобы не было одинаковых..
            string[] tmpFileNames = new string[newFileNames.Length];
            int jj = 0;
            foreach (var tmpFileName in newFileNames)
            {
                int same = tmpFileNames.Count(f => f!=null ? f.ToLower() == tmpFileName.ToLower() : false);
                if (same > 0 && !tmpFileName.Contains("фурнитура") && !tmpFileName.Contains("ФУРНИТУРА"))
                {
                    string tmp = Path.GetFileNameWithoutExtension(tmpFileName).Split('-').LastOrDefault();
                    if (string.IsNullOrEmpty(tmp))
                        continue;
                    int tmpNumb;
                    if (!int.TryParse(tmp, out tmpNumb))
                        continue;

                    int index = Path.GetFileNameWithoutExtension(tmpFileName).IndexOf('-');
                    string substr = Path.GetFileNameWithoutExtension(tmpFileName).Substring(0, index)+"-"+(tmpNumb+1).ToString() + Path.GetExtension(tmpFileName);
                    string res = Path.Combine(Path.GetDirectoryName(tmpFileName), substr);
                next:
                    same = tmpFileNames.Count(f => f != null ? f.ToLower() == res.ToLower() : false);
                    if (same > 0)
                    {
                        tmp = Path.GetFileNameWithoutExtension(res).Split('-').LastOrDefault();
                        if (string.IsNullOrEmpty(tmp))
                            continue;
                        if (!int.TryParse(tmp, out tmpNumb))
                            continue;
                        index = Path.GetFileNameWithoutExtension(res).IndexOf('-');
                        substr = Path.GetFileNameWithoutExtension(res).Substring(0, index) + "-" + (tmpNumb + 1).ToString() + Path.GetExtension(tmpFileName);
                        res = Path.Combine(Path.GetDirectoryName(res), substr);
                        goto next;
                    }
                    tmpFileNames[jj] = res;
                }
                else
                {
                    tmpFileNames[jj] = tmpFileName;
                }
                jj++;
            }
            newFileNames = tmpFileNames;
            pgSetFileNames = ObjectArrayToBStrWrapperArray(newFileNames);
            //var documentsToRemove = ObjectArrayToBStrWrapperArray(newFileNames.Where(x => x == "C:\\temp").ToArray());
            //swPackAndGo.RemoveExternalDocuments(documentsToRemove);
            status = swPackAndGo.SetDocumentSaveToNames(pgSetFileNames);

            var statuses = (int[])swModelDocExt.SavePackAndGo(swPackAndGo);
            //перед открытием создать файлик dictionary
            string dictFile= Path.Combine(Path.GetDirectoryName(_openFile), Path.GetFileNameWithoutExtension(_openFile) + "_dictionary.txt");
            if (File.Exists(dictFile))
                File.Delete(dictFile);
            using (File.CreateText(dictFile)) { }; //File.Create(dictFile);
            List<string> strArr = new List<string>();
            foreach (string file in Directory.GetFiles(partDir, "*.SLDASM", SearchOption.TopDirectoryOnly))
            {
                strArr.Add(file);
            }
            File.SetAttributes(dictFile, FileAttributes.Normal);
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(dictFile, true))
            {
                foreach (var line in strArr)
                {
                    file.WriteLine(line);
                }
                file.Close();
            }
            //File.WriteAllLines(dictFile, strArr);
            File.SetAttributes(dictFile, FileAttributes.Hidden);

            //тут проверить что все оторвалось. Если что, поправить ссылки
            SwDMApplication swDocMgr = SwAddin.GetSwDmApp();
            SwDmDocumentOpenError oe;
            SwDMSearchOption src = swDocMgr.GetSearchOptionObject();
            object brokenRefVar;
            string[] files = Directory.GetFiles(Path.GetDirectoryName(_openFile),"*.*",SearchOption.AllDirectories);
            foreach (string fileName in files)
            {
                SwDMDocument8 swDoc = null;
                if (fileName.ToLower().Contains("sldasm"))
                    swDoc = (SwDMDocument8) swDocMgr.GetDocument(fileName,
                                                                 SwDmDocumentType.swDmDocumentAssembly,
                                                                 false, out oe);
                if (swDoc != null)
                {

                    var varRef = (string[]) swDoc.GetAllExternalReferences2(src, out brokenRefVar);
                    if (varRef != null && varRef.Length != 0)
                    {
                        foreach (string o in varRef)
                        {
                            if (o.ToUpper().Contains("_SWLIB_BACKUP"))
                            {
                                string tt = Path.GetFileNameWithoutExtension(o);
                                string newRef = null;
                                foreach (var fn in files)
                                {
                                    if (fn.Contains(tt))
                                    {
                                        newRef = fn;
                                        break;
                                    }
                                }
                                if (newRef != null)
                                {
                                    swDoc.ReplaceReference(o, newRef);
                                    swDoc.Save();
                                }

                            }
                        }
                    }
                    else
                    {
                        swDoc.CloseDoc();
                        continue;
                    }
                    swDoc.CloseDoc();
                }
            }
            swApp.CloseAllDocuments(true);
            if (!File.Exists(_openFile))
                throw new Exception("Ошибка. Не найден файл: " + _openFile);
            foreach (var file in newFileNames)
            {
                File.SetAttributes(file,FileAttributes.Normal);
            }
            //Logging.Log.Instance.Debug("SetAttributes ");
            SwAddin.IsEventsEnabled = true;
            swModelDoc = (ModelDoc2)swApp.OpenDoc6(_openFile, (int)swDocumentTypes_e.swDocASSEMBLY,
                                                    (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", errors,
                                                    warnings);
            SwAddin.IsEventsEnabled = false;
            //Logging.Log.Instance.Debug("OpenDoc6");
            swModelDoc.EditRebuild3();
            swAddin.AttachModelDocEventHandler(swModelDoc);
            //теперь тут пробежатся по всем файлам в filesToHideAndShow. key -хайдить , value - показывать
            //foreach (var files in filesToHideAndShow)
            //{
            //    if (File.Exists(files.Key) && File.Exists(files.Value))
            //    {
            //        File.SetAttributes(files.Value, FileAttributes.Normal);
            //        File.SetAttributes(files.Key, FileAttributes.Hidden);
            //        string nextFile,sourceFile = files.Key;
            //        while (SwAddin.IfNextExist(sourceFile, out nextFile))
            //        {
            //            sourceFile = nextFile;
            //            File.SetAttributes(nextFile, FileAttributes.Hidden);
            //        }
            //    }
            //}
            SwDmCustomInfoType swDmCstInfoType;
            if (Directory.Exists(furnDir))
            {
                foreach (string path in Directory.GetFiles(furnDir, "*.sldasm", SearchOption.TopDirectoryOnly))
                {
                    if (!File.Exists(path))
                        continue;
                    var swDoc = swDocMgr.GetDocument(path, SwDmDocumentType.swDmDocumentAssembly, true, out oe);
                    if (Path.GetFileNameWithoutExtension(path).First() == '~' || swDoc == null)
                        continue;
                    string valueOfName = swDoc.GetCustomProperty("Accessories", out swDmCstInfoType);
                    swDoc.CloseDoc();
                    if (valueOfName != null && (valueOfName == "No" || valueOfName == "no"))
                    {
                        File.Delete(path);
                    }
                }
            }
            var oComps = (object[])((AssemblyDoc)swModelDoc).GetComponents(true);
            if (oComps != null)
            {

                foreach (var oComp in oComps)
                {
                    var comp = (Component2)oComp;
                    var model = (ModelDoc2)comp.GetModelDoc();
                    if (model != null)
                    {
                        File.SetAttributes(model.GetPathName(), FileAttributes.Normal);
                        var swDoc = swDocMgr.GetDocument(model.GetPathName(), SwDmDocumentType.swDmDocumentUnknown, true, out oe);
                        if (swDoc != null)
                        {
                            var names = (string[])swDoc.GetCustomPropertyNames();
                            try
                            {
                                foreach (var name in names)
                                {

                                    string valueOfName = swDoc.GetCustomProperty(name, out swDmCstInfoType);
                                    string lowValOfName = valueOfName.ToLower();

                                    if (lowValOfName.Contains("@") &&
                                        lowValOfName.Contains("#") &&
                                        (lowValOfName.Contains(".sld")))
                                    {
                                        var split = valueOfName.Split('.');
                                        string tmp = split.First();
                                        string ext = split.Last();
                                        if (lowValOfName.Contains("#" + xName) || tmp.ToUpper().Last()!='P')
                                            continue;
                                        string sid = tmp.Substring(tmp.Length - 3, 2);
                                        int id;
                                        if (!int.TryParse(sid,out id))
                                            continue;
                                        tmp = tmp.Substring(0, tmp.Length - 4);
                                        tmp = tmp +" #" +xName+"-"+id +"."+ext;

                                        swAddin.SetModelProperty(model, name, "",
                                                                swCustomInfoType_e.
                                                                    swCustomInfoText,
                                                                tmp);
                                        model.Save();

                                        //swDoc.SetCustomProperty(name, tmp);
                                    }
                                }
                            }
                            catch (Exception)
                            {
                                Logging.Log.Instance.Debug("Ошибка при попытке обратится к св-ву. Деталь: " + swDoc.FullName);
                            }
                            finally
                            {
                                swDoc.CloseDoc();
                            }
                        }

                    }
                }
            }

            Cash.ActualizaAllCash();
            SwAddin.IsEventsEnabled = true;
            linksToCash.Remove(_openFile);
            //скопировать fpTime.txt
            string fpTime = Path.Combine(tempDir, "fpTime.txt");
            if (File.Exists(fpTime))
                File.Copy(fpTime, Path.Combine(Path.GetDirectoryName(_openFile), "fpTime.txt"));
            CopyDrawings(rFileNames, newFileNames, tempDir, _openFile);
            CopyProgramms(rFileNames, newFileNames,tempDir, _openFile);

            }
            catch(Exception e)
            {
                MessageBox.Show(e.Message);
                return;
            }
            finally
            {
                WaitTime.Instance.HideWait();

            }
        }