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的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...
随机推荐
- Paint Fence
There is a fence with n posts, each post can be painted with one of the k colors.You have to paint a ...
- usb的一些网址
一些关于usb的帖子.网址: usb gadget device g_ether.ko 做成usbnetwork http://bbs.csdn.net/topics/370120345 Linux ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
- dblinks
一.Oracle数据库链Database links的作用 当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本 ...
- 002_分布式搜索引擎Elasticsearch的查询与过滤
一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 curl -XPUT 'http:/ ...
- 设计模式及Python实现
设计模式是什么? Christopher Alexander:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样你就能一次又一次地使用该方案而不必做重复劳动.” 设计 ...
- jquery-扩展
jQuery扩展三种方式:$.extend,$.fn.extend,外部文件. 1)jQuery.extend(object) 调用 $.方法 2)jQuery.fn.extend(object) ...
- Windows 安装 Go语言开发环境以及使用
下载安装包 下载地址:http://www.golangtc.com/download 32 位请选择名称中包含 windows-386 的 msi 安装包,64 位请选择名称中包含 windows- ...
- tispark部署步骤
正常在我们的环境使用tidb集群,都默认没有spark集群的,但之前部署tidb的时候,spark默认已经和系统编译,下面我们的工作就是搭建spark集群和tikv融合 官方是要我们下载tispark ...
- 【AtCoder】ARC086
C - Not so Diverse 题解 选出现次数K多的出来,剩下的都删除即可 代码 #include <bits/stdc++.h> #define fi first #define ...