Revit API选择三维视图上一点
start
- [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
- public class cmdPickPointIn3d : IExternalCommand
- {
- public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
- {
- UIApplication app = commandData.Application;
- Document doc = app.ActiveUIDocument.Document;
- XYZ point_in_3d;
- if (PickFaceSetWorkPlaneAndPickPoint( app.ActiveUIDocument, out point_in_3d))
- {
- TaskDialog.Show("3D Point Selected",
- "3D point picked on the plane"
- + " defined by the selected face: "
- + PointString(point_in_3d));
- return Result.Succeeded;
- }
- else
- {
- messages = "3D point selection failed";
- return Result.Failed;
- }
- return Result.Succeeded;
- }
- string PointString(XYZ p)
- {
- return string.Format("({0},{1},{2})",
- RealString(p.X),
- RealString(p.Y),
- RealString(p.Z));
- }
- string PointString(UV p)
- {
- return string.Format("({0},{1})",
- RealString(p.U),
- RealString(p.V));
- }
- string RealString(double a)
- {
- return a.ToString("0.##");
- }
- bool PickFaceSetWorkPlaneAndPickPoint(UIDocument uidoc, out XYZ point_in_3d)
- {
- point_in_3d = null;
- Document doc = uidoc.Document;
- Reference r = uidoc.Selection.PickObject(
- ObjectType.Face,
- "Please select a planar face to define work plane");
- Element e = doc.get_Element(r.ElementId);
- if (null != e)
- {
- PlanarFace face
- = e.GetGeometryObjectFromReference(r)
- as PlanarFace;
- if (face != null)
- {
- Plane plane = new Plane(
- face.Normal, face.Origin);
- Transaction t = new Transaction(doc);
- t.Start("Temporarily set work plane"
- + " to pick point in 3D");
- SketchPlane sp = doc.Create.NewSketchPlane(
- plane);
- uidoc.ActiveView.SketchPlane = sp;
- uidoc.ActiveView.ShowActiveWorkPlane();
- try
- {
- point_in_3d = uidoc.Selection.PickPoint(
- "Please pick a point on the plane"
- + " defined by the selected face");
- }
- catch (OperationCanceledException)
- {
- }
- t.RollBack();
- }
- }
- return null != point_in_3d;
- }
- }
url:http://greatverve.cnblogs.com/p/pick-a-point-in-3d.html
Revit API选择三维视图上一点的更多相关文章
- Revit API切换三维视图
切换视图必须在事务结束之后,这个困惑了半天,记录一下. , , -));//斜视45度 ts.Commit(); //切换视图必须在事务结束后,否则会提 ...
- Revit如何修改三维视图背景色
Revit中默认的三维视图背景色为白色,有时候为了让现实效果更佳逼真,需要将三维视图背景色设置为天空色,只需在三维视图属性中打开"图形显示选项"即可对三维视图背景色进行设置.
- Revit API创建详图视图
start //创建详图视图 Transaction ts = new Transaction(doc, "http://greatverve.cnblogs.com"); ts. ...
- Revit API 判断一个构件在某个视图中的可见性
查看 Revit API.发现有Element::IsHidden这个方法.通过UI创建一个element,注意要使得这个element在某些视图可见,但是在另一些视图不可见.运行下面的方法,你会发现 ...
- threejs构建web三维视图入门教程
本文是一篇简单的webGL+threejs构建web三维视图的入门教程,你可以了解到利用threejs创建简单的三维图形,并且控制图形运动.若有不足,欢迎指出. 本文使用的框架是three.js gi ...
- Revit API射线法读取空间中相交的元素
Revit API提供根据射线来寻找经过的元素.方法是固定模式,没什么好说.关键代码:doc.FindReferencesWithContextByDirection(ptStart, (ptEnd ...
- 图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
一 . 背景及效果 当前互联网上传文件最多的就是图片文件了,但是传统web图片的截图上传需要:截图保存->选择路径->保存后再点击上传->选择路径->上传->插入. 图片 ...
- AGS API for JavaScript 图表上地图
原文:AGS API for JavaScript 图表上地图 图1 图2 图3 -------------------------------------华丽丽的分割线--------------- ...
- js移动端/H5同时选择多张图片上传并使用canvas压缩图片
最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...
随机推荐
- MacOS 下提示APP 损坏 无法安装 解决方法
sudo spctl --master-disable
- flask基础之Response响应对象(九)
前言 Response对象负责对客户端的响应,每一个请求都会有一个Response对象,那么它在一个请求的声明周期内是怎么发挥作用的呢? Response对象 响应发生的位置 先回顾一下http请求的 ...
- OpenWRT开发之——对C++的支持(解决库依赖问题)【转】
转自:https://my.oschina.net/hevakelcj/blog/411944 摘要: 本文尝试用C++来开发一个cpp-demo包 遇到打包库依赖的问题,分析打包过程并解决了这个问题 ...
- [转]使用 mitmproxy + python 做拦截代理
使用 mitmproxy + python 做拦截代理 本文是一个较为完整的 mitmproxy 教程,侧重于介绍如何开发拦截脚本,帮助读者能够快速得到一个自定义的代理工具. 本文假设读者有基本的 ...
- 打包部署到tomcat
部署到tomcat的方法 注意:在eclipse 或 idea 上需要引入外部tomcat 1.将程序打成war包启动tomcat 2.将target 文件下内容压缩城zip,发布到tomcat RO ...
- 如何将java项目转化为web项目
1.修改工程文件 找到项目工作空间目录,打开.project文件,找到:<natures> </natures>代码段,在代码段中加入如下内容并保存:<nature> ...
- 七、vue语法补充二(动态组件 & 异步组件、访问元素 & 组件、混入)
1..sync 修饰符 2.3.0+ 新增 vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定.类似于v-model的效果 例子: this.$ ...
- 网络抓包神器-Charles使用指南
http://blog.csdn.net/liulanghk/article/details/46342205 目录 概述 安装 显示模式 PC端抓包 移动应用抓包 其他技能 charles使用问题汇 ...
- linux后端诊断与调试技术
本文不是liunx命令使用教程,也不打算全方面阐明其用法,互联网公司项目很多,服务程序之间相互依赖调用很复杂,各种因素会影响线程服务正常运行,特别是基础服务组件更是如此,当出现各种问题时,如何诊断li ...
- KnockoutJs学习笔记(八)
with binding用于创建一个新的绑定环境(binding context),包含with binding的元素的所有子元素都将处于指定的object的环境限定内. 下面是一个简单的使用with ...