예제 #1
0
        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;
                }
            }
        }
예제 #2
0
        private void dgAvailability_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            SWHelper swHelper = dgAvailability.SelectedItem as SWHelper;

            if (swHelper == null)
            {
                return;
            }
            dgDetailed.ItemsSource = swHelper.CurrentDetails;
        }
예제 #3
0
        /// <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());
        }
예제 #4
0
        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);
        }