Ejemplo n.º 1
0
        /// <summary>
        /// Load from BCF 2.0 as BCF 1.0
        /// </summary>
        /// <param name="bcf2">BCF 2.0 file</param>
        /// <returns></returns>
        public static IssueBCF LoadBcf1IssueFromBcf2(BCF2.Markup bcf2Markup, BCF2.VisualizationInfo bcf2Viewpoint)
        {
            // Convert headers
            List <HeaderFile> bcf1Headers = new List <HeaderFile>();

            foreach (BCF2.HeaderFile bcf2Header in bcf2Markup.Header)
            {
                HeaderFile bcf1Header = new HeaderFile()
                {
                    Filename   = bcf2Header.Filename,
                    Date       = bcf2Header.Date,
                    IfcProject = bcf2Header.IfcProject,
                    IfcSpatialStructureElement = bcf2Header.IfcSpatialStructureElement
                };
                bcf1Headers.Add(bcf1Header);
            }

            // Convert topic
            Topic bcf1Topic = new Topic();

            if (bcf2Markup.Topic != null)
            {
                bcf1Topic.Guid          = bcf2Markup.Topic.Guid;
                bcf1Topic.ReferenceLink = bcf2Markup.Topic.ReferenceLink;
                bcf1Topic.Title         = bcf2Markup.Topic.Title;
            }
            ;

            // Convert comments
            ObservableCollection <CommentBCF> bcf1Comments = new ObservableCollection <CommentBCF>();

            foreach (BCF2.Comment bcf2Comment in bcf2Markup.Comment)
            {
                CommentBCF bcf1Comment = new CommentBCF()
                {
                    Author   = bcf2Comment.Author,
                    Comment1 = bcf2Comment.Comment1,
                    Date     = bcf2Comment.Date,
                    Guid     = bcf2Comment.Guid,
                    Status   = CommentStatus.Unknown,  // default unknown for now
                    Topic    = new CommentTopic()
                    {
                        Guid = bcf2Markup.Topic == null?Guid.NewGuid().ToString() : bcf2Markup.Topic.Guid
                    },
                    VerbalStatus = bcf2Comment.VerbalStatus
                };
                bcf1Comments.Add(bcf1Comment);
            }

            // Convert markups/issues
            Markup bcf1Markup = new Markup()
            {
                Header  = bcf1Headers.ToArray(),
                Topic   = bcf1Topic,
                Comment = bcf1Comments
            };

            // Convert ClippingPlane
            List <ClippingPlane> bcf1ClippingPlanes = new List <ClippingPlane>();

            if (bcf2Viewpoint.ClippingPlanes != null)
            {
                foreach (BCF2.ClippingPlane bcf2ClippingPlane in bcf2Viewpoint.ClippingPlanes)
                {
                    if (bcf2ClippingPlane != null)
                    {
                        bcf1ClippingPlanes.Add(new ClippingPlane()
                        {
                            Direction = new Direction()
                            {
                                X = bcf2ClippingPlane.Direction.X,
                                Y = bcf2ClippingPlane.Direction.Y,
                                Z = bcf2ClippingPlane.Direction.Z
                            },
                            Location = new Point()
                            {
                                X = bcf2ClippingPlane.Location.X,
                                Y = bcf2ClippingPlane.Location.Y,
                                Z = bcf2ClippingPlane.Location.Z
                            }
                        });
                    }
                }
            }

            // Convert Components
            List <Component> bcf1Components = new List <Component>();

            if (bcf2Viewpoint.Components != null)
            {
                foreach (BCF2.Component bcf2Component in bcf2Viewpoint.Components)
                {
                    if (bcf2Component != null)
                    {
                        bcf1Components.Add(new Component()
                        {
                            AuthoringToolId   = bcf2Component.AuthoringToolId,
                            IfcGuid           = bcf2Component.IfcGuid,
                            OriginatingSystem = bcf2Component.OriginatingSystem
                        });
                    }
                }
            }

            // Convert Lines
            List <Line> bcf1Lines = new List <Line>();

            if (bcf2Viewpoint.Lines != null)
            {
                foreach (BCF2.Line bcf2Line in bcf2Viewpoint.Lines)
                {
                    if (bcf2Line != null)
                    {
                        bcf1Lines.Add(new Line()
                        {
                            StartPoint = new Point()
                            {
                                X = bcf2Line.StartPoint.X,
                                Y = bcf2Line.StartPoint.Y,
                                Z = bcf2Line.StartPoint.Z
                            },
                            EndPoint = new Point()
                            {
                                X = bcf2Line.EndPoint.X,
                                Y = bcf2Line.EndPoint.Y,
                                Z = bcf2Line.EndPoint.Z
                            }
                        });
                    }
                }
            }

            // Convert viewpoints
            VisualizationInfo bcf1Viewpoint = new VisualizationInfo()
            {
                ClippingPlanes   = bcf1ClippingPlanes.ToArray(),
                Components       = bcf1Components.ToArray(),
                Lines            = bcf1Lines.ToArray(),
                OrthogonalCamera = bcf2Viewpoint.OrthogonalCamera == null ? null : new OrthogonalCamera()
                {
                    CameraDirection = new Direction()
                    {
                        X = bcf2Viewpoint.OrthogonalCamera.CameraDirection.X,
                        Y = bcf2Viewpoint.OrthogonalCamera.CameraDirection.Y,
                        Z = bcf2Viewpoint.OrthogonalCamera.CameraDirection.Z
                    },
                    CameraUpVector = new Direction()
                    {
                        X = bcf2Viewpoint.OrthogonalCamera.CameraUpVector.X,
                        Y = bcf2Viewpoint.OrthogonalCamera.CameraUpVector.Y,
                        Z = bcf2Viewpoint.OrthogonalCamera.CameraUpVector.Z
                    },
                    CameraViewPoint = new Point()
                    {
                        X = bcf2Viewpoint.OrthogonalCamera.CameraViewPoint.X,
                        Y = bcf2Viewpoint.OrthogonalCamera.CameraViewPoint.Y,
                        Z = bcf2Viewpoint.OrthogonalCamera.CameraViewPoint.Z
                    },
                    ViewToWorldScale = bcf2Viewpoint.OrthogonalCamera.ViewToWorldScale
                },
                PerspectiveCamera = bcf2Viewpoint.PerspectiveCamera == null ? null : new PerspectiveCamera()
                {
                    CameraDirection = new Direction()
                    {
                        X = bcf2Viewpoint.PerspectiveCamera.CameraDirection.X,
                        Y = bcf2Viewpoint.PerspectiveCamera.CameraDirection.Y,
                        Z = bcf2Viewpoint.PerspectiveCamera.CameraDirection.Z
                    },
                    CameraUpVector = new Direction()
                    {
                        X = bcf2Viewpoint.PerspectiveCamera.CameraUpVector.X,
                        Y = bcf2Viewpoint.PerspectiveCamera.CameraUpVector.Y,
                        Z = bcf2Viewpoint.PerspectiveCamera.CameraUpVector.Z
                    },
                    CameraViewPoint = new Point()
                    {
                        X = bcf2Viewpoint.PerspectiveCamera.CameraViewPoint.X,
                        Y = bcf2Viewpoint.PerspectiveCamera.CameraViewPoint.Y,
                        Z = bcf2Viewpoint.PerspectiveCamera.CameraViewPoint.Z
                    },
                    FieldOfView = bcf2Viewpoint.PerspectiveCamera.FieldOfView
                },
                SheetCamera = bcf2Viewpoint.SheetCamera == null ? null : new SheetCamera()
                {
                    SheetID = bcf2Viewpoint.SheetCamera.SheetID,
                    TopLeft = new Point()
                    {
                        X = bcf2Viewpoint.SheetCamera.TopLeft.X,
                        Y = bcf2Viewpoint.SheetCamera.TopLeft.Y,
                        Z = bcf2Viewpoint.SheetCamera.TopLeft.Z
                    },
                    BottomRight = new Point()
                    {
                        X = bcf2Viewpoint.SheetCamera.BottomRight.X,
                        Y = bcf2Viewpoint.SheetCamera.BottomRight.Y,
                        Z = bcf2Viewpoint.SheetCamera.BottomRight.Z
                    }
                }
            };

            // Create a new BCF 1.0 issue
            IssueBCF bcf1 = new IssueBCF()
            {
                markup    = bcf1Markup,
                viewpoint = bcf1Viewpoint
            };

            return(bcf1);
        }
Ejemplo n.º 2
0
        private Tuple<List<IssueBCF>, List<Issue>> AddIssue(string path, bool isBcf)
        {
            try
              {
            // set image export settings
            ComApi.InwOaPropertyVec options = ComBridge.State.GetIOPluginOptions("lcodpimage");
            // configure the option "export.image.format" to export png and image size
            foreach (ComApi.InwOaProperty opt in options.Properties())
            {
              if (opt.name == "export.image.format")
            opt.value = "lcodpexpng";
              if (opt.name == "export.image.width")
            opt.value = 1600;
              if (opt.name == "export.image.height")
            opt.value = 900;

            }

            _savedViewpoints = new List<SavedViewpoint>();

            foreach (SavedItem oSI in _oDoc.SavedViewpoints.ToSavedItemCollection())
            {
              RecurseItems(oSI);
            }

            var types = new ObservableCollection<Issuetype>();
            var assignees = new List<User>();
            var components = new ObservableCollection<Component>();
            var priorities = new ObservableCollection<Priority>();
            var noCom = true;
            var noPrior = true;
            var noAssign = true;

            if (!isBcf)
            {
              types = mainPan.jira.TypesCollection;
              assignees = mainPan.getAssigneesProj();
              components = mainPan.jira.ComponentsCollection;
              priorities = mainPan.jira.PrioritiesCollection;
              noCom =
              mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.components ==
              null;
              noPrior =
              mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.priority ==
              null;
              noAssign =
              mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.assignee ==
              null;

            }

            AddIssueNavis ain = new AddIssueNavis(_savedViewpoints, types, assignees, components, priorities, noCom, noPrior, noAssign);
            if (isBcf)
              ain.JiraFieldsBox.Visibility = System.Windows.Visibility.Collapsed;
            ain.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
            ain.ShowDialog();
            if (ain.DialogResult.HasValue && ain.DialogResult.Value)
            {
              int elemCheck = 2;
              if (ain.all.IsChecked.Value)
            elemCheck = 0;
              else if (ain.selected.IsChecked.Value)
            elemCheck = 1;

              List<SavedViewpoint> savedViewpointsImport = new List<SavedViewpoint>();

              for (int i = 0; i < ain.issueList.SelectedItems.Count; i++)
              {
            int index = ain.issueList.Items.IndexOf(ain.issueList.SelectedItems[i]);
            savedViewpointsImport.Add(_savedViewpoints[index]);
              }
              if (!savedViewpointsImport.Any())
            return null;
              //get selection only once!
              if (elemCheck == 1)
            _elementList = _oDoc.CurrentSelection.SelectedItems.Where(o => o.InstanceGuid != Guid.Empty).ToList<ModelItem>();

              List<IssueBCF> issues = new List<IssueBCF>();
              List<Issue> issuesJira = new List<Issue>();
              foreach (var sv in savedViewpointsImport)
              {
            Issue issueJira = new Issue();
            if (!isBcf)
            {
              issueJira.fields = new Fields();
              issueJira.fields.issuetype = (Issuetype)ain.issueTypeCombo.SelectedItem;
              issueJira.fields.priority = (Priority)ain.priorityCombo.SelectedItem;
              if (!string.IsNullOrEmpty(ain.ChangeAssign.Content.ToString()) &&
                  ain.ChangeAssign.Content.ToString() != "none")
              {
                issueJira.fields.assignee = new User();
                issueJira.fields.assignee.name = ain.ChangeAssign.Content.ToString();
              }

              if (ain.SelectedComponents != null && ain.SelectedComponents.Any())
              {
                issueJira.fields.components = ain.SelectedComponents;
              }
            }

            IssueBCF issue = new IssueBCF();
            string folderIssue = Path.Combine(path, issue.guid.ToString());
            if (!Directory.Exists(folderIssue))
              Directory.CreateDirectory(folderIssue);

            issue.snapshot = Path.Combine(folderIssue, "snapshot.png");
            // set the currtent saved viewpoint and then generate sna and BCF viewpoint
            _oDoc.SavedViewpoints.CurrentSavedViewpoint = sv;
            issue.viewpoint = generateViewpoint(sv.Viewpoint, elemCheck);
            generateSnapshot(folderIssue);

            issue.markup.Topic.Title = sv.DisplayName;
            issue.markup.Header[0].IfcProject = "";
            string projFilename = !string.IsNullOrEmpty(_oDoc.FileName) ? System.IO.Path.GetFileName(_oDoc.FileName) : "";
            issue.markup.Header[0].Filename = projFilename;
            issue.markup.Header[0].Date = DateTime.Now;

            //comment
            if (sv.Comments.Any())
            {

              foreach (var comm in sv.Comments)
              {
                var c = new CommentBCF
                {
                  Comment1 = comm.Body,
                  Topic = new CommentTopic { Guid = issue.guid.ToString() }
                };
                ;
                c.Date = DateTime.Now;
                c.VerbalStatus = comm.Status.ToString();
                c.Author = (string.IsNullOrWhiteSpace(mainPan.jira.Self.displayName)) ? UserSettings.Get("BCFusername") : mainPan.jira.Self.displayName;
                issue.markup.Comment.Add(c);
              }
            }
            issues.Add(issue);
            issuesJira.Add(issueJira);
              } // end foreach
              return new Tuple<List<IssueBCF>, List<Issue>>(issues, issuesJira);
            }
              }

              catch (Exception ex)
              {
            MessageBox.Show(ex.ToString());
              }
              return null;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Add Issue
        /// </summary>
        /// <param name="path"></param>
        /// <param name="isBcf"></param>
        /// <returns></returns>
        private Tuple<IssueBCF, Issue> AddIssue(string path, bool isBcf)
        {
            try
              {
            UIDocument uidoc = uiapp.ActiveUIDocument;
            Document doc = uidoc.Document;

            if (!(uidoc.ActiveView is View3D || uidoc.ActiveView is ViewSheet || uidoc.ActiveView is ViewPlan || uidoc.ActiveView is ViewSection || uidoc.ActiveView is ViewDrafting))
            {
              MessageBox.Show("I'm sorry,\nonly 3D and 2D views are supported.", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
              return null;
            }
            IssueBCF issue = new IssueBCF();

            string folderIssue = Path.Combine(path, issue.guid.ToString());
            if (!Directory.Exists(folderIssue))
              Directory.CreateDirectory(folderIssue);

            var types = new ObservableCollection<Issuetype>();
            var assignees = new List<User>();
            var components = new ObservableCollection<IssueTracker.Data.Component>();
            var priorities = new ObservableCollection<Priority>();
            var noCom = true;
            var noPrior = true;
            var noAssign = true;

            if (!isBcf)
            {
              types = mainPan.jira.TypesCollection;
              assignees = mainPan.getAssigneesIssue();
              components = mainPan.jira.ComponentsCollection;
              priorities = mainPan.jira.PrioritiesCollection;
              noCom =
              mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.components ==
              null;
              noPrior =
              mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.priority ==
              null;
              noAssign =
              mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.assignee ==
              null;

            }

            AddIssueRevit air = new AddIssueRevit(uidoc, folderIssue, types, assignees, components, priorities, noCom, noPrior, noAssign);
            air.Title = "Add Jira Issue";
            if (!isBcf)
              air.VerbalStatus.Visibility = System.Windows.Visibility.Collapsed;
            else
              air.JiraFieldsBox.Visibility = System.Windows.Visibility.Collapsed;
            air.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
            air.ShowDialog();
            if (air.DialogResult.HasValue && air.DialogResult.Value)
            {
              issue.snapshot = Path.Combine(folderIssue, "snapshot.png");
              int elemCheck = 2;
              if (air.all.IsChecked.Value)
            elemCheck = 0;
              else if (air.selected.IsChecked.Value)
            elemCheck = 1;

              Issue issueJira = new Issue();
              if (!isBcf)
              {
            issueJira.fields = new Fields();
            issueJira.fields.issuetype = (Issuetype)air.issueTypeCombo.SelectedItem;
            issueJira.fields.priority = (Priority)air.priorityCombo.SelectedItem;
            if (!string.IsNullOrEmpty(air.ChangeAssign.Content.ToString()) &&
                air.ChangeAssign.Content.ToString() != "none")
            {
              issueJira.fields.assignee = new User();
              issueJira.fields.assignee.name = air.ChangeAssign.Content.ToString();
            }

            if (air.SelectedComponents != null && air.SelectedComponents.Any())
            {
              issueJira.fields.components = air.SelectedComponents;
            }
              }
              issue.viewpoint = generateViewpoint(elemCheck);
              issue.markup.Topic.Title = air.TitleBox.Text;
              issue.markup.Header[0].IfcProject = ExporterIFCUtils.CreateProjectLevelGUID(doc,
              Autodesk.Revit.DB.IFC.IFCProjectLevelGUIDType.Project);
              string projFilename = (doc.PathName != null && doc.PathName != "")
              ? System.IO.Path.GetFileName(doc.PathName)
              : "";
              issue.markup.Header[0].Filename = projFilename;
              issue.markup.Header[0].Date = DateTime.Now;

              //comment
              if (!string.IsNullOrWhiteSpace(air.CommentBox.Text))
              {
            CommentBCF c = new CommentBCF();
            c.Comment1 = air.CommentBox.Text;
            c.Topic = new CommentTopic();
            c.Topic.Guid = issue.guid.ToString();
            ;
            c.Date = DateTime.Now;
            c.VerbalStatus = air.VerbalStatus.Text;
            c.Status = CommentStatus.Unknown;
            c.Author = (string.IsNullOrWhiteSpace(mainPan.jira.Self.displayName))
                ? UserSettings.Get("BCFusername")
                : mainPan.jira.Self.displayName;
            issue.markup.Comment.Add(c);
              }

              return new Tuple<IssueBCF, Issue>(issue, issueJira);

            }
            else
            {
              mainPan.DeleteDirectory(folderIssue);
            }

              }

              catch (System.Exception ex1)
              {
            MessageBox.Show("exception: " + ex1);
              }
              return null;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Load from BCF 2.0 as BCF 1.0
        /// </summary>
        /// <param name="bcf2">BCF 2.0 file</param>
        /// <returns></returns>
        public static IssueBCF LoadBcf1IssueFromBcf2(BCF2.Markup bcf2Markup, BCF2.VisualizationInfo bcf2Viewpoint)
        {
            // Convert headers
            List<HeaderFile> bcf1Headers = new List<HeaderFile>();
            foreach (BCF2.HeaderFile bcf2Header in bcf2Markup.Header)
            {
                HeaderFile bcf1Header = new HeaderFile()
                {
                    Filename = bcf2Header.Filename,
                    Date = bcf2Header.Date,
                    IfcProject = bcf2Header.IfcProject,
                    IfcSpatialStructureElement = bcf2Header.IfcSpatialStructureElement
                };
                bcf1Headers.Add(bcf1Header);
            }

            // Convert topic
            Topic bcf1Topic = new Topic();
            if (bcf2Markup.Topic != null)
            {
                bcf1Topic.Guid = bcf2Markup.Topic.Guid;
                bcf1Topic.ReferenceLink = bcf2Markup.Topic.ReferenceLink;
                bcf1Topic.Title = bcf2Markup.Topic.Title;
            };

            // Convert comments
            ObservableCollection<CommentBCF> bcf1Comments = new ObservableCollection<CommentBCF>();
            foreach(BCF2.Comment bcf2Comment in bcf2Markup.Comment)
            {
                CommentBCF bcf1Comment = new CommentBCF()
                {
                    Author = bcf2Comment.Author,
                    Comment1 = bcf2Comment.Comment1,
                    Date = bcf2Comment.Date,
                    Guid = bcf2Comment.Guid,
                    Status = CommentStatus.Unknown,    // default unknown for now
                    Topic = new CommentTopic() { Guid = bcf2Markup.Topic == null ? Guid.NewGuid().ToString() : bcf2Markup.Topic.Guid },
                    VerbalStatus = bcf2Comment.VerbalStatus
                };
                bcf1Comments.Add(bcf1Comment);
            }

            // Convert markups/issues
            Markup bcf1Markup = new Markup()
            {
                Header = bcf1Headers.ToArray(),
                Topic = bcf1Topic,
                Comment = bcf1Comments
            };

            // Convert ClippingPlane
            List<ClippingPlane> bcf1ClippingPlanes = new List<ClippingPlane>();
            if (bcf2Viewpoint.ClippingPlanes != null)
            {
                foreach (BCF2.ClippingPlane bcf2ClippingPlane in bcf2Viewpoint.ClippingPlanes)
                {
                    if (bcf2ClippingPlane != null)
                    {
                        bcf1ClippingPlanes.Add(new ClippingPlane()
                        {
                            Direction = new Direction()
                            {
                                X = bcf2ClippingPlane.Direction.X,
                                Y = bcf2ClippingPlane.Direction.Y,
                                Z = bcf2ClippingPlane.Direction.Z
                            },
                            Location = new Point()
                            {
                                X = bcf2ClippingPlane.Location.X,
                                Y = bcf2ClippingPlane.Location.Y,
                                Z = bcf2ClippingPlane.Location.Z
                            }
                        });
                    }
                }
            }

            // Convert Components
            List<Component> bcf1Components = new List<Component>();
            if (bcf2Viewpoint.Components != null)
            {
                foreach (BCF2.Component bcf2Component in bcf2Viewpoint.Components)
                {
                    if (bcf2Component != null)
                    {
                        bcf1Components.Add(new Component()
                        {
                            AuthoringToolId = bcf2Component.AuthoringToolId,
                            IfcGuid = bcf2Component.IfcGuid,
                            OriginatingSystem = bcf2Component.OriginatingSystem
                        });
                    }
                }
            }

            // Convert Lines
            List<Line> bcf1Lines = new List<Line>();
            if (bcf2Viewpoint.Lines != null)
            {
                foreach (BCF2.Line bcf2Line in bcf2Viewpoint.Lines)
                {
                    if (bcf2Line != null)
                    {
                        bcf1Lines.Add(new Line()
                        {
                            StartPoint = new Point()
                            {
                                X = bcf2Line.StartPoint.X,
                                Y = bcf2Line.StartPoint.Y,
                                Z = bcf2Line.StartPoint.Z
                            },
                            EndPoint = new Point()
                            {
                                X = bcf2Line.EndPoint.X,
                                Y = bcf2Line.EndPoint.Y,
                                Z = bcf2Line.EndPoint.Z
                            }
                        });
                    }
                }
            }

            // Convert viewpoints
            VisualizationInfo bcf1Viewpoint = new VisualizationInfo()
            {
                ClippingPlanes = bcf1ClippingPlanes.ToArray(),
                Components = bcf1Components.ToArray(),
                Lines = bcf1Lines.ToArray(),
                OrthogonalCamera = bcf2Viewpoint.OrthogonalCamera == null ? null : new OrthogonalCamera()
                {
                    CameraDirection = new Direction()
                    {
                        X = bcf2Viewpoint.OrthogonalCamera.CameraDirection.X,
                        Y = bcf2Viewpoint.OrthogonalCamera.CameraDirection.Y,
                        Z = bcf2Viewpoint.OrthogonalCamera.CameraDirection.Z
                    },
                    CameraUpVector = new Direction()
                    {
                        X = bcf2Viewpoint.OrthogonalCamera.CameraUpVector.X,
                        Y = bcf2Viewpoint.OrthogonalCamera.CameraUpVector.Y,
                        Z = bcf2Viewpoint.OrthogonalCamera.CameraUpVector.Z
                    },
                    CameraViewPoint = new Point()
                    {
                        X = bcf2Viewpoint.OrthogonalCamera.CameraViewPoint.X,
                        Y = bcf2Viewpoint.OrthogonalCamera.CameraViewPoint.Y,
                        Z = bcf2Viewpoint.OrthogonalCamera.CameraViewPoint.Z
                    },
                    ViewToWorldScale = bcf2Viewpoint.OrthogonalCamera.ViewToWorldScale
                },
                PerspectiveCamera = bcf2Viewpoint.PerspectiveCamera == null ? null : new PerspectiveCamera()
                {
                    CameraDirection = new Direction()
                    {
                        X = bcf2Viewpoint.PerspectiveCamera.CameraDirection.X,
                        Y = bcf2Viewpoint.PerspectiveCamera.CameraDirection.Y,
                        Z = bcf2Viewpoint.PerspectiveCamera.CameraDirection.Z
                    },
                    CameraUpVector = new Direction()
                    {
                        X = bcf2Viewpoint.PerspectiveCamera.CameraUpVector.X,
                        Y = bcf2Viewpoint.PerspectiveCamera.CameraUpVector.Y,
                        Z = bcf2Viewpoint.PerspectiveCamera.CameraUpVector.Z
                    },
                    CameraViewPoint = new Point()
                    {
                        X = bcf2Viewpoint.PerspectiveCamera.CameraViewPoint.X,
                        Y = bcf2Viewpoint.PerspectiveCamera.CameraViewPoint.Y,
                        Z = bcf2Viewpoint.PerspectiveCamera.CameraViewPoint.Z
                    },
                    FieldOfView = bcf2Viewpoint.PerspectiveCamera.FieldOfView
                },
                SheetCamera = bcf2Viewpoint.SheetCamera == null ? null : new SheetCamera()
                {
                    SheetID = bcf2Viewpoint.SheetCamera.SheetID,
                    TopLeft = new Point()
                    {
                        X = bcf2Viewpoint.SheetCamera.TopLeft.X,
                        Y = bcf2Viewpoint.SheetCamera.TopLeft.Y,
                        Z = bcf2Viewpoint.SheetCamera.TopLeft.Z
                    },
                    BottomRight = new Point()
                    {
                        X = bcf2Viewpoint.SheetCamera.BottomRight.X,
                        Y = bcf2Viewpoint.SheetCamera.BottomRight.Y,
                        Z = bcf2Viewpoint.SheetCamera.BottomRight.Z
                    }
                }
            };

            // Create a new BCF 1.0 issue
            IssueBCF bcf1 = new IssueBCF()
            {
                markup = bcf1Markup,
                viewpoint = bcf1Viewpoint
            };

            return bcf1;
        }