Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class cmdMoveColumn : IExternalCommand
{
public Result Execute(ExternalCommandData cmdData, ref string message, ElementSet elements)
{
UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
Selection selection = uiDoc.Selection;
Transaction ts = new Transaction(uiDoc.Document, "move");
ts.Start();
//选择一个管件,可以转化为FamilyInstance
Reference refelem = selection.PickObject(ObjectType.Element, "选择一个管件");
FamilyInstance fi = uiDoc.Document.get_Element(refelem.ElementId) as FamilyInstance;
MoveColumn(uiDoc.Document, fi);
ts.Commit();
return Result.Succeeded;
}
public void MoveColumn(Document doc, FamilyInstance column)
{
LocationPoint columnLocation = column.Location as LocationPoint;
XYZ oldPlace = columnLocation.Point;
XYZ newPlace = new XYZ(10, 20, 30);
ElementTransformUtils.MoveElement(doc, column.Id, newPlace);
columnLocation = column.Location as LocationPoint;
XYZ newActual = columnLocation.Point;
string info = "Original Z location:" + oldPlace.Z +
"\nNew Z location:" + newActual.Z;
TaskDialog.Show("Revit", info);
}
bool MoveUsingLocationCurve(UIApplication app, Wall wall)
{
LocationCurve wallLine = wall.Location as LocationCurve;
XYZ translationVec = new XYZ(10, 20, 0);
return (wallLine.Move(translationVec));
}
void MoveUsingCurveParam(UIApplication app, Wall wall)
{
LocationCurve wallLine = wall.Location as LocationCurve;
XYZ p1 = XYZ.Zero;
XYZ p2 = new XYZ(10, 20, 0);
Line newWallLine = app.Application.Create.NewLineBound(p1, p2);
wallLine.Curve = newWallLine;
}
}
from:http://revit.5d6d.com/thread-1206-1-1.html
Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”相关推荐
- Revit二次开发-【NO.05】获取元素的三种方法
1.通过元素ID获取元素 2.通过过滤器获取元素 3.通过交互获取元素
- 【Revit 二次开发】满应力文件解析
[Revit 二次开发]满应力文件解析 using System; using System.Collections; using System.Collections.Generic; using ...
- Revit二次开发之管道避让
管道翻弯避避让 本项目实现了管道碰撞的时候跳跃或者翻弯的方式实现避让的功能.废话不多说,直接上代码 这个Command类是项目的主要类. using System; using System.Coll ...
- Revit二次开发 - C#程序员的佳好选择
虽然Revit的使用者和开发目前在中国都很少,但是这是个趋势. 未来Revit会在许多方面取代Autocad 做CAD二次开发的,在中国也很吃香. 但是使用C++难倒了许多人. 而Revit二次开发可 ...
- Revit二次开发_1.过滤器笔记篇
Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...
- revit二次开发之教学视频
一.背景 刚入门revit二次开发的小伙伴,很多是零基础的工程人员,为了解决这个问题,博主做了revit二次开发的一系列教学视频(包括C#基础与revit二次开发两个模块),来帮助大家更好的入门. 二 ...
- Revit二次开发——引用dynamo中的几何库
前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...
- revit二次开发之程序调试
欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111 一.背景 小伙伴们在rev ...
- revit二次开发之多线程的正确使用
欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 一.背景 小伙伴们为了加快revit程序运行速度, 可能会考虑使用多线程,但是我们必须首先搞清楚一个问题 ...
最新文章
- PX4修改线程内存大小
- 【Flutter】开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )
- 【python3】爬取鼠绘汉化的海贼王漫画
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
- 网络管理员所需要的知识结构和素质
- 一致性协议raft详解(四):raft在工程实践中的优化
- java线程夯住了怎么解决,不明白线程为什么卡住了? 求大神解救
- GRPC协议的相关原理
- 洛谷P2851 [USACO06DEC]最少的硬币The Fewest Coins(完全背包+多重背包)
- 移动端h5监听浏览器返回操作(目前在react项目中用到)
- windows 开启mysql日志记录_Windows下MySQL开启历史记录
- python random模块导入_Python学习笔记(二十)—模块的导入
- 图论算法及其matlab实现_BLDC有感FOC算法理论及其STM32软硬件实现
- python在input输入数字为何是str_Python基础笔记:input()输入与数据类型转换
- Unity3D 笔试题
- 正弦余弦算法的樽海鞘群算法
- 定义一个list对象数组 java_javascript定义一个list
- 【MATLAB航空航天工具箱】学习笔记--闰秒
- 关于打印机状态的获取
- 数字孪生的主要应用领域
热门文章
- cin 和 getline 混用中需要注意的问题
- AC日记——[HNOI2008]玩具装箱toy bzoj 1010
- JS识别不同浏览器信息
- unity3d iPhone文件目录介绍
- 剑指 offer set 26 不用加减乘除做加法
- Struts 2+Spring 3+Hibernate 3.3 在MyEclipse 10环境下的整合配置
- 抽象工厂模式-与-工厂方法模式区别
- SQL Server 下的 获取当月最后一天
- WPF 提供了以下关键帧动画类[msdn]
- 大家一起学面向对象设计模式系列Chapter 02 软件设计的基本原则