Пример #1
0
 public IXObject Insert(IXDrawing drw, LocationData location, SourceData data)
 {
     using (var freeze = new ViewFreeze(drw))
     {
         return(CalculateLocationAndInsert(drw, location, data));
     }
 }
Пример #2
0
 public void Insert(IXDrawing drw)
 {
     m_CurDrawing   = drw;
     m_CurPreviewer = new QrCodePreviewer(m_CurDrawing, m_QrCodeManager);
     m_InsertQrCodePage.Show(m_CurInsertQrCodePageData);
     UpdatePreview();
 }
Пример #3
0
 private void OnSheetActivated(IXDrawing doc, IXSheet newSheet)
 {
     if (doc == m_App.Documents.Active)
     {
         InvokeTrigger(Triggers_e.ConfigurationSheetChange, doc);
     }
 }
Пример #4
0
        public QrCodePreviewer(IXDrawing drw, QrCodePictureManager qrCodeMgr)
        {
            m_Drw       = drw;
            m_QrCodeMgr = qrCodeMgr;

            m_View = ((ISwDrawing)m_Drw).Model.IActiveView;
            m_View.BufferSwapNotify += OnBufferSwapNotify;
        }
Пример #5
0
        public void CalculateLocation(IXDrawing drawing, Dock_e dock,
                                      double size, double offsetX, double offsetY, out Point centerPt, out double scale)
        {
            var    sheet       = (drawing.Sheets.Active as ISwSheet).Sheet;
            double sheetWidth  = -1;
            double sheetHeight = -1;

            sheet.GetSize(ref sheetWidth, ref sheetHeight);

            var sheetPrps = (double[])sheet.GetProperties2();

            scale = sheetPrps[2] / sheetPrps[3];

            double x;
            double y;

            double offsetXDir;
            double offsetYDir;

            switch (dock)
            {
            case Dock_e.BottomLeft:
                x          = size / 2;
                y          = size / 2;
                offsetXDir = 1;
                offsetYDir = 1;
                break;

            case Dock_e.TopLeft:
                x          = size / 2;
                y          = sheetHeight - size / 2;
                offsetXDir = 1;
                offsetYDir = -1;
                break;

            case Dock_e.TopRight:
                x          = sheetWidth - size / 2;
                y          = sheetHeight - size / 2;
                offsetXDir = -1;
                offsetYDir = -1;
                break;

            case Dock_e.BottomRight:
                x          = sheetWidth - size / 2;
                y          = size / 2;
                offsetXDir = -1;
                offsetYDir = 1;
                break;

            default:
                throw new NotSupportedException();
            }

            centerPt = new Point(x + offsetX * offsetXDir, y + offsetY * offsetYDir, 0);
        }
Пример #6
0
        public void Init(IXApplication app, IXDocument model)
        {
            m_HasChanges = false;

            if (model is IXDrawing)
            {
                m_Drawing = (IXDrawing)model;
                m_Drawing.StreamWriteAvailable += OnStreamWriteAvailable;
                m_QrCodesLazy = new Lazy <ObservableCollection <QrCodeInfo> >(ReadQrCodeData);
            }
        }
Пример #7
0
        private IXObject CalculateLocationAndInsert(IXDrawing drw, LocationData location, SourceData data)
        {
            CalculateLocation(drw, location.Dock,
                              location.Size, location.OffsetX,
                              location.OffsetY,
                              out Point centerPt, out double scale);

            var x = (centerPt.X - location.Size / 2) / scale;
            var y = (centerPt.Y - location.Size / 2) / scale;

            return(InsertAt(drw, data, location.Size / scale, location.Size / scale, x, y));
        }
Пример #8
0
        private IXObject InsertAt(IXDrawing drw, SourceData data, double width, double height, double origX, double origY)
        {
            var tempFileName = "";

            try
            {
                var model = (drw as ISwDrawing).Model;

                var qrCodeData = m_QrGenerator.CreateQrCode(m_QrCodeProvider.GetData(drw, data),
                                                            QRCodeGenerator.ECCLevel.Q);

                var qrCode      = new QRCode(qrCodeData);
                var qrCodeImage = qrCode.GetGraphic(20, System.Drawing.Color.Black, System.Drawing.Color.White, false);

                tempFileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString() + ".png");
                qrCodeImage.Save(tempFileName);

                var pict = model.SketchManager.InsertSketchPicture(tempFileName);

                if (pict != null)
                {
                    pict.SetOrigin(origX, origY);
                    pict.SetSize(width, height, true);

                    //picture PMPage stays open after inserting the picture
                    const int swCommands_PmOK = -2;
                    (m_App as ISwApplication).Sw.RunCommand(swCommands_PmOK, "");

                    return(((ISwDocument)drw).CreateObjectFromDispatch <ISwObject>(pict));
                }
                else
                {
                    throw new UserException("Failed to insert picture");
                }
            }
            finally
            {
                if (File.Exists(tempFileName))
                {
                    try
                    {
                        File.Delete(tempFileName);
                    }
                    catch
                    {
                    }
                }
            }
        }
Пример #9
0
        public IXObject UpdateInPlace(IXObject pict, SourceData data, IXDrawing drw)
        {
            var skPict = (ISketchPicture)((ISwObject)pict).Dispatch;

            double width  = -1;
            double height = -1;
            double x      = -1;
            double y      = -1;

            skPict.GetSize(ref width, ref height);
            skPict.GetOrigin(ref x, ref y);

            using (var freeze = new ViewFreeze(drw))
            {
                DeletePicture(pict, drw);

                return(InsertAt(drw, data, width, height, x, y));
            }
        }
Пример #10
0
 public IXObject Reload(IXObject pict, LocationData location, SourceData data, IXDrawing drw)
 {
     using (var freeze = new ViewFreeze(drw))
     {
         DeletePicture(pict, drw);
         return(CalculateLocationAndInsert(drw, location, data));
     }
 }
Пример #11
0
 public PictureValueSerializer(IXLogger logger, IXDrawing drw)
 {
     m_Logger = logger;
     m_Draw   = drw;
 }
Пример #12
0
            internal ScopedDocument(IDocumentAdapter docAdapter, IXDrawing drw, IXLogger logger, bool useRefDoc)
            {
                m_DocAdapter = docAdapter;

                m_CloseDrawing  = false;
                m_CloseDocument = false;

                m_Logger = logger;

                m_Drawing = (IXDrawing)m_DocAdapter.GetDocumentReplacement(drw, true);

                if (drw != m_Drawing)
                {
                    m_CloseDrawing = !m_Drawing.IsCommitted;
                }

                if (!m_Drawing.IsCommitted)
                {
                    m_Drawing.Commit();
                }

                if (useRefDoc)
                {
                    var view = m_Drawing.Sheets.Active.DrawingViews.FirstOrDefault();

                    if (view == null)
                    {
                        throw new UserException("No drawing views in this document");
                    }

                    var refDoc = view.ReferencedDocument;

                    if (refDoc == null)
                    {
                        throw new UserException("View does not have a document");
                    }

                    var conf = view.ReferencedConfiguration;

                    var replDoc = (IXDocument3D)m_DocAdapter.GetDocumentReplacement(refDoc, true);

                    if (refDoc != replDoc)
                    {
                        refDoc = replDoc;
                    }

                    m_CloseDocument = m_CloseDrawing || !refDoc.IsCommitted;

                    if (!refDoc.IsCommitted)
                    {
                        refDoc.Commit();
                    }

                    if (!conf.IsCommitted)
                    {
                        conf = refDoc.Configurations[conf.Name];
                    }

                    Document      = refDoc;
                    Configuration = conf;
                }
                else
                {
                    Document = m_Drawing;
                }
            }
Пример #13
0
        public string GetData(IXDrawing drw, SourceData srcData)
        {
            var src = srcData.Source;

            using (var scopedDoc = new ScopedDocument(m_DocAdapter, drw, m_Logger, srcData.ReferencedDocument))
            {
                IEdmVault5 vault;

                var doc  = scopedDoc.Document;
                var conf = scopedDoc.Configuration;

                switch (src)
                {
                case Source_e.FilePath:
                    return(doc.Path);

                case Source_e.PartNumber:
                    if (conf == null)
                    {
                        throw new UserException("Part number can only be extracted from the configuration of part or assembly");
                    }
                    return(conf.PartNumber);

                case Source_e.CustomProperty:
                    IXProperty prp = null;

                    if (conf != null)
                    {
                        conf.Properties.TryGet(srcData.CustomPropertyName, out prp);
                    }

                    if (prp == null)
                    {
                        doc.Properties.TryGet(srcData.CustomPropertyName, out prp);
                    }

                    if (prp != null)
                    {
                        return(prp.Value?.ToString());
                    }
                    else
                    {
                        throw new UserException("Specified custom property does not exist");
                    }

                case Source_e.PdmVaultLink:
                    const string CONISIO_URL_ACTION = "explore";
                    FindRelativeVaultPath(doc.Path, out vault);
                    var file = vault.GetFileFromPath(doc.Path, out IEdmFolder5 folder);
                    return($"conisio://{vault.Name}/{CONISIO_URL_ACTION}?projectid={folder.ID}&documentid={file.ID}&objecttype={(int)file.ObjectType}");

                case Source_e.PdmWeb2Url:
                    if (string.IsNullOrEmpty(srcData.PdmWeb2Server))
                    {
                        throw new UserException("Url of Web2 server is not specified");
                    }

                    var vaultRelPath = FindRelativeVaultPath(doc.Path, out vault);
                    return($"{srcData.PdmWeb2Server}/{vault.Name}/{Path.GetDirectoryName(vaultRelPath).Replace('\\', '/')}?view=bom&file={Path.GetFileName(vaultRelPath)}");

                case Source_e.Custom:
                    return(srcData.CustomValue);

                default:
                    throw new NotSupportedException();
                }
            }
        }