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; }
public DocumentEventHandler(ModelDoc2 modDoc, SwAddin addin) { Document = modDoc; UserAddin = addin; SwApp = UserAddin.SwApp; OpenModelViews = new Hashtable(); }
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()); }
public ListHiddenComponent(SwAddin swAddin, List<Component2> inListComponent,string name1,string name2) { _mSwAddin = swAddin; _hidComp = inListComponent; InitializeComponent(); Show(); EditLabel(name1, name2); button1.Click +=Button1Click; }
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(); }
public FrmOptions(SwAddin swAdd, ISldWorks iswApp, int cook) { _swAdd = swAdd; _iswApp = iswApp; _cook = cook; InitializeComponent(); Closing += FrmOptionsClosing; FormClosed += FrmOptionsClosed; }
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); } } } } }
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(); }
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(); }
public PmpHandler(SwAddin addin) { _userAddin = addin; _iSwApp = _userAddin.SwApp; }
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; }
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 }
public PartEventHandler(ModelDoc2 modDoc, SwAddin addin) : base(modDoc, addin) { _doc = (PartDoc)Document; }
public DrawingEventHandler(ModelDoc2 modDoc, SwAddin addin) : base(modDoc, addin) { _doc = (DrawingDoc)modDoc; }
public AssemblyEventHandler(ModelDoc2 modDoc, SwAddin addin) : base(modDoc, addin) { _doc = (AssemblyDoc)Document; }
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(); } }
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; }
public DimensionDraft(SwAddin swAddin) { _swAdd = swAddin; _swApp = swAddin.SwApp; }
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"; }
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; }
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); } } } }
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; }
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; }
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; }
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; }
public UserPmPage(SwAddin addin) { _userAddin = addin; _iSwApp = _userAddin.SwApp; CreatePropertyManagerPage(); }
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(); } }