[英]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.