// Толщина листового металла internal void AddPropThickness(string configName, bool sheet) { _swapp = new SldWorks { Visible = true }; _swmodel = (ModelDoc2)_swapp.ActiveDoc; try { if (sheet) { _swmodel.DeleteCustomInfo2(configName, "Толщина листового металла"); var titleName = _swmodel.GetTitle(); _swmodel.AddCustomInfo3(configName, "Толщина листового металла", 30, "\"Толщина@" + configName + "@" + titleName + ".sldprt" + "\""); _swmodel.ShowConfiguration(configName); } else { _swmodel.DeleteCustomInfo2(configName, "Толщина листового металла"); } } catch (Exception ex) { Error = ex.Message; } }
// Проверка на дублирование конфигураций public void SplitConfigurations(string configName) { swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swModel = swApp.ActiveDoc; CustomPropertyManager swCustProp; var ValOut = ""; var number = ""; var razdel = ""; swCustProp = swModel.Extension.CustomPropertyManager[configName]; if (swModel.CustomInfo2["", "RenameSWP"] == "1") { return; } if (configName != "00") { swCustProp.Get4("Обозначение", true, out ValOut, out number); swCustProp.Get4("Раздел", true, out ValOut, out razdel); //var stringSldasm = swModel.GetTitle().Replace(".SLDASM", ""); //if (number != swModel.GetTitle() + "-" + configName) if ((number != swModel.GetTitle().Replace(".SLDASM", "") + "-" + configName) || (number != swModel.GetTitle().Replace(".SLDPRT", "") + "-" + configName)) { if (razdel == "Детали" | razdel == "Сборочные единицы") { MessageBox.Show("Для конфигурации " + "\"" + configName + "\"" + " не проставленно исполнение. Параметр будет проставлен автоматически."); swModel.DeleteCustomInfo2(configName, "Обозначение"); swModel.DeleteCustomInfo2(configName, "Исполнение"); swModel.AddCustomInfo3(configName, "Исполнение", 30, ""); swModel.AddCustomInfo3(configName, "Обозначение", 30, "$PRP:\"SW-File Name\"-" + configName); swModel.AddCustomInfo3(configName, "Обозначение", 30, "$PRP:\"SW-File Name\""); swModel.CustomInfo2[configName, "Исполнение"] = "1"; swModel.ForceRebuild3(false); } } } }
internal void DeleteOrAddPropertyColor(string ConfigName, string RAL, string ralRus, string ralErp, string coatingtype, string coatingclass, bool color, SldWorks swApp) { if (swApp == null) { //_swapp = new SldWorks { Visible = true }; swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); } _swmodel = (ModelDoc2)swApp.ActiveDoc; try { if (color) { _swmodel.DeleteCustomInfo2(ConfigName, "Площадь покрытия"); _swmodel.DeleteCustomInfo2(ConfigName, "RAL"); _swmodel.DeleteCustomInfo2(ConfigName, "RALRus"); _swmodel.DeleteCustomInfo2(ConfigName, "Ral_ERP"); _swmodel.DeleteCustomInfo2(ConfigName, "Тип покрытия"); _swmodel.DeleteCustomInfo2(ConfigName, "Класс покрытия"); var titleName = _swmodel.GetTitle(); _swmodel.AddCustomInfo3(ConfigName, "Площадь покрытия", 30, "\"SW-SurfaceArea@@" + ConfigName + "@" + titleName + ".sldprt" + "\""); _swmodel.AddCustomInfo3(ConfigName, "RAL", 30, RAL); _swmodel.AddCustomInfo3(ConfigName, "RALRus", 30, ralRus); _swmodel.AddCustomInfo3(ConfigName, "Ral_ERP", 30, ralErp); _swmodel.AddCustomInfo3(ConfigName, "Тип покрытия", 30, coatingtype); _swmodel.AddCustomInfo3(ConfigName, "Класс покрытия", 30, coatingclass); _swmodel.ShowConfiguration(ConfigName); GetPropertyBox(ConfigName); } else // Если не красим { _swmodel.DeleteCustomInfo2(ConfigName, "Площадь покрытия"); _swmodel.DeleteCustomInfo2(ConfigName, "RAL"); _swmodel.DeleteCustomInfo2(ConfigName, "RALRus"); _swmodel.DeleteCustomInfo2(ConfigName, "Ral_ERP"); _swmodel.DeleteCustomInfo2(ConfigName, "Длина"); _swmodel.DeleteCustomInfo2(ConfigName, "Ширина"); _swmodel.DeleteCustomInfo2(ConfigName, "Высота"); _swmodel.DeleteCustomInfo2(ConfigName, "Тип покрытия"); _swmodel.DeleteCustomInfo2(ConfigName, "Класс покрытия"); } } catch (Exception ex) { Error = ex.Message; } }
public static void UpdateProperty(MaterialModel objMaterial) { //1.打开指定的SW文件 ModelDoc2 swDoc = swAppHelper.ActiveDoc(Globals.FileName); //2.获取当前激活配置名 string configName = swDoc.ConfigurationManager.ActiveConfiguration.Name; #region 封装所有的SolidWorks属性(配置+自定义) //获取属性值:图号、名称、型号规格、单位、热处理、表面处理、品牌、血液 Dictionary <string, string> MyCustominfos = new Dictionary <string, string>(); MyCustominfos.Add("Identification Nb", objMaterial.MaterialCode); MyCustominfos.Add("Description", objMaterial.MaterialName); MyCustominfos.Add("规格", objMaterial.MaterialSpec); MyCustominfos.Add("型号", objMaterial.MaterialType); MyCustominfos.Add("单位", objMaterial.Unit); MyCustominfos.Add("加工属性", objMaterial.MachiningPropertyId); MyCustominfos.Add("涂装颜色", objMaterial.PaintingColor); MyCustominfos.Add("品牌", objMaterial.BrandId); //遍历每个属性并赋值 foreach (string key in MyCustominfos.Keys) { //删除,添加配置特定的属性 swDoc.DeleteCustomInfo2(configName, key); swDoc.AddCustomInfo3(configName, key, (int)swCustomInfoType_e.swCustomInfoText, MyCustominfos[key]); //删除,添加自定义的属性 swDoc.DeleteCustomInfo(key); swDoc.AddCustomInfo2(key, (int)swCustomInfoType_e.swCustomInfoText, MyCustominfos[key]); } #endregion #region 重建模型 swDoc.ClearSelection(); //清除选择 swDoc.ForceRebuild3(true); //重建模型Ctrl+Q //swDoc.ShowNamedView2("*等轴测", 7);//等轴测显示 //swDoc.ViewZoomtofit2();//全屏显示 //swDoc.Save(); //swAppHelper.CloseDoc(objDoc.OriginalFileName); #endregion }
internal void GetPropertyBox(string configname) { const long valueset = 1000;; const int swDocPart = 1; const int swDocAssembly = 2; _swapp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); _swmodel = _swapp.ActiveDoc; Configuration swConf = _swmodel.GetConfigurationByName(configname); if (swConf.IsDerived() == false) { //swmodel.ShowConfiguration2(configname); _swmodel.EditRebuild3(); if (_swmodel.GetType() == swDocPart) { var part = (PartDoc)_swmodel; var box = part.GetPartBox(true); _swmodel.AddCustomInfo3(configname, "Длина", 30, ""); _swmodel.AddCustomInfo3(configname, "Ширина", 30, ""); _swmodel.AddCustomInfo3(configname, "Высота", 30, ""); _swmodel.CustomInfo2[configname, "Длина"] = Convert.ToString(Math.Round(Convert.ToDecimal(Math.Abs(box[0] - box[3]) * valueset), 0)); _swmodel.CustomInfo2[configname, "Ширина"] = Convert.ToString(Math.Round(Convert.ToDecimal(Math.Abs(box[1] - box[4]) * valueset), 0)); _swmodel.CustomInfo2[configname, "Высота"] = Convert.ToString(Math.Round(Convert.ToDecimal(Math.Abs(box[2] - box[5]) * valueset), 0)); } else if (_swmodel.GetType() == swDocAssembly) { var swAssy = (AssemblyDoc)_swmodel; var boxAss = swAssy.GetBox((int)swBoundingBoxOptions_e.swBoundingBoxIncludeRefPlanes); _swmodel.AddCustomInfo3(configname, "Длина", 30, ""); _swmodel.AddCustomInfo3(configname, "Ширина", 30, ""); _swmodel.AddCustomInfo3(configname, "Высота", 30, ""); _swmodel.CustomInfo2[configname, "Длина"] = Convert.ToString(Math.Round(Convert.ToDecimal(Math.Abs(boxAss[0] - boxAss[3]) * valueset), 0)); _swmodel.CustomInfo2[configname, "Ширина"] = Convert.ToString(Math.Round(Convert.ToDecimal(Math.Abs(boxAss[1] - boxAss[4]) * valueset), 0)); _swmodel.CustomInfo2[configname, "Высота"] = Convert.ToString(Math.Round(Convert.ToDecimal(Math.Abs(boxAss[2] - boxAss[5]) * valueset), 0)); } } }
public void CmdRevMethod(bool m) { try { if (m & string.IsNullOrEmpty(TxtBox.Text)) { MessageBox.Show("Введите номер извещения."); return; } for (var i = 0; i <= _vSheetNames.GetUpperBound(0); i++) { //TODO: _swNote //ok = _swDraw.ActivateSheet(_vSheetNames[i]); _swDraw.ActivateSheet(_vSheetNames[i]); _swSheet = _swDraw.GetCurrentSheet(); _strSheetFormatName = _swSheet.GetSheetFormatName(); _swModel = (ModelDoc2)_swDraw; _swSelMgr = _swModel.SelectionManager; //MessageBox.Show(_swSelMgr.ToString()); // Дата StrTempData = "Revision4@" + _strSheetFormatName; ok = _swModel.Extension.SelectByID2(StrTempData, "NOTE", 0, 0, 0, false, 0, null, 0); if (ok) { _swNote = _swSelMgr.GetSelectedObject2(1); //MessageBox.Show(_swNote.ToString()); if (m) { var date = (DateTime)StrData.SelectedDate; StrTempData = Convert.ToString(date.ToString("dd-MM-yy")); _swNote.SetText(StrTempData); } else { //MessageBox.Show(StrTempData); StrTempData = _swNote.GetText(); if (StrTempData == "" | StrTempData == " ") { StrData.SelectedDate = (DateTime.Today); } else { StrData.SelectedDate = Convert.ToDateTime(StrTempData); } } } // Номер StrTempNumber = "Revision3@" + _strSheetFormatName; _swModel.Extension.SelectByID2(StrTempNumber, "NOTE", 0, 0, 0, false, 0, null, 0); if (ok) { _swNote = _swSelMgr.GetSelectedObject2(1); if (m) { StrTempNumber = "ИКД-" + TxtBox.Text; _swNote.SetText(StrTempNumber); } else { StrTempNumber = _swNote.GetText(); if (StrTempNumber != " ") { TxtBox.Text = StrTempNumber.Substring(4); } } } // Зам. _strTemp = "Revision2@" + _strSheetFormatName; _swModel.Extension.SelectByID2(_strTemp, "NOTE", 0, 0, 0, false, 0, null, 0); if (ok) { _swNote = _swSelMgr.GetSelectedObject2(1); if (m) { if (Rb1.IsChecked == true) { _swNote.SetText("Зам."); _swModel.DeleteCustomInfo2("", "Revision"); } if (Rb3.IsChecked == true) { _swNote.SetText("Нов."); _swModel.DeleteCustomInfo2("", "Revision"); } if (Rb2.IsChecked == true) { _swNote.SetText("Змін."); _swModel.DeleteCustomInfo2("", "Revision"); _swModel.AddCustomInfo3("", "Revision", 30, ""); _swModel.CustomInfo2["", "Revision"] = Convert.ToString(SpinButton.Content); } } else { _strTemp = _swNote.GetText(); if (_strTemp == "Зам.") { Rb1.IsChecked = true; Rb3.IsChecked = false; Rb2.IsChecked = false; SpinButton.IsEnabled = false; } if (_strTemp == "Нов.") { Rb1.IsChecked = false; Rb3.IsChecked = true; Rb2.IsChecked = false; SpinButton.IsEnabled = false; } if (_strTemp == "Змін.") { Rb1.IsChecked = false; Rb3.IsChecked = false; Rb2.IsChecked = true; SpinButton.IsEnabled = true; } int n; bool isNumeric = int.TryParse(_swModel.CustomInfo2["", "Revision"], out n); if (isNumeric) { SpinButton.Content = _swModel.CustomInfo2["", "Revision"]; } else { _swModel.DeleteCustomInfo2("", "Revision"); } } } } // Возвращение активного листа _swDraw.ActivateSheet(_strActiveSheetName); // Перестраиваем чертеж _swModel.ForceRebuild3(false); _swModel.GraphicsRedraw2(); _swModel.ClearSelection2(true); } catch (Exception ex) { MessageBox.Show(ex.Message + "; " + ex.StackTrace); } }
// Set Custom Property internal void CustomProperty(string lvlId, string configName, string swProp, string materialsNameEng, string codeErp, string CodeMaterial, string descriptCode, SldWorks swApp) { try { //_swapp = new SldWorks { Visible = true }; //_swapp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); if (swApp == null) { swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); } _swmodel = swApp.ActiveDoc; _swmodel.DeleteCustomInfo2(configName, "MaterialID"); _swmodel.DeleteCustomInfo2(configName, "Материал_ФБ"); _swmodel.DeleteCustomInfo2(configName, "Код материала"); _swmodel.DeleteCustomInfo2(configName, "Код"); _swmodel.DeleteCustomInfo2(configName, "Материал"); _swmodel.DeleteCustomInfo2(configName, "Материал_Таблица"); _swmodel.DeleteCustomInfo2(configName, "Material"); _swmodel.DeleteCustomInfo2(configName, "Материал_имя"); // Имя материала на английском _swmodel.AddCustomInfo3(configName, "Material", 30, materialsNameEng); _swmodel.AddCustomInfo3(configName, "Материал_имя", 30, "\"" + @"SW-Material@@" + configName + "@" + _swmodel.GetTitle() + ".SLDPRT" + "\""); var grouped = GetMaterialsNameList(swApp).GroupBy(s => s).Select(group => new { Word = group.Key, Count = group.Count() }); if (grouped.Count() == 1) { //MessageBox.Show("1"); _swmodel.AddCustomInfo3(configName, "Материал_ФБ", 30, swProp); if (swProp == "") { _swmodel.DeleteCustomInfo2(configName, "Материал_ФБ"); } } else { //MessageBox.Show("2"); _swmodel.AddCustomInfo3(configName, "Материал_ФБ", 30, "<FONT size=1.8> " + Convert.ToChar(10) + "<FONT size=3.5>" + "См. таблицу"); if (swProp == "") { _swmodel.DeleteCustomInfo2(configName, "Материал_ФБ"); } _swmodel.AddCustomInfo3(configName, "Материал_Таблица", 30, swProp); if (swProp == "") { _swmodel.DeleteCustomInfo2(configName, "Материал_Таблица"); } } _swmodel.AddCustomInfo3(configName, "MaterialID", 3, lvlId); _swmodel.AddCustomInfo3(configName, "Код материала", 30, codeErp); if (codeErp == "") { _swmodel.DeleteCustomInfo2(configName, "Код материала"); } _swmodel.AddCustomInfo3(configName, "Код", 30, CodeMaterial); if (CodeMaterial == "") { _swmodel.DeleteCustomInfo2(configName, "Код"); } _swmodel.AddCustomInfo3(configName, "Материал", 30, descriptCode); if (descriptCode == "") { _swmodel.DeleteCustomInfo2(configName, "Материал"); } } catch (Exception ex) { MessageBox.Show(ex.Message + "; " + ex.StackTrace); } }
// Set Custom Property internal void CustomProperty(int lvlId, string configName, string swProp, string materialsNameEng, string codeErp, string CodeMaterial, string descriptCode, SldWorks swApp) { _swmodel = swApp.ActiveDoc; _swmodel.DeleteCustomInfo2(configName, "MaterialID"); _swmodel.DeleteCustomInfo2(configName, "Материал_ФБ"); _swmodel.DeleteCustomInfo2(configName, "Код материала"); _swmodel.DeleteCustomInfo2(configName, "Код"); _swmodel.DeleteCustomInfo2(configName, "Материал"); _swmodel.DeleteCustomInfo2(configName, "Материал_Таблица"); _swmodel.DeleteCustomInfo2(configName, "Material"); // Имя материала на английском _swmodel.AddCustomInfo3(configName, "Material", 30, materialsNameEng); var grouped = GetMaterialsNameList(swApp).GroupBy(s => s).Select(group => new { Word = group.Key, Count = group.Count() }); if (grouped.Count() == 1) { _swmodel.AddCustomInfo3(configName, "Материал_ФБ", 30, swProp); if (swProp == "") { _swmodel.DeleteCustomInfo2(configName, "Материал_ФБ"); } } else { _swmodel.AddCustomInfo3(configName, "Материал_ФБ", 30, "<FONT size=1.8> " + Convert.ToChar(10) + "<FONT size=3.5>" + "См. таблицу"); if (swProp == "") { _swmodel.DeleteCustomInfo2(configName, "Материал_ФБ"); } _swmodel.AddCustomInfo3(configName, "Материал_Таблица", 30, swProp); if (swProp == "") { _swmodel.DeleteCustomInfo2(configName, "Материал_Таблица"); } } _swmodel.AddCustomInfo3(configName, "MaterialID", 3, lvlId.ToString()); _swmodel.AddCustomInfo3(configName, "Код материала", 30, codeErp); if (codeErp == "") { _swmodel.DeleteCustomInfo2(configName, "Код материала"); } _swmodel.AddCustomInfo3(configName, "Код", 30, CodeMaterial); if (CodeMaterial == "") { _swmodel.DeleteCustomInfo2(configName, "Код"); } _swmodel.AddCustomInfo3(configName, "Материал", 30, descriptCode); if (descriptCode == "") { _swmodel.DeleteCustomInfo2(configName, "Материал"); } }
private void RenameCustomProperty(ModelDoc2 model, string conf, string from, string to) { string val1, val2; model.Extension.get_CustomPropertyManager("").Get2(from, out val1, out val2); string value = val1;//model.GetCustomInfoValue(conf, from); if (!string.IsNullOrEmpty(value)) { model.DeleteCustomInfo2(conf, from); model.AddCustomInfo3(conf, to, (int)swCustomInfoType_e.swCustomInfoText, value); model.Save(); } }
public bool SetModelProperty(ModelDoc2 model, string fieldName, string cfgName, swCustomInfoType_e fieldType, string val, bool checkFirst = false) { bool isPropertyChanged = false; string fieldValue = string.Empty; if (checkFirst) { fieldValue = model.GetCustomInfoValue(cfgName, fieldName); if (fieldValue == val) return isPropertyChanged; } if (!string.IsNullOrEmpty(fieldValue.Trim()) && fieldValue != "-" && !fieldValue.Contains("Color")) isPropertyChanged = true; model.AddCustomInfo3(cfgName, fieldName, (int)fieldType, val); model.set_CustomInfo2(cfgName, fieldName, val); return isPropertyChanged; }
public void SaveCustomProperty() { var items = DgMatProp.ItemsSource as List <SldWorksPropClass>; if (items == null) { return; } DeleteAllProperties(); foreach (var i in items) { var config = i.Config; var length = i.Length == "" ? null : i.Length; var width = i.Width == "" ? null : i.Width; var code = i.Code1C == "" ? null : i.Code1C; int n; if (int.TryParse(config, out n)) { var customProp = SwModel.Extension.CustomPropertyManager[config]; //var propName = new[] { "Обозначение", "Длина", "Ширина", "Количество", "Примечание", "Наименование", "Раздел", "Расчетное количество", "Код материала" }; //foreach (var delProp in propName) //{ // customProp.Delete(delProp); //} var itemPartition = CboChangePartition.SelectedItem as string; customProp.Add2("Длина", 3, length); customProp.Add2("Ширина", 3, width); customProp.Add2("Раздел", 30, itemPartition); customProp.Add2("Код материала", 3, code); if (m == 0) { if (width == null & length == null) { customProp.Add2("Наименование", 30, i.Description == "" ? "" : Convert.ToString(i.Description)); } else { customProp.Add2("Наименование", 30, i.Description == "" ? "" : Convert.ToString(i.Description + " Заготовка: " + length + "x" + width)); } } if (m == 1) { customProp.Add2("Наименование", 30, i.Description == "" ? "" : Convert.ToString(i.Description)); } //Стандартные изделия IsFastener - IsFastener = 0 //Прочие изделия IsFastener - IsFastener = 0 //Материалы //Комплекты - IsFastener = 0 //ЭМ-Стандартные изделия IsFastener - IsFastener = 0 //ЭМ-Прочие изделия IsFastener - IsFastener = 0 //ЭМ-Материалы var customPropIsFastener = SwModel.Extension.CustomPropertyManager[""]; var selectedItem = CboChangePartition.Text; if (selectedItem == "Стандартные изделия" | selectedItem == "Прочие изделия" | selectedItem == "Комплекты" | selectedItem == "ЭМ-Стандартные изделия" | selectedItem == "ЭМ-Прочие изделия") { customPropIsFastener.Add2("IsFastener", 30, "0"); } else { customPropIsFastener.Delete("IsFastener"); } if (i.Summ != "") { // Count_SP SwModel.AddCustomInfo3(config, "UNIT_OF_MEASURE", 30, ""); customProp.Add2("Количество", 30, i.Summ == "" ? "" : i.Summ); SwModel.CustomInfo2[config, "UNIT_OF_MEASURE"] = "Количество"; } customProp.Add2("Расчетное количество", 3, ""); customProp.Add2("Примечание", 30, i.Note == "" ? "" : i.Note); } else { MessageBox.Show(@"Конфигурацию """ + config + @" ""необходимо переименовать в числовое значение!"); } } DgMatProp.ItemsSource = GetSldWorksListProp(); }