日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”

發(fā)布時(shí)間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素” 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用ElementTransformUtils.MoveElement()移動(dòng)元素,改變元素的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();

????????
//選擇一個(gè)管件,可以轉(zhuǎn)化為FamilyInstance
????????Reference?refelem?=?selection.PickObject(ObjectType.Element,?"選擇一個(gè)管件");
????????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

總結(jié)

以上是生活随笔為你收集整理的Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。