![](/img/trans.png)
[英]How can I compute a base 2 logarithm without using the built-in math functions in C#?
[英]How can I run built-in Revit commands from C#
我想知道是否有一種方法可以從 C# 程序內部將計算值提供給內置的 Revit 命令,然后可能(基於結果,例如這是否使元素對於已知的元素來說太短或太長特定梁的“最大跨度”)繼續我的 C# 程序並更改梁大小)。 我聽說您可以在執行 c# 外部命令后調用 Revit 內置命令,但之后無法返回到 c# 程序
再舉一個例子,我想選擇一個元素來修剪/延伸到,並讓代碼找出哪個“托梁”梁延伸到這個元素。 我的程序將進行擴展過濾(例如“參考級別”、“工作集”、“評論”或“標記”參數(等)),然后運行內置函數,提供要擴展到的元素,然后我的每一根梁。
我已經嘗試過互聯網搜索以及 Revit SDK 示例,但顯然沒有使用它(但有很多 csproj 需要查看)。
誰能確認您不能在 C# 程序和 Revit 內置命令之間來回切換?
也許從 SDK 示例“MoveLinear”開始。 它顯示了如何修改線性元素(包括梁)的端點。
示例代碼的主要部分是
Autodesk.Revit.DB.Line line;
//get start point via "get_EndPoint(0)"
Autodesk.Revit.DB.XYZ newStart = new XYZ(
lineLoc.Curve.GetEndPoint(0).X + 100,
lineLoc.Curve.GetEndPoint(0).Y,
lineLoc.Curve.GetEndPoint(0).Z);
//get end point via "get_EndPoint(1)"
Autodesk.Revit.DB.XYZ newEnd = new XYZ(
lineLoc.Curve.GetEndPoint(1).X,
lineLoc.Curve.GetEndPoint(1).Y + 100,
lineLoc.Curve.GetEndPoint(1).Z);
//get a new line and use it to move current element
//with property "Autodesk.Revit.DB.LocationCurve.Curve"
line = Line.CreateBound(newStart, newEnd);
lineLoc.Curve = line;
這將第一個點的 X 和第二個點的 Y 移動 100 英尺。
你可以試試:
RevitCommandId commandId = RevitCommandId.LookupPostableCommandId(PostableCommand.PlaceAComponent);
commandData.Application.PostCommand(commandId);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.