Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要在Revit中创建新的三维透视视图,需要对我的代码进行哪些更改?_C#_Revit Api - Fatal编程技术网

C# 要在Revit中创建新的三维透视视图,需要对我的代码进行哪些更改?

C# 要在Revit中创建新的三维透视视图,需要对我的代码进行哪些更改?,c#,revit-api,C#,Revit Api,我从中复制了一些代码,以便在已打开的Revit文件中创建三维透视图。但是,当我运行Execute方法时,绝对不会发生任何事情。输出日志中没有抛出异常或错误,因此我认为这只是我的代码副本的问题 要使此代码创建三维透视视图和/或在Revit中打开它,我需要做什么 using (Transaction t = new Transaction(doc, "CameraTransaction")) { t.Start();

我从中复制了一些代码,以便在已打开的Revit文件中创建三维透视图。但是,当我运行Execute方法时,绝对不会发生任何事情。输出日志中没有抛出异常或错误,因此我认为这只是我的代码副本的问题

要使此代码创建三维透视视图和/或在Revit中打开它,我需要做什么

using (Transaction t = new Transaction(doc, "CameraTransaction"))
            {
                t.Start();
                IEnumerable<ViewFamilyType> viewFamilyTypes = from elem in new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType))
                                                              let type = elem as ViewFamilyType
                                                              where type.ViewFamily == ViewFamily.ThreeDimensional
                                                              select type;
                
                View3D issue3DCameraView = View3D.CreatePerspective(doc, viewFamilyTypes.First().Id);
                issue3DCameraView.Name = "Issue_" + issue.Name;

                PerspectiveCamera cam = issue.Viewpoints[i].PerspectiveCamera;
                XYZ position = new XYZ(cam.CameraViewPoint.X, cam.CameraViewPoint.Y, cam.CameraViewPoint.Z);
                XYZ up = new XYZ(cam.CameraUpVector.X, cam.CameraUpVector.Y, cam.CameraUpVector.Z);
                XYZ sightDir = new XYZ(cam.CameraDirection.X, cam.CameraDirection.Y, cam.CameraDirection.Z);

                var orientation = new ViewOrientation3D(position, up, sightDir);
                issue3DCameraView.SetOrientation(orientation);

                Parameter farClip = issue3DCameraView.LookupParameter("Far Clip Active");
                farClip.Set(0);

                Parameter cropRegionVisible = issue3DCameraView.LookupParameter("Crop Region Visible");
                cropRegionVisible.Set(1);

                Parameter cropView = issue3DCameraView.LookupParameter("Crop View");
                cropView.Set(1);
/* Removed                
//Added in an attempt to make the code work
                RevitCommandId commandId = RevitCommandId.LookupPostableCommandId(PostableCommand.Default3DView);
                if (app.CanPostCommand(commandId))
                {
                    app.PostCommand(commandId);
                }*/

                t.Commit();
            }

编辑:对这个问题的进一步研究表明,事务只是在issue3DCameraView.SetOrientationorientation停止;行。

通过查看您的代码,我无法判断出可能的错误。。。当然,除了您添加的邮政编码呼叫。相反,这绝对没有帮助


与其尝试为您修复代码,我建议您首先学习Building coder主题组中列出的一些其他文章。

此代码的问题在于问题的来源。视点[I]。透视照相机。代码本身运行良好

我把这个答案留在这里是为了那些在我之后的人的利益