public void hidebomtable() { SldWorks swApp = default(SldWorks); ModelDoc2 swModel = default(ModelDoc2); DrawingDoc swDraw = default(DrawingDoc); SolidWorks.Interop.sldworks.View swView = default(SolidWorks.Interop.sldworks.View); TableAnnotation swTableAnn = default(TableAnnotation); Annotation swAnn = default(Annotation); object[] vTableAnns = null; int i = 0; //swApp = CreateObject("SldWorks.Application") swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swModel = swApp.ActiveDoc; swDraw = (DrawingDoc)swModel; swView = swDraw.GetFirstView(); vTableAnns = swView.GetTableAnnotations(); //vTableAnns.Length if ((vTableAnns == null) == false) { for (i = 0; i <= vTableAnns.Length - 1; i++) { swTableAnn = (TableAnnotation)vTableAnns[i]; if (swTableAnn.Type == (int)swTableAnnotationType_e.swTableAnnotation_BillOfMaterials) { //swTableAnn.MoveColumn(0, swTableItemInsertPosition_e.swTableItemInsertPosition_After, 1) swAnn = swTableAnn.GetAnnotation(); swAnn.Select3(false, null); swApp.RunCommand((int)swCommands_e.swCommands_Hide_Table, null); } } } }
public void CheckDrawingDoc() { try { _swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); _swModel = _swApp.ActiveDoc; _swDraw = (DrawingDoc)_swModel; // Получение первого листа _swSheet = _swDraw.GetCurrentSheet(); StrActiveSheetName = _swSheet.GetName(); // Узнаем имя активного листа _vSheetNames = _swDraw.GetSheetNames(); _swDraw.ActivateSheet(_vSheetNames[0]); _swSheet = _swDraw.GetCurrentSheet(); _swView = _swDraw.GetFirstView(); if (_swSheet.CustomPropertyView == "По умолчанию" | _swSheet.CustomPropertyView == "Default") { _swView = _swView.GetNextView(); } _swModel = _swView.ReferencedDocument; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public View GetFirstView(SldWorks sw) { ModelDoc2 swModel = (ModelDoc2)sw.ActiveDoc; DrawingDoc d = (DrawingDoc)swModel; View v; string[] shtNames = (String[])swDraw.GetSheetNames(); string message = string.Empty; //This should find the first page with something on it. IsTarget = IsTargetDrawing((sw.ActiveDoc as DrawingDoc).Sheet[shtNames[0]]); int x = 0; do { try { d.ActivateSheet(shtNames[x]); } catch (IndexOutOfRangeException e) { throw new IndexOutOfRangeException("Went beyond the number of sheets.", e); } catch (Exception e) { throw e; } v = (View)d.GetFirstView(); v = (View)v.GetNextView(); x++; } while ((v == null) && (x < d.GetSheetCount())); message = (string)v.GetName2() + ":\n"; if (v == null) { throw new Exception("I couldn't find a model anywhere in this document."); } return(v); }
/// <summary> /// 只生成等轴测视图 /// </summary> /// <param name="swDraw"></param> /// <param name="fileName"></param> private void CreatIsometric(DrawingDoc swDraw, string fileName) { double[] outLine = new double[4]; Sheet currentSheets = (Sheet)__swDrawDoc.GetCurrentSheet(); __swDrawDoc.ActivateSheet(currentSheets.GetName()); _swView = (IView)swDraw.GetFirstView(); outLine = (double[])_swView.GetOutline();//获取图纸边界 _swView = (IView)swDraw.CreateDrawViewFromModelView3(fileName, "*等轴测", (outLine[2] - outLine[0]) / 2.0, (outLine[3] - outLine[1]) / 1.5, 0); }
private void GetData(DrawingDoc swDraw) { // var swDraw = (DrawingDoc) swModel; // var ModelDoc var getFirstView = (View)swDraw.GetFirstView(); MessageBox.Show(getFirstView.ReferencedDocument.GetTitle()); swDraw.ResolveOutOfDateLightWeightComponents(); swDraw.ForceRebuild(); // Движение по листам var vSheetName = (string[])swDraw.GetSheetNames(); foreach (var name in vSheetName) { swDraw.ResolveOutOfDateLightWeightComponents(); var swSheet = swDraw.Sheet[name]; swDraw.ActivateSheet(swSheet.GetName()); if ((!swSheet.IsLoaded())) { continue; } var sheetviews1 = (object[])swSheet.GetViews(); var firstView1 = (View)sheetviews1[0]; var baseView1 = firstView1.IGetBaseView(); var dispData1 = (IModelDoc2)baseView1.ReferencedDocument; MessageBox.Show(dispData1.GetTitle()); try { var sheetviews = (object[])swSheet.GetViews(); var firstView = (View)sheetviews[0]; firstView.SetLightweightToResolved(); var baseView = firstView.IGetBaseView(); var dispData = (IModelDoc2)baseView.ReferencedDocument; MessageBox.Show(dispData.GetTitle()); } catch (Exception e) { MessageBox.Show(e.Message); } } }
private bool ActivateAllViews() { View swView = swDraw.GetFirstView(); while (swView != null) { bool activate = swDraw.ActivateView(swView.GetName2()); if (activate == false) { return(false); } swView = swView.GetNextView(); } return(true); }
public int LoadEnable() { try { int functionReturnValue = 0; swModel = SwApp.ActiveDoc; try { if (swModel.GetType() != (int)swDocumentTypes_e.swDocDRAWING) { functionReturnValue = 0; } else { _swDraw = (DrawingDoc)swModel; swSheet = _swDraw.GetCurrentSheet(); swView = _swDraw.GetFirstView(); functionReturnValue = 1; } if (swSheet.CustomPropertyView == "По умолчанию" | swSheet.CustomPropertyView == "Default") { swView = swView.GetNextView(); // Получаем первый вид } swModel = swView.ReferencedDocument; if (swModel.GetType() != (int)swDocumentTypes_e.swDocASSEMBLY) { functionReturnValue = 0; } } catch { functionReturnValue = 0; } return(functionReturnValue); } catch (Exception ex) { MessageBox.Show(ex.Message); throw; } }
public String GetNoteTTtext(ModelDoc2 swDoc) { DrawingDoc swDraw = (DrawingDoc)swDoc; object[] vNotes; String result = ""; IView swView = swDraw.GetFirstView() as IView; vNotes = (object[])swView.GetNotes(); Note swNote = null; for (int j = 0; j < vNotes.Length; j++) { swNote = (Note)vNotes[j]; String snm = swNote.GetName(); if (snm.Contains(ttname)) { result += swNote.PropertyLinkedText + System.Environment.NewLine; } } return(result); }
private void FindNDelOldNotes(ModelDoc2 swDoc) { Note swNote = null; DrawingDoc swDraw = (DrawingDoc)swDoc; object[] vNotes; IView swView = swDraw.GetFirstView() as IView; vNotes = (object[])swView.GetNotes(); for (int i = 0; i < vNotes.Length; i++) { swNote = (Note)vNotes[i]; String snm = swNote.GetName(); if (snm.Contains(ttname)) { Annotation myAnnotation = (Annotation)swNote.GetAnnotation(); swDoc.ClearSelection2(true); myAnnotation.Select(false); swDoc.DeleteSelection(false); } } swDoc.WindowRedraw(); }
public void check() { int m = 0; //swapp = CreateObject("SldWorks.Application") swapp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swmodel = swapp.ActiveDoc; // Проверка открытого документа if (swmodel == null) { swapp.SendMsgToUser("Откройте чертеж"); return; } //Or swDocumentTypes_e.swDocASSEMBLY if (swmodel.GetType() != (int)swDocumentTypes_e.swDocDRAWING) { swapp.SendMsgToUser("Откройте чертеж"); return; } if (string.IsNullOrEmpty(swmodel.GetPathName())) { swapp.SendMsgToUser("Сохраните чертеж!"); Close(); return; } swDraw = (DrawingDoc)swmodel; // Получение первого листа swSheet = swDraw.GetCurrentSheet(); strActiveSheetName = swSheet.GetName(); // Узнаем имя активного листа vSheetNames = swDraw.GetSheetNames(); ok = swDraw.ActivateSheet(vSheetNames[0]); swSheet = swDraw.GetCurrentSheet(); swView = swDraw.GetFirstView(); //m = 0 //Debug.Print(swSheet.CustomPropertyView); if (swSheet.CustomPropertyView == "По умолчанию" | swSheet.CustomPropertyView == "Default") { swView = swView.GetNextView(); // Получаем первый вид } else { while (!(swView == null)) { if (swView.GetName2() == swSheet.CustomPropertyView) { m = 1; break; } swView = swView.GetNextView(); } if (m == 0) { swView = swDraw.GetFirstView(); swView = swView.GetNextView(); swapp.SendMsgToUser("Не удалось определить вид из свойств листа. Ипользуется первый вид."); } } if (swView == null) { swapp.SendMsgToUser("Отсутсвует модель!"); // Возвращение активного листа ok = swDraw.ActivateSheet(strActiveSheetName); return; } if (swView.ReferencedDocument == null) { swapp.SendMsgToUser("Отсутсвует модель!"); // Возвращение активного листа ok = swDraw.ActivateSheet(strActiveSheetName); return; } swmodel = swView.ReferencedDocument; if (swmodel.GetType() != (int)swDocumentTypes_e.swDocASSEMBLY) { swapp.SendMsgToUser("Чертеж должен быть сборочным!"); // Возвращение активного листа ok = swDraw.ActivateSheet(strActiveSheetName); return; } }
private string LoadActiveModel() { /// <summary>Load active model /// <list type="bullet"> /// <listheader> /// <description>Set model properties</description> /// </listheader> /// <item>Model file name with path</item> /// <item>Model file name</item> /// <item>Referenced configuration</item> /// </list> /// <returns>Error message string</returns> /// </summary> ModelDoc2 swDoc; SolidWorks.Interop.sldworks.View swDrawView; swDocumentTypes_e swDocType; string strModelFile; string strModelName; string strConfigName = null; int intErrors = 0; int intWarnings = 0; // get the active document swDoc = (ModelDoc2)this.swApp.ActiveDoc; if (swDoc == null) { return("Could not acquire an active document"); } // Check for the correct doc type strModelFile = swDoc.GetPathName(); strModelName = strModelFile.Substring(strModelFile.LastIndexOf("\\") + 1, strModelFile.Length - strModelFile.LastIndexOf("\\") - 1); swDocType = (swDocumentTypes_e)swDoc.GetType(); // get model document from drawing document if (swDocType == swDocumentTypes_e.swDocDRAWING) { swDrawDoc = (DrawingDoc)swDoc; swDrawView = (SolidWorks.Interop.sldworks.View)swDrawDoc.GetFirstView(); swDrawView = (SolidWorks.Interop.sldworks.View)swDrawView.GetNextView(); strModelFile = swDrawView.GetReferencedModelName(); strConfigName = swDrawView.ReferencedConfiguration; strModelName = strModelFile.Substring(strModelFile.LastIndexOf("\\") + 1, strModelFile.Length - strModelFile.LastIndexOf("\\") - 1); swDocType = (swDocumentTypes_e)GetTypeFromString(strModelFile); if (swDocType != swDocumentTypes_e.swDocASSEMBLY & swDocType != swDocumentTypes_e.swDocPART) { return("error getting file type from drawing view's referenced model"); } // Try to load the model file try { swMainModel = swApp.OpenDoc6(strModelFile, (int)swDocType, (int)swOpenDocOptions_e.swOpenDocOptions_LoadModel, strConfigName, ref intErrors, ref intWarnings); swMainModel = swApp.ActivateDoc3(strModelFile, true, (int)swRebuildOnActivation_e.swDontRebuildActiveDoc, intErrors); } catch (Exception e) { return(e.Message); } } else { swMainModel = swDoc; } swModelWrap = new SwModelWrapper(this, swApp, swDocType, swMainModel, strConfigName: null); return(null); }
public void LoadDataGridConfig() { try { //SelectionMgr swSelMgr; //Configuration swConfig; ; string sConfigName; object[] vConfNameArr; //swapp = CreateObject("SldWorks.Application") swapp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swmodel = swapp.ActiveDoc; swDraw = (DrawingDoc)swmodel; swSheet = swDraw.GetCurrentSheet(); strActiveSheetName = swSheet.GetName(); vSheetNames = swDraw.GetSheetNames(); swDraw.ActivateSheet(vSheetNames[0]); swSheet = swDraw.GetCurrentSheet(); swView = swDraw.GetFirstView(); // Получаем параметры модели if (swSheet.CustomPropertyView == "По умолчанию" | swSheet.CustomPropertyView == "Default") { swView = swView.GetNextView(); } sConfigName = swView.ReferencedConfiguration; swmodel = swView.ReferencedDocument; swmodel.GetConfigurationByName(sConfigName); vConfNameArr = swmodel.GetConfigurationNames(); // Конфигурация for (var i = 0; i <= vConfNameArr.GetUpperBound(0); i++) { DataGridConfig.Rows.Add(ColChB.Selected, vConfNameArr[i]); } //Get customProperty from Assy CustomPropertyManager swCustProp = default(CustomPropertyManager); string valOut = ""; string Number = ""; string Description = ""; swCustProp = swmodel.Extension.CustomPropertyManager[""]; swCustProp.Get2("Обозначение", out valOut, out Number); swCustProp.Get2("Наименование", out valOut, out Description); addinform = new addincheckbox(); try { //Fill DataGriad foreach (string line in System.IO.File.ReadAllLines("C:\\Program Files\\SW-Complex\\doc.txt")) { addinform.DGDoc.Rows.Add(addinform.DocChb.Selected, line); } } catch (Exception ex) { //Interaction.MsgBox("Отсутствует SW-Complex или Doc.txt"); this.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void GetXMLfromBOM() { swapp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swmodel = swapp.ActiveDoc; swModelDocExt = swmodel.Extension; //создаем MemoryStream, в который будем писать XML var myMemoryStream = new MemoryStream(); //создаем XmlTextWriter, указываем объект – myMemoryStream, в который будем писать XML, и кодировку try { var myXml = new System.Xml.XmlTextWriter("C:\\Program Files\\SW-Complex\\SP-Temp.xml", System.Text.Encoding.UTF8); swDraw = (DrawingDoc)swmodel; vSheetNames = swDraw.GetSheetNames(); ok = swDraw.ActivateSheet(vSheetNames[0]); swView = swDraw.GetFirstView(); // Получаем параметры модели swView = swView.GetNextView(); swmodel = swView.ReferencedDocument; //swSelMgr = swDraw.SelectionManager; myXml.WriteStartDocument(); myXml.Formatting = System.Xml.Formatting.Indented; //длина отступа myXml.Indentation = 2; vConfName = swmodel.GetConfigurationNames(); swapp = new SldWorks(); swmodel = swapp.ActiveDoc; Feature swFeat = swmodel.FirstFeature(); while ((swFeat != null)) { if (swFeat.GetTypeName() == "BomFeat") { swFeat.Select(true); swBomFeature = swFeat.GetSpecificFeature2(); } swFeat = swFeat.GetNextFeature(); } ////////////////////////////////////////////////////// // // GetPropertyBomTableFromDrawDoc // ////////////////////////////////////////////////////// object vConfigurations = null; object vVisibility = null; bool bGetVisible = false; long lNumRow = 0; long lNumColumn = 0; int lRow = 0; TableAnnotation swTableAnnotation = default(TableAnnotation); ModelDoc2 swDocument = default(ModelDoc2); AssemblyDoc swAssembly = default(AssemblyDoc); int lStartRow = 0; string strItemNumber = ""; string strPartNumber = ""; string strDescription = ""; var strDocumentName = swBomFeature.GetReferencedModelName(); swDocument = swapp.GetOpenDocumentByName(strDocumentName); swAssembly = (AssemblyDoc)swDocument; //swBOMTableAnnotation = swBomFeature.GetTableAnnotations(0) var swBomTableAnnotation = (BomTableAnnotation)swBomFeature.GetTableAnnotations()[0]; swTableAnnotation = (TableAnnotation)swBomTableAnnotation; lNumRow = swTableAnnotation.RowCount; lNumColumn = swTableAnnotation.ColumnCount; lStartRow = 1; //If (Not (swTableAnnotation.TitleVisible = False)) Then if (swTableAnnotation.TitleVisible == false) { lStartRow = 2; } bGetVisible = false; vConfigurations = swBomFeature.GetConfigurations(bGetVisible, vVisibility); //swTableAnnotation = swTableAnnotation; /////////////////////////////////////////////////////////////////// swSheet = swDraw.GetCurrentSheet(); strActiveSheetName = swSheet.GetName(); vSheetNames = swDraw.GetSheetNames(); ok = swDraw.ActivateSheet(vSheetNames[0]); swSheet = swDraw.GetCurrentSheet(); swView = swDraw.GetFirstView(); if (swSheet.CustomPropertyView == "По умолчанию" | swSheet.CustomPropertyView == "Default") { swView = swView.GetNextView(); } // get custom property var valout = ""; //Обозначение var valout1 = ""; //Наименование CustomPropertyManager swCustProp = default(CustomPropertyManager); var resolvedValOut = ""; var resolvedValOut1 = ""; //string resolvedValOut3 = ""; //string resolvedValOut4 = ""; //string resolvedValOut5 = ""; swCustProp = swmodel.Extension.CustomPropertyManager[""]; swCustProp.Get2("Обозначение", out valout, out resolvedValOut); swCustProp.Get2("Description", out valout1, out resolvedValOut1); // переменные для колонок int Jj = 0; // наименование int aa = 0; // раздел int oo = 0; // обозначение int tt = 0; // формат int yy = 0; // int uu = 0; // Код материала int ss = 0; // Примечание string sRowStr = null; // наименовани string sRowStr1 = null; // раздел string sRowStr2 = null; // обозначение string sRowStr3 = null; // формат string sRowStr4 = null; // ERP code string sRowStr5 = null; // Код материала string sRowStr6 = null; // Примечание // При выборе электромонтажа string Complect = ""; if (addinform.ChkElectro1.Checked) { Complect = "МЭ"; } else if (addinform.ChkElectro2.Checked) { Complect = "ТБ"; } //////////////////////////////////////////////////////////// // // XML // //////////////////////////////////////////////////////////// //создаем элементы myXml.WriteStartElement("xml"); // myXml.WriteStartElement("Item"); // имя пути основного чертежа myXml.WriteStartElement("PathName"); //записываем строку myXml.WriteString(swmodel.GetPathName()); myXml.WriteEndElement(); // Устанавливаем ДОК из формы добавление myXml.WriteStartElement("doc"); // myXml.WriteStartElement("Обозначение"); //записываем строку myXml.WriteString(resolvedValOut + "CБ"); myXml.WriteEndElement(); // myXml.WriteStartElement("Наименование"); myXml.WriteString("Сборочный чертеж"); myXml.WriteEndElement(); // myXml.WriteEndElement(); //doc //dynamic CheckedRows2 = (from Rows in addinform.DGDoc.Rows.Cast<DataGridViewRow>()where Convert.ToBoolean(Rows.Cells(0).Value) == true).ToList; dynamic CheckedRows2 = (from Rows in addinform.DGDoc.Rows.Cast <DataGridViewRow>() where Convert.ToBoolean(Rows.Cells[0].Value.ToString()) select Rows).ToList(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); foreach (DataGridViewRow row in CheckedRows2) { sb.AppendLine(row.Cells[1].Value.ToString()); sb.ToString(); //Оставляем первые две буквы для обозначения разделитель var literal = row.Cells[1].Value.ToString(); var substring = literal.Substring(0, 2); var literal2 = row.Cells[1].Value.ToString(); var substring2 = literal2.Substring(5); myXml.WriteStartElement("doc"); /// myXml.WriteStartElement("Обозначение"); //записываем строку myXml.WriteString(resolvedValOut + substring); myXml.WriteEndElement(); /// myXml.WriteStartElement("Наименование"); myXml.WriteString(substring2); myXml.WriteEndElement(); /// myXml.WriteEndElement(); //doc } //<------------- Elec if (addinform.ChkElectro.Checked == true & addinform.ChkElectro1.Checked == false & addinform.ChkElectro2.Checked == false) { myXml.WriteStartElement("Elec"); //Elec myXml.WriteString("Устанавливают при электромонтаже"); myXml.WriteEndElement(); //Elec } //<------------- ChkElectro1 if (addinform.ChkElectro.Checked == true & addinform.ChkElectro1.Checked == true) { myXml.WriteStartElement("Elec"); //Elec myXml.WriteString("Устанавливают по " + resolvedValOut + Complect); myXml.WriteEndElement(); //Elec } //<------------- ChkElectro2 if (addinform.ChkElectro.Checked == true & addinform.ChkElectro2.Checked == true) { myXml.WriteStartElement("Elec"); //Elec myXml.WriteString("Устанавливают по " + resolvedValOut + Complect); myXml.WriteEndElement(); //Elec } // myXml.WriteStartElement("Обозначение"); //записываем строку myXml.WriteString(resolvedValOut); myXml.WriteEndElement(); /// myXml.WriteStartElement("Наименование"); myXml.WriteString(resolvedValOut1); myXml.WriteEndElement(); //\reference myXml.WriteStartElement("references"); // ВЫГРУЖАЕМ ВЫБРАННЫЕ КОНФИГУРАЦИИ dynamic CheckedRows = (from Rows in DataGridConfig.Rows.Cast <DataGridViewRow>() where Convert.ToBoolean(Rows.Cells[0].Value.ToString()) select Rows).ToList(); System.Text.StringBuilder sb2 = new System.Text.StringBuilder(); foreach (DataGridViewRow row in CheckedRows) { sb2.AppendLine(row.Cells[1].Value.ToString()); swmodel = swView.ReferencedDocument; var configuration = swView.ReferencedConfiguration; var sConfigName = swView.ReferencedConfiguration; Configuration swConfig = swmodel.GetConfigurationByName(sConfigName); for (var i = 0; i <= vConfName.GetUpperBound(0); i++) { const string ucase = ""; if (vConfName[i] == row.Cells[1].Value.ToString()) { configuration = vConfName[i]; } } swView.ReferencedConfiguration = sConfigName; myXml.WriteStartElement("config"); myXml.WriteAttributeString("value", row.Cells[1].Value.ToString()); ///////////////////////////////////////////////////////////// // // PART // ///////////////////////////////////////////////////////////// for (lRow = lStartRow; lRow <= (lNumRow - 1); lRow++) { if (swBomTableAnnotation.GetComponentsCount2((int)lRow, row.Cells[1].Value.ToString(), out strItemNumber, out strPartNumber) > 0) { myXml.WriteStartElement("part"); //PathNameComponent string strModelPathName = null; var vModelPathNames = swBomTableAnnotation.GetModelPathNames((int)lRow, out strItemNumber, out strPartNumber); if (((vModelPathNames != null))) { myXml.WriteStartElement("PathNameComponent"); foreach (var vModelPathName_loopVariable in vModelPathNames) { var vModelPathName = vModelPathName_loopVariable; strModelPathName = vModelPathName; myXml.WriteString(strModelPathName); } myXml.WriteEndElement(); } //'\ Row myXml.WriteStartElement("Row"); myXml.WriteString(Convert.ToString(lRow - lStartRow + 1)); myXml.WriteEndElement(); vModelPathNames = swBomTableAnnotation.GetModelPathNames((int)lRow, out strItemNumber, out strPartNumber); //\ ItemNum myXml.WriteStartElement("ItemNum"); myXml.WriteString(strItemNumber); myXml.WriteEndElement(); //\ раздел aa = 3; /// раздел sRowStr1 = ""; sRowStr1 = sRowStr1 + swTableAnnotation.Text[lRow, aa]; myXml.WriteStartElement("Раздел"); myXml.WriteString(sRowStr1); myXml.WriteEndElement(); //\ обозначение oo = 1; /// обозначение sRowStr2 = ""; sRowStr2 = sRowStr2 + swTableAnnotation.Text[lRow, oo]; myXml.WriteStartElement("Обозначение"); myXml.WriteString(sRowStr2); myXml.WriteEndElement(); //\ наименование Jj = 2; /// наименование sRowStr = ""; sRowStr = sRowStr + swTableAnnotation.Text[lRow, Jj]; myXml.WriteStartElement("Наименование"); myXml.WriteString(sRowStr); myXml.WriteEndElement(); //\ tt = 4; /// формат sRowStr3 = ""; sRowStr3 = sRowStr3 + swTableAnnotation.Text[lRow, tt]; myXml.WriteStartElement("Формат"); myXml.WriteString(sRowStr3); myXml.WriteEndElement(); //\ yy = 5; /// ERP code sRowStr4 = ""; sRowStr4 = sRowStr4 + swTableAnnotation.Text[lRow, yy]; myXml.WriteStartElement("ERP_code"); myXml.WriteString(sRowStr4); myXml.WriteEndElement(); //\ uu = 6; /// Код материала sRowStr5 = ""; sRowStr5 = sRowStr5 + swTableAnnotation.Text[lRow, uu]; myXml.WriteStartElement("Код_материала"); myXml.WriteString(sRowStr5); myXml.WriteEndElement(); //\ ss = 7; /// наименование sRowStr6 = ""; sRowStr6 = sRowStr6 + swTableAnnotation.Text[lRow, ss]; myXml.WriteStartElement("Примечание"); myXml.WriteString(sRowStr6); myXml.WriteEndElement(); //\ myXml.WriteStartElement("Количество"); //myXml.WriteString(swTableAnnotation.GetComponentsCount2(lRow, strConfiguration, strItemNumber, strPartNumber)) myXml.WriteString(Convert.ToString(swBomTableAnnotation.GetComponentsCount2(lRow, row.Cells[1].Value.ToString(), out strItemNumber, out strPartNumber))); myXml.WriteEndElement(); myXml.WriteEndElement(); //config } } myXml.WriteEndElement(); //part } myXml.WriteEndElement(); //references //<~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get the Total Number of Rows Annotation swAnn = default(Annotation); TableAnnotation swTable = default(TableAnnotation); long nNumRow = 0; swmodel = swapp.ActiveDoc; swView = swDraw.GetFirstView(); swTable = swView.GetFirstTableAnnotation(); swAnn = swTable.GetAnnotation(); nNumRow = swTable.RowCount; myXml.WriteStartElement("TotalRows"); myXml.WriteString(Convert.ToString(nNumRow)); myXml.WriteEndElement(); //end TotalRows myXml.WriteEndElement(); //Item myXml.WriteEndElement(); //элемент XML //End If //заносим данные в myMemoryStream myXml.Flush(); myXml.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); throw; } }
/// <summary> /// 生成零件号 /// </summary> private void CreatePartNumber() { ModelDoc2 swModel = (ModelDoc2)AllData.iSwApp.ActiveDoc; if (swModel == null) { return; } DrawingDoc swDraw = (DrawingDoc)swModel; if (swDraw == null) { return; } //序号为零件属性,还是项目号, 还是文字 int iTextContent = -1; string strText = ""; if (this.rdoTemp1.Checked) { iTextContent = (int)swBalloonTextContent_e.swBalloonTextItemNumber; strText = ""; } else if (this.rdoTemp2.Checked) { iTextContent = (int)swBalloonTextContent_e.swBalloonTextCustomProperties; strText = Interop.Office.Core.Properties.Settings.Default.CreateNbr_PPtName; //"序号"; } else if (this.rdoTemp3.Checked) { iTextContent = (int)swBalloonTextContent_e.swBalloonTextCustom; strText = "0"; } else if (this.rdoTemp4.Checked) { iTextContent = (int)swBalloonTextContent_e.swBalloonTextQuantity; strText = "0"; } //以正方形分布 int iLayout = (int)swBalloonLayoutType_e.swDetailingBalloonLayout_Square; //下划线 int iStyle = (int)swBalloonStyle_e.swBS_Underline; //下划线长度 int iSize = (int)swBalloonFit_e.swBF_Tightest; //如果用户没有选中一个视图,就选中所有的视图 SolidWorks.Interop.sldworks.View swView = (SolidWorks.Interop.sldworks.View)swDraw.ActiveDrawingView; if (swView == null)//对所有的视图进行重排序 { swModel.ClearSelection2(true); swView = (SolidWorks.Interop.sldworks.View)swDraw.GetFirstView(); while (swView != null) { swModel.Extension.SelectByID2(swView.Name, "DRAWINGVIEW", 0, 0, 0, true, 0, null, 0); swView = (SolidWorks.Interop.sldworks.View)swView.GetNextView(); } } //自动添加序号 swDraw.AutoBalloon3(iLayout, true, iStyle, iSize, iTextContent, strText, iTextContent, strText, ""); //Notes = Part.AutoBalloon3(1, True, 10, 2, 1, "", 2, "", "-无-") //swDraw.AutoBalloon3(iLayout, true, iStyle, -1, iTextContent, "xh", iTextContent, "xh", ""); //swDraw.AutoBalloon3(1, true, 10, 2, 1, "", 2, "", "-无-"); //.AutoBalloon3(1, True, 10, 2, 1, "", 2, "", "-无-") ////SolidWorks2006 //swDraw.AutoBalloon2((int)swBalloonLayoutType_e.swDetailingBalloonLayout_Top, true); }
/// <summary> /// 如果有一个视图为选中状态,则对这个视图进行重排序, /// 否则,对一个图纸下的所有视图进行重排序 /// </summary> private void ReSortAllView() { this.arCheckRepect.Clear(); if (this.rdoTemp1.Checked) { if (StringOperate.Alert("序号为项目号时,无法重排序,要继续吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } } ModelDoc2 swModel = (ModelDoc2)AllData.iSwApp.ActiveDoc; if (swModel == null) { return; } DrawingDoc swDraw = (DrawingDoc)swModel; SelectionMgr SelMgr = (SelectionMgr)swModel.SelectionManager; swModel.ClearSelection2(true); //101,$数量×"序号",$数量×"属性名" string strTxt = this.cmbStartIndex.Text; int abc = 1; bool bText = false; try { abc = Convert.ToInt16(this.cmbStartIndex.Text);//序号从一开始 } catch { bText = true; } SolidWorks.Interop.sldworks.View swView = (SolidWorks.Interop.sldworks.View)swDraw.ActiveDrawingView; if (swView == null)//对所有的视图进行重排序 { swView = (SolidWorks.Interop.sldworks.View)swDraw.GetFirstView(); //遍历视图 while (swView != null) { swDraw.ActivateView(swView.Name); if (bText) { SaidiResortOneView(swView, swModel);//对这个视图进行排序 } else { abc = ReSortOneView(abc, swView, swModel);//对这个视图进行排序 } //转到下一个视图 swView = (SolidWorks.Interop.sldworks.View)swView.GetNextView(); } } else//只对当前视图进行重排序 { if (bText) { SaidiResortOneView(swView, swModel);//对这个视图进行排序 } else { ReSortOneView(abc, swView, swModel); } } //重建,以更新明细表 swModel.EditRebuild3(); this.arCheckRepect.Clear(); }
/// <summary> /// 出工程图 /// </summary> /// <param name="dicValues"></param> /// <param name="prtTemp"></param> /// <param name="compTemp"></param> /// <param name="bomPaths"></param> /// <param name="savePaths">保存路径</param> /// <param name="newPath">新路径</param> private void Drawing(List <string> dicValues, string prtTemp, string compTemp, string bomPaths, string savePaths, string newPath) { string viewType = string.Empty; bool isometric = false; bool bom = false; string dimesion = string.Empty; double spaceX = 0.06; //x方向留白区域 double scale = 1; //定义比例初始值 List <double[]> viewBox = new List <double[]>(); //集合存放视图box List <double[]> viewOrigin = new List <double[]>(); //集合存放视图原点值 double[] outLine = new double[4]; //视图box值 double[] postion = new double[2]; //视图原点值 _swApp = (SldWorks)ConnectSW.iSwApp; //连接sw if (_swApp == null) { return; } foreach (string item in dicValues) { int errors = 0; int warnings = 0; double view1X = 0; double view1Y = 0; string filePath = item; //文件路径 string fileEx = filePath.Substring(filePath.LastIndexOf("."), 7); //获得后缀名 string filename = filePath.Substring(filePath.LastIndexOf("\\") + 1, filePath.LastIndexOf(".") - filePath.LastIndexOf("\\") - 1); if (fileEx == ".SLDPRT") { _swModelDoc = (ModelDoc2)_swApp.OpenDoc6(filePath, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings); __swDrawDoc = (DrawingDoc)_swApp.NewDrawing2((int)swDwgTemplates_e.swDwgTemplateCustom, prtTemp, (int)swDwgPaperSizes_e.swDwgPapersUserDefined, 0, 0); } if (fileEx == ".SLDASM") { _swModelDoc = (ModelDoc2)_swApp.OpenDoc6(filePath, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings); __swDrawDoc = (DrawingDoc)_swApp.NewDrawing2((int)swDwgTemplates_e.swDwgTemplateCustom, compTemp, (int)swDwgPaperSizes_e.swDwgPapersUserDefined, 0, 0); } _swModelEx = (ModelDocExtension)_swModelDoc.Extension; if (newPath != null) { savePaths = newPath.Substring(0, newPath.LastIndexOf("\\")); } //新建工程图 _swApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAutomaticScaling3ViewDrawings, true); //自动缩放新工程图比例 if (standarView == false && isometric) //如果只生成等轴测视图 { CreatIsometric(__swDrawDoc, filePath); _currentSheet = (Sheet)__swDrawDoc.GetCurrentSheet(); __swDrawDoc.ActivateSheet(_currentSheet.GetName()); _swView = __swDrawDoc.GetFirstView(); _swView = _swView.GetNextView(); ChangeViewShow(tag, _swView); _swApp.CloseDoc(_swModelDoc.GetTitle());// ModelDoc2 tempDoc = (ModelDoc2)__swDrawDoc; bool ss0 = false; if (newPath != null && IfDwg) { ss0 = tempDoc.Extension.SaveAs(newPath, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } else if (newPath != null && IfDwg == false) { ss0 = tempDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()).Substring(0, (_swModelDoc.GetTitle()).LastIndexOf(".")) + ".DWG", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } else if (newPath == null && IfDwg) { ss0 = tempDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()).Substring(0, (_swModelDoc.GetTitle()).LastIndexOf(".")) + ".DWG", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } else { ss0 = tempDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()).Substring(0, (_swModelDoc.GetTitle()).LastIndexOf(".")) + ".slddrw", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } bool isHidden = tempDoc.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swViewDisplayHideAllTypes, true); //隐藏所有类型 _swApp.CloseDoc(tempDoc.GetTitle()); _numSucess += 1; //转换成功的数量 sucessFile.Add(filePath); return; } bool isCreate = false; #region 第三视角投影 if (thirProject) { isCreate = __swDrawDoc.Create3rdAngleViews2(filePath);//创建第三视角投影视图(视图位置有差别) //调整视图位置 _swView = __swDrawDoc.GetFirstView(); while (_swView != null) { double[] vBox = new double[] { }; double[] vPoint = new double[] { }; vBox = (double[])_swView.GetOutline(); vPoint = (double[])_swView.Position; viewBox.Add(vBox); viewOrigin.Add(vPoint); _swView = _swView.GetNextView(); } //调整视图1、2位置 if (viewBox[0][3] > viewBox[0][2])//纵向 { double[] posView1 = new double[] { viewBox[0][2] / 3.0, viewOrigin[1][1] }; _swView = __swDrawDoc.GetFirstView(); _swView = _swView.GetNextView(); _swView.Position = posView1; double[] posView2 = new double[] { viewOrigin[2][0], viewOrigin[2][1] - (viewBox[2][1] - viewBox[1][3]) / 1.9 };//调整视图2位置 _swView = _swView.GetNextView(); _swView.Position = posView2; } else { double[] posView1 = new double[] { viewBox[0][2] / 4.0, viewOrigin[1][1] }; _swView = __swDrawDoc.GetFirstView(); _swView = _swView.GetNextView(); _swView.Position = posView1; double[] posView2 = new double[] { viewOrigin[2][0], viewOrigin[2][1] - (viewBox[2][1] - viewBox[1][3]) / 2.0 };//调整视图2位置 _swView = _swView.GetNextView(); _swView.Position = posView2; } viewOrigin.Clear(); viewBox.Clear(); _swView = __swDrawDoc.GetFirstView(); while (_swView != null) { double[] vBox = new double[] { }; double[] vPoint = new double[] { }; vBox = (double[])_swView.GetOutline(); vPoint = (double[])_swView.Position; viewBox.Add(vBox); viewOrigin.Add(vPoint); _swView = _swView.GetNextView(); } if (isometric)//等轴测 { _swView = (IView)__swDrawDoc.CreateDrawViewFromModelView3(filePath, "*等轴测", viewOrigin[3][0], viewOrigin[2][1], 0); _swView = __swDrawDoc.GetFirstView(); double[] sca = new double[2]; sca = _swView.ScaleRatio;//获取比例 _swView = _swView.GetNextView(); _swView = _swView.GetNextView(); _swView = _swView.GetNextView(); _swView = _swView.GetNextView(); _swView.ScaleRatio = sca; double[] rePos = new double[] { viewOrigin[3][0] + 0.015, viewOrigin[2][1] }; _swView.Position = rePos; ChangeViewShow(tag, _swView); //视图样式 AddDimension(dimesion, __swDrawDoc, _swModelDoc); //尺寸标注 } } #endregion #region 第一视角投影 else { isCreate = __swDrawDoc.Create1stAngleViews(filePath);//创建第一视角投影视图 //获取视图boundingbox _swView = __swDrawDoc.GetFirstView(); while ((_swView != null)) { outLine = (double[])_swView.GetOutline(); //(x,y坐标最值) postion = (double[])_swView.Position; //视图位置值 viewBox.Add(outLine); viewOrigin.Add(postion); _swView = _swView.GetNextView(); } double newScale = CalcuScale(viewBox, __swDrawDoc, scale, spaceX, 3); //调整视图位置(position) if (viewBox[0][3] > viewBox[0][2]) { view1X = viewBox[0][2] / 2.8; //视图1的X坐标放在图纸坐标的三分之一处 view1Y = viewBox[0][3] - viewBox[0][3] / 4.85; //视图1的Y坐标放在图纸坐标的五分之一处 } else { view1X = viewBox[0][2] / 3.5; //视图1的X坐标放在图纸坐标的三分之一处 view1Y = viewBox[0][3] - viewBox[0][3] / 4.0; //视图1的Y坐标放在图纸坐标的四分之一处 } double[] view1Pos = new double[] { view1X, view1Y }; _swView = __swDrawDoc.GetFirstView(); //获取图纸 _swView = _swView.GetNextView(); //获取第一个视图 _swView.Position = view1Pos; bool isRebuild = _swModelDoc.EditRebuild3(); //viewBox.Clear(); List <double[]> tempBox = new List <double[]>(); viewOrigin.Clear(); while ((_swView != null)) { ChangeViewShow(tag, _swView); //改变视图显示样式 AddDimension(dimesion, __swDrawDoc, _swModelDoc); //添加尺寸 outLine = (double[])_swView.GetOutline(); //(x,y坐标最值) postion = (double[])_swView.Position; //视图位置值 tempBox.Add(outLine); viewOrigin.Add(postion); _swView = _swView.GetNextView(); } if (isometric) //是否创建等轴测视图(非钣金) { double[] scalArry = new double[2]; _swView = (IView)__swDrawDoc.CreateDrawViewFromModelView3(filePath, "*等轴测", viewOrigin[2][0], viewOrigin[1][1], 0); _swView = __swDrawDoc.GetFirstView(); //获取图纸 _swView = _swView.GetNextView(); //获取第一个视图 double sca = _swView.get_IScaleRatio(); if (sca == 1) //缩小比例 { scalArry[0] = 1; scalArry[1] = newScale; } else { scalArry[0] = sca; scalArry[1] = 1; } _swView = _swView.GetNextView(); _swView = _swView.GetNextView(); _swView = _swView.GetNextView(); _swView.ScaleRatio = scalArry;//调整轴测图比例 ChangeViewShow(tag, _swView); _swModelDoc.EditRebuild3(); } ////关掉文件(不保存) //_swApp.CloseDoc(_swModelDoc.GetTitle()); if (fileEx == ".SLDASM" && bom) //是否创建明细表 { //viewBox.Clear(); //viewOrigin.Clear(); double[] outArry = new double[4]; double[] posArry = new double[2]; double[] posArry1 = null; double[] posArry2 = null; double[] posArry3 = null; _currentSheet = (Sheet)__swDrawDoc.GetCurrentSheet(); __swDrawDoc.ActivateSheet(_currentSheet.GetName()); _swView = __swDrawDoc.GetFirstView(); //获取图纸 _swView = _swView.GetNextView(); //获取第一个视图 swBomTableAnno = (BomTableAnnotation)_swView.InsertBomTable4(true, 0.4, 0.1, (int)swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_BottomRight, (int)swBomType_e.swBomType_TopLevelOnly, "", bomPaths, false, 0, false); TableAnnotation tableAnnotation = (TableAnnotation)swBomTableAnno; tableAnnotation.GetAnnotation(); BomFeature bomFeature = swBomTableAnno.BomFeature; bool[] array = new bool[bomFeature.GetConfigurationCount(false)]; object Visible = array; object configurations = bomFeature.GetConfigurations(false, ref Visible); array[0] = true; bomFeature.SetConfigurations(true, array, configurations); FeatureManager featureManager = _swModelDoc.FeatureManager; featureManager.UpdateFeatureTree(); double num = 0.007; tableAnnotation.SetRowHeight(-2, num, 0); double totleHeight = num * tableAnnotation.RowCount; //计算总的tableBom高度 double heightSum = totleHeight + 0.070; //加上标题栏总高度 int columCount = tableAnnotation.ColumnCount; //获取总的列数 double columWidth = 0; for (int i = 0; i < columCount; i++) { double wid = tableAnnotation.GetColumnWidth(i); columWidth += wid; } _swView = _swView.GetNextView(); _swView = _swView.GetNextView(); outArry = (double[])_swView.GetOutline(); if (outArry[1] < heightSum)//有可能被遮挡 { //__swView = _swDrawDoc.GetFirstView(); //double[] tempArry = new double[] { }; //tempArry=(double[])__swView.GetOutline(); //viewBox.Insert(0, tempArry); scale = ((viewBox[1][2] - viewBox[1][0]) + (viewBox[3][2] - viewBox[3][0])) / (viewBox[0][2] - columWidth - 0.025);//计算X方向的比例 if (scale > 11) { double scaleCeil = System.Math.Ceiling(scale); if (scaleCeil > 11 && scaleCeil < 16) { scale = 20; } if (scaleCeil > 15 && scaleCeil < 21) { scale = 25; } if (scaleCeil > 20 && scaleCeil < 26) { scale = 30; } if (scaleCeil > 25 && scaleCeil < 34) { scale = 40; } if (scaleCeil > 33 && scaleCeil < 45) { scale = 50; } if (scaleCeil > 44 && scaleCeil < 55) { scale = 60; } } else if (scale > 5.8 && scale < 10.5) { double scaleCeil = System.Math.Ceiling(scale); //scale = scaleCeil + 4.0; //比例为10、11、12、13、14、15 if (scaleCeil > 5 && scaleCeil < 8) { scale = 10; } if (scaleCeil > 7 && scaleCeil < 12) { scale = 15; } } _currentSheet = (Sheet)__swDrawDoc.GetCurrentSheet(); __swDrawDoc.ActivateSheet(_currentSheet.GetName()); bool isScale = _currentSheet.SetScale(1, scale, false, false); //设置视图和图纸比例 _swView = __swDrawDoc.GetFirstView(); _swView = _swView.GetNextView(); //获取视图1 double[] pos1 = new double[2]; pos1 = _swView.Position; posArry1 = new double[] { pos1[0] - columWidth / 3.45, pos1[1] }; _swView.Position = posArry1; //重置视图1的位置 _swView = _swView.GetNextView(); //获取视图2 double[] pos2 = new double[2]; pos2 = _swView.Position; posArry2 = new double[] { pos2[0] - columWidth / 3.45, pos2[1] + 0.0015 }; _swView.Position = posArry2; //设置视图2位置 _swView = _swView.GetNextView(); //获取视图三 posArry = (double[])_swView.Position; posArry3 = new double[] { posArry[0] - columWidth / 3.5, posArry[1] }; _swView.Position = posArry3;//视图3坐标 } } }//第一视角投影 #endregion if (isCreate) { _numSucess += 1;//转换成功的数量 sucessFile.Add(filePath); } ModelDoc2 tempModelDoc = (ModelDoc2)__swDrawDoc; //获取到swDraw的父级(ModelDoc) _swApp.CloseDoc(_swModelDoc.GetTitle()); bool isHiden = tempModelDoc.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swViewDisplayHideAllTypes, true); //隐藏所有类型 _swModelDoc.ForceRebuild3(false); string saveName = (_swModelDoc.GetTitle()).Substring(0, (_swModelDoc.GetTitle()).LastIndexOf(".")); bool ss; if (newPath != null && IfDwg) { ss = tempModelDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()) + ".DWG", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } else if (newPath != null && IfDwg == false) { ss = tempModelDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()) + ".slddrw", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } else if (newPath == null && IfDwg) { ss = tempModelDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()) + ".DWG", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } else { ss = tempModelDoc.Extension.SaveAs(savePaths + "\\" + (_swModelDoc.GetTitle()) + ".slddrw", (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, ref errors, ref warnings); } _swApp.CloseDoc(tempModelDoc.GetTitle());//关闭转换完成的文件 } }
public static void GetSolidObject() { swApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application"); swModel = swApp.ActiveDoc; // Проверка открытого документа if (swModel == null) { swApp.SendMsgToUser2("Откройте модель, сборку или чертеж!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); return; } if (string.IsNullOrEmpty(swModel.GetPathName())) { swApp.SendMsgToUser2("Сохраните файл!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); return; } docType = (swDocumentTypes_e)swModel.GetType(); if (docType != swDocumentTypes_e.swDocDRAWING) { configName = swModel.GetActiveConfiguration().Name;//при первом вызове присваеваеться активная конфигурация EditProp.configNames = EditProp.GetAllConfigurations(); } else { #region Если открыт чертеж lockForConf = true;//нельзя изменить конфигурацию на формочке drw = (DrawingDoc)swModel; // Получение первого листа Sheet swSheet = drw.GetCurrentSheet(); Propertiy.Format = GetFormat(swSheet); Propertiy.Sheets = drw.GetSheetCount().ToString(); Propertiy.Sheet = swSheet.GetName(); // Узнаем имя активного листа string[] vSheetNames = drw.GetSheetNames(); drw.ActivateSheet(vSheetNames[0]); swSheet = drw.GetCurrentSheet(); swView = drw.GetFirstView(); Propertiy.Scale = swView.ScaleRatio[0].ToString() + ":" + swView.ScaleRatio[1].ToString(); m = 0; if (swSheet.CustomPropertyView == "По умолчанию" | swSheet.CustomPropertyView == "Default") { // Получаем первый вид swView = swView.GetNextView(); } else { while (swView != null) { if (swView.GetName2() == swSheet.CustomPropertyView) { m = 1; } swView = swView.GetNextView(); } if (m == 0) { swView = drw.GetFirstView(); swView = swView.GetNextView(); swApp.SendMsgToUser2("Не удалось определить вид из свойств листа. Ипользуется первый вид.", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); } } if (swView == null) { swApp.SendMsgToUser2("Отсутсвует модель!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); // Возвращение активного листа drw.ActivateSheet(Propertiy.Sheet); return; } if (swView.ReferencedDocument == null) { swApp.SendMsgToUser2("Отсутсвует модель!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); // Возвращение активного листа drw.ActivateSheet(Propertiy.Sheet); return; } #endregion } }
private void TraverseFile(DirectoryInfo dir, string OldName, string NewName) { foreach (FileInfo fi in dir.GetFiles()) { if (fi.Extension.ToLower() != ".drwdot" && fi.Extension.ToLower() != ".slddrw") { continue; //slddrt. } string str = fi.FullName; ModelDoc2 swModel = (ModelDoc2)AllData.iSwApp.OpenDoc(str, (int)swDocumentTypes_e.swDocDRAWING); if (swModel == null) { iErr++; continue; } DrawingDoc swDraw = (DrawingDoc)swModel; if (swDraw == null) { iErr++; continue; } swDraw.EditTemplate(); SolidWorks.Interop.sldworks.View swView = (SolidWorks.Interop.sldworks.View)swDraw.GetFirstView(); Note swnote = (Note)swView.GetFirstNote(); while (swnote != null) { string s = swnote.GetText().ToString(); if (s == OldName) { swnote.SetText(NewName); iOK++; //这里需要保存 swDraw.EditSheet(); swModel.Save(); } swnote = (Note)swnote.GetNext(); } AllData.iSwApp.CloseDoc(swModel.GetTitle()); } foreach (DirectoryInfo dirsub in dir.GetDirectories()) { TraverseFile(dirsub, OldName, NewName); } }
public void CheckAndUpdateGaugeNotes2() { String currPage = swDraw.GetCurrentSheet().ToString(); Int32 shtCount = swDraw.GetSheetCount(); String[] shtName = (String[])swDraw.GetSheetNames(); for (int page = 0; page < shtCount; page++) { swFrame.SetStatusBarText(String.Format("Activating page {0}...", shtName[page])); swDraw.ActivateSheet(shtName[page]); swView = (View)swDraw.GetFirstView(); while (swView != null) { swDispDim = swView.GetFirstDisplayDimension5(); while (swDispDim != null) { swDim = (Dimension)swDispDim.GetDimension2(0); swFrame.SetStatusBarText(String.Format("Processing '{0}' => '{1}'...", swDim.Name, swDim.Value.ToString())); string dimtext = swDispDim.GetText((Int32)swDimensionTextParts_e.swDimensionTextCalloutBelow); dimtext = dimtext.Replace(@"(", string.Empty).Replace(@")", string.Empty).Trim(); if (gaugeRegex.IsMatch(dimtext)) { string[] texts_ = dimtext.Split(' '); gaugeNote = Regex.Replace(texts_[texts_.Length - 1], "[0-9]", string.Empty); Double og; if (!Double.TryParse(swDim.GetSystemValue2("").ToString(), out og)) { throw new GaugeSetterException("Couldn't parse dimension value."); } ourGauge = og / 0.0254; for (int i = 0; i < Gauges.Gauge.Length; i++) { Double dCellVal; if (!Double.TryParse(Gauges.Gauge[i].Thickness, out dCellVal)) { throw new GaugeSetterException("Couldn't parse gauge thickness."); } else if (Math.Abs(ourGauge - dCellVal) < 0.00003) { String gaugeCell = String.Empty; String gaugeString = String.Empty; gaugeNotFound = false; swDispDim.ShowParenthesis = true; gaugeString = String.Format("{0} {1}", Gauges.Gauge[i].GaugeNumber, gaugeNote.ToUpper()); swDispDim.SetText((int)swDimensionTextParts_e.swDimensionTextCalloutBelow, gaugeString); } } if (gaugeNotFound) { if (!APathSet.SilenceGaugeErrors) { StringBuilder sb = new StringBuilder("Non-standard gauge thickness detected:\n"); sb.AppendFormat(get_format_txt(), swDim.Name, swView.Name, ourGauge); swApp.SendMsgToUser2(sb.ToString() , (int)swMessageBoxIcon_e.swMbWarning , (int)swMessageBoxBtn_e.swMbOk); } gaugeNotFound = false; } } swDispDim = swDispDim.GetNext5(); } swView = (View)swView.GetNextView(); } } swDraw.ActivateSheet(currPage); if (gaugeNotFound) // Why waste time rebuilding? { swFrame.SetStatusBarText("Rebuilding"); swDraw.ForceRebuild(); } swFrame.SetStatusBarText(String.Empty); }
static void Main(string[] args) { SldWorks.SldWorks swApp; ModelDoc2 swModel; swApp = SW.Get_swApp(); //swApp.SendMsgToUser("teste conectado!"); IEnumerable <int> codigos = Enumerable.Range(4020001, 256); string fullPath; try { foreach (var codigo in codigos) { int erro = 0, aviso = 0; fullPath = $@"C:\ELETROFRIO\ENGENHARIA SMR\PRODUTOS FINAIS ELETROFRIO\MECÂNICA\RACK PADRAO\RACK PADRAO TESTE\{codigo}.SLDDRW"; //swApp.DocumentVisible(false, (int)swDocumentTypes_e.swDocDRAWING); swModel = swApp.OpenDoc6(fullPath, (int)swDocumentTypes_e.swDocDRAWING, (int)swOpenDocOptions_e.swOpenDocOptions_RapidDraft, "", erro, aviso); if (swModel == null) { Console.WriteLine("Erro: " + erro); Console.WriteLine("Aviso: " + aviso); continue; } DrawingDoc swDraw = (DrawingDoc)swModel; View swActiveView; View swSheetView; //A first view é a folha, e não a vista propriamente dita swSheetView = swDraw.GetFirstView(); swActiveView = swSheetView.GetNextView(); var nomeDaVista = swActiveView.GetName2(); //ModelDoc2 swModelDaVista; //swModelDaVista = swActiveView.ReferencedDocument; //var nomeDo3DdaVista = swModelDaVista.GetPathName(); //Object[] anotacoesDaVista = swActiveView.GetAnnotations(); //foreach (var a in anotacoesDaVista) //{ // Annotation annot = (Annotation)a; // Console.WriteLine(annot.GetName()); //} BomFeature swBomFeature; swBomFeature = GetBOM(swModel); Feature swFeat; swFeat = swBomFeature.GetFeature(); object[] vTableArr = swBomFeature.GetTableAnnotations(); BomTableAnnotation tableAnn = null; foreach (BomTableAnnotation v in vTableArr) { tableAnn = (BomTableAnnotation)v; } if (tableAnn != null) { LerBOM(tableAnn, swModel); } else { Console.WriteLine("Não pegou a table annotation"); } EscreveTXT(listaDeCodigos); swApp.CloseAllDocuments(true); Console.WriteLine(codigo); } } finally { EscreveTXT(listaDeCodigos); } Console.ReadLine(); }
public static void Start() { // Проверка открытого документа if (swModel == null) { swApp.SendMsgToUser2("Откройте модель, сборку или чертеж!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); return; } if (string.IsNullOrEmpty(swModel.GetPathName())) { swApp.SendMsgToUser2("Сохраните файл!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); return; } // Определение типа документа if (docType == swDocumentTypes_e.swDocDRAWING) { drw = (DrawingDoc)swModel; // Получение первого листа Sheet swSheet = drw.GetCurrentSheet(); string strActiveSheetName = swSheet.GetName(); // Узнаем имя активного листа string[] vSheetNames = drw.GetSheetNames(); drw.ActivateSheet(vSheetNames[0]); swSheet = drw.GetCurrentSheet(); swView = drw.GetFirstView(); m = 0; if (swSheet.CustomPropertyView == "По умолчанию" | swSheet.CustomPropertyView == "Default") { swView = swView.GetNextView(); // Получаем первый вид } else { while (swView != null) { if (swView.GetName2() == swSheet.CustomPropertyView) { m = 1; } swView = swView.GetNextView(); } if (m == 0) { swView = drw.GetFirstView(); swView = swView.GetNextView(); swApp.SendMsgToUser2("Не удалось определить вид из свойств листа. Ипользуется первый вид.", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); } } if (swView == null) { swApp.SendMsgToUser2("Отсутсвует модель!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); // Возвращение активного листа drw.ActivateSheet(strActiveSheetName); return; } if (swView.ReferencedDocument == null) { swApp.SendMsgToUser2("Отсутсвует модель!", (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk); // Возвращение активного листа drw.ActivateSheet(strActiveSheetName); return; } string sModelName = swView.GetReferencedModelName(); Class.configuracione = swView.ReferencedConfiguration; swModel = swView.ReferencedDocument; } }