使用ElementTransformUtils.MoveElement()移动元素,改变元素的Location属性

[Transaction(TransactionMode.Manual)]
[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()移动元素”相关推荐

  1. Revit二次开发-【NO.05】获取元素的三种方法

    1.通过元素ID获取元素 2.通过过滤器获取元素 3.通过交互获取元素

  2. 【Revit 二次开发】满应力文件解析

    [Revit 二次开发]满应力文件解析 using System; using System.Collections; using System.Collections.Generic; using ...

  3. Revit二次开发之管道避让

    管道翻弯避避让 本项目实现了管道碰撞的时候跳跃或者翻弯的方式实现避让的功能.废话不多说,直接上代码 这个Command类是项目的主要类. using System; using System.Coll ...

  4. Revit二次开发 - C#程序员的佳好选择

    虽然Revit的使用者和开发目前在中国都很少,但是这是个趋势. 未来Revit会在许多方面取代Autocad 做CAD二次开发的,在中国也很吃香. 但是使用C++难倒了许多人. 而Revit二次开发可 ...

  5. Revit二次开发_1.过滤器笔记篇

    Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...

  6. revit二次开发之教学视频

    一.背景 刚入门revit二次开发的小伙伴,很多是零基础的工程人员,为了解决这个问题,博主做了revit二次开发的一系列教学视频(包括C#基础与revit二次开发两个模块),来帮助大家更好的入门. 二 ...

  7. Revit二次开发——引用dynamo中的几何库

    前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...

  8. revit二次开发之程序调试

    欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111 一.背景 小伙伴们在rev ...

  9. revit二次开发之多线程的正确使用

    欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 一.背景 小伙伴们为了加快revit程序运行速度, 可能会考虑使用多线程,但是我们必须首先搞清楚一个问题 ...

最新文章

  1. PX4修改线程内存大小
  2. 【Flutter】开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )
  3. 【python3】爬取鼠绘汉化的海贼王漫画
  4. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
  5. 网络管理员所需要的知识结构和素质
  6. 一致性协议raft详解(四):raft在工程实践中的优化
  7. java线程夯住了怎么解决,不明白线程为什么卡住了? 求大神解救
  8. GRPC协议的相关原理
  9. 洛谷P2851 [USACO06DEC]最少的硬币The Fewest Coins(完全背包+多重背包)
  10. 移动端h5监听浏览器返回操作(目前在react项目中用到)
  11. windows 开启mysql日志记录_Windows下MySQL开启历史记录
  12. python random模块导入_Python学习笔记(二十)—模块的导入
  13. 图论算法及其matlab实现_BLDC有感FOC算法理论及其STM32软硬件实现
  14. python在input输入数字为何是str_Python基础笔记:input()输入与数据类型转换
  15. Unity3D 笔试题
  16. 正弦余弦算法的樽海鞘群算法
  17. 定义一个list对象数组 java_javascript定义一个list
  18. 【MATLAB航空航天工具箱】学习笔记--闰秒
  19. 关于打印机状态的获取
  20. 数字孪生的主要应用领域

热门文章

  1. cin 和 getline 混用中需要注意的问题
  2. AC日记——[HNOI2008]玩具装箱toy bzoj 1010
  3. JS识别不同浏览器信息
  4. unity3d iPhone文件目录介绍
  5. 剑指 offer set 26 不用加减乘除做加法
  6. Struts 2+Spring 3+Hibernate 3.3 在MyEclipse 10环境下的整合配置
  7. 抽象工厂模式-与-工厂方法模式区别
  8. SQL Server 下的 获取当月最后一天
  9. WPF 提供了以下关键帧动画类[msdn]
  10. 大家一起学面向对象设计模式系列Chapter 02 软件设计的基本原则