public void PrepareTT(string swDoc, InfoObject ioVersion) { // Чтение атрибутов ИО ПЛМ и запись в кэш var TecchReqGrig = ioVersion.GetAttribute("TecchReqGrig").CollectionElements.OrderBy(i => i.GetValue <int>("IndOrder")); var count = TecchReqGrig.Count(); arrTT.Clear(); arrLinks.Clear(); notes.Clear(); foreach (var element in TecchReqGrig) { //MessageBox.Show(element.GetValue<string>("ttElementLabel")); InfoObject childio = element.GetValue <InfoObject>("ChildIO"); arrTT.Add(childio.GetValue <string>("TextLabel")); // Поиск в элементе ТТ атрибутов типа "Значения" и сохранение их в кэш для синхронизации в ПЛМ var SizeList = childio.GetAttribute("SizeList").CollectionElements; foreach (var sz in SizeList) { arrLinks.Add(new ValElem() { link = sz.GetValue <string>("ttElementSolidSizeLink"), val = "" }); } } // Получение документа SW ModelDoc2 Doc = SWHelper.GetDocByFileName(swDoc); // нужно учитывать что браться на редактирование может документ не открытый в PLM. тогда здесь будет null и нужно либо открывать документ, либо работать через DMDocument if (Doc != null) { // Определяем тип документа. Пока рисуем ТТ только на чертежах int docType = Doc.GetType(); switch (docType) { case (int)swDocumentTypes_e.swDocPART: Debug.Print("swPart"); // отрисовка ТТ на основе атрибутов //PaintNoteOnPart(Doc, arrTT.ToArray()); break; case (int)swDocumentTypes_e.swDocDRAWING: Debug.Print("swDraw"); // Расчёт расположения примечаний на основе атрибутов PreCalcNote(Doc, arrTT.ToArray()); // отрисовка ТТ PaintNoteOnDraw(Doc); break; case (int)swDocumentTypes_e.swDocASSEMBLY: Debug.Print("swAssy"); break; default: //swDocNONE, swDocSDM Debug.Print("another doc"); break; } } }
private void dgAvailability_SelectionChanged(object sender, SelectionChangedEventArgs e) { SWHelper swHelper = dgAvailability.SelectedItem as SWHelper; if (swHelper == null) { return; } dgDetailed.ItemsSource = swHelper.CurrentDetails; }
/// <summary> /// Вызывается в процессе сохранения документа в PLM /// </summary> /// <param name="swDoc">документ</param> /// <param name="ioVersion">ио версии в плм</param> public void OnCheckIn(string swDoc, InfoObject ioVersion) { //MessageBox.Show("CheckIn"); SWDocument addinDoc = AddinDocumentCache.ReturnDocument(swDoc, null) as SWDocument; // SWDocument - обёртка документа для использования аддином //addinDoc.GetStatus() - определение plm-статуса документа -не сохранен, сохранён, на редактировании, забблокирован. если документ сохранён в плм, свойства PlmDocument и PlmVersion будут содержать ссылки на ио соответственно документа и версии ModelDoc2 Doc = SWHelper.GetDocByFileName(swDoc); // нужно учитывать что сохраняться может документ не открытый в PLM. тогда здесь будет null и нужно либо открывать документ, либо работать через DMDocument if (Doc != null) { // Определяем тип документа. Пока работаем только с чертежами int docType = Doc.GetType(); if (docType == (int)swDocumentTypes_e.swDocDRAWING) { // Ищем в примечании ТТ по кэшу сохранённых ссылок на значения чертежа. // Если находим, то ищем в чертеже соответствующий элемент и считываем его значение для передачи в ПЛМ. // Заполненные значения передаём в ПЛМ. var TecchReqGrig = ioVersion.GetAttribute("TecchReqGrig").CollectionElements; String notetxt = GetNoteTTtext(Doc); foreach (var sz in arrLinks) { String szval = ""; if (notetxt.Contains(sz.link)) { IDimension d1 = (IDimension)Doc.Parameter(sz.link); if (d1 != null) { szval = d1.Value.ToString(); // d1.GetUserValueIn(swDoc).ToString(); } } if (szval != "") { // Ищем ссылку на размер по всем строкам грида ТТ foreach (var element in TecchReqGrig) { InfoObject childio = element.GetValue <InfoObject>("ChildIO"); // Поиск в элементе ТТ атрибутов типа "Значения" и сохранение их значения из чертежа var SizeList = childio.GetAttribute("SizeList").CollectionElements; foreach (var isz in SizeList) { if (sz.link == isz.GetValue <string>("ttElementSolidSizeLink")) { isz["ttElementSolidSizeText"] = szval; childio.Invoke("RecalcVisibleText", null); element["ttElementValue"] = childio.GetAttribute("VisibleLabel").GetValue(); } } } } } } } Trace.TraceInformation(@"OnCheckIn: document:" + swDoc + " ioVersion: " + ioVersion.ToString()); //Trace.TraceInformation(@"OnCheckIn: SWDocument:" + addinDoc.ToString()); }
public void CopyLink() { Clipboard.Clear(); AddinDocument addinDoc = _swAddin.GetActiveDoc(); if (addinDoc == null) { return; } string swDoc = addinDoc.FullFileName; ModelDoc2 swModelDoc = SWHelper.GetDocByFileName(swDoc); // нужно учитывать что браться на редактирование может документ не открытый в PLM. тогда здесь будет null и нужно либо открывать документ, либо работать через DMDocument if (swModelDoc == null) { return; } SelectionMgr mSelectionMgr = swModelDoc.ISelectionManager; String sz = ""; var tp = mSelectionMgr.GetSelectedObjectType3(1, -1); if (tp == (int)swSelectType_e.swSelDIMENSIONS) { IDisplayDimension sel = (IDisplayDimension)mSelectionMgr.GetSelectedObject6(1, 0); sz = sel.GetDimension2(0).FullName; Clipboard.SetText(sz); } /* if (tp == (int)swSelectType_e.swSelNOTES) * { * INote sel = (INote)mSelectionMgr.GetSelectedObject6(1, 0); mSelectionMgr.IGetSelectedObjectsComponent2 * sel * * Annotation swAnn = (Annotation)sel.GetAnnotation(); * swAnn. * ModelDocExtension mde = (ModelDocExtension)swModel.Extension; * int id = mde.GetObjectId(swAnn); * * swFeature.GetNameForSelection(out sz); * }*/ //if (sz.Length != 0) MessageBox.Show(sz); }