02、Dynamo Python创建墙

学习 Dynamo,如果你把它当成是爱好,学起来定然日进千里。当你能把爱好转化成生产力,那么,你在工作上,也能事半功倍。

既然是从头学起,那么我们写代码,可以先找一些 Dynamo 中已经有了的节点,因为这些节点也是通过 Revit API 实现的,所以我们也可以对应的查看 Revit API 手册,来学习如何使用 API。

这次就从生成墙入手,首先我们打开 API 手册,搜索 Wall 的方法,如下图:

如图,我们可以看到,前面有个 S 标志的,就是创建类的方法,我们先选一种生成墙的方法,例如:

Wall.Create Method (Document, IList(Curve), ElementId, ElementId, Boolean),因为这个和 Dynamo 中生成墙的节点差不多,只差一个顶标高,这个我们后面再解决。

语法如下:

这里 API 需要输入的分别是:当前文档,曲线列表,墙类型 ID, 楼层 ID 和是否为结构。

翻到 API 最底部,我们看到创建墙的上一级是 Wall Class

所以创建墙的语法为:Wall.Create(document, geomline, baseLevel.Id, boolean)

于是我们可以简单尝试编写代码:(这里我们先不管引用的事,可以参考 K 神知乎上的万能模板,把主要的引用都添加进来,避免不必要的错误发生)

__author__ = "九哥BIMer"

import clr
#导入Revit模块
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
#导入 Document and transactions模块
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
#导入 Revit API 
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
#获取当前文档
doc = DocumentManager.Instance.CurrentDBDocument

#Dynamo 输入
baseLevel = UnwrapElement(IN[0])
topLevel = UnwrapElement(IN[1])
wallType = UnwrapElement(IN[2])
#创建点 
pt1 = XYZ(0, 0, 0)
pt2 = XYZ(10, 0, 0)
TransactionManager.Instance.EnsureInTransaction(doc)
#创建直线
line = Line.CreateBound(pt1, pt2)
#通过API创建墙
wall = Wall.Create(doc, line, wallType.Id, baseLevel.Id, False)
#完成任务
TransactionManager.Instance.TransactionTaskDone()

OUT = wall

但是,我们创建的墙,和 Dynamo 节点还有点不一样,并没有顶部的标高,这里我们同样可以通过 Revit API 来获取墙的内置参数,然后设置相应参数即可,如下:

代码如下:

#获取顶部标高内建参数
#墙顶部标高参数为:WALL_HEIGHT_TYPE
topConstraint = wall.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE)
#设置顶部标高
topConstraint.Set(topLevel.Id)

这样,我们就在项目中生成了墙,不同版本 Revit API 可能不太一样,需要相应的调整,我这里就不在赘述了。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九哥BIMer

予人玫瑰,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值