当前位置: 首页 > news >正文

企业网站备案资料样本杭州协会网站建设方案

企业网站备案资料样本,杭州协会网站建设方案,做网站需要花多少钱,wordpress修改目录在昨天的示例 PythonDRVT 从外部调用 Revit:批量创建楼板 中,我们批量创建了矩形的楼板,今天做一些扩展:创建稍复杂的外轮廓且带孔洞的楼板。 from typing import List import math # drvt_pybind 支持多会话、多文档&#xff0c…

在昨天的示例 Python+DRVT 从外部调用 Revit:批量创建楼板 中,我们批量创建了矩形的楼板,今天做一些扩展:创建稍复杂的外轮廓且带孔洞的楼板。

from typing import List
import math
# drvt_pybind 支持多会话、多文档,先从简单的单会话、单文档开始
# MyContext是在Python中用户自定义的单会话、单文档的上下文管理类
from packs.core import MyContext, m2feet, feet2m, isNone# 导入驱动 Revit 的核心模块
from drvt_pybind.Autodesk import Revit
from drvt_pybind.Autodesk.Revit import DB# 批量创建标高(没错,就是从“Python+DRVT 从外部调用 Revit:批量创建标高”示例中搬过来稍作扩展)
def createLevels(ctx: MyContext, levels: List[DB.Level]) -> None:"""本示例移值自 Revit 2025.3 SDK 中的相关示例"""session = ctx.sessiondoc = ctx.doctry:# 涉及到修改操作的,需要锁定并用事务包装ctx.lockAndStartTransaction("创建标高")floorPlanTypeId = DB.FilteredElementCollector.ctor(ctx.session, ctx.doc).OfClass(ctx.session.typeof(DB.ViewFamilyType)).FirstElementId()if isNone(floorPlanTypeId):raise AssertionError("尝试获取ViewFamilyType失败")for i in range(0,8):l = 9 + i * 3level = DB.Level.Create(session, doc, m2feet(l))name = f"测试标高 {l}"# 更新标高的名称level.setName(name)levels.append(level)# 创建与标高对应的 ViewPlan,这样 楼层平面 视图会出现在项目管理器中levelId = level.getId()vp = DB.ViewPlan.Create(session, doc, floorPlanTypeId, levelId)if vp is not None:vp.setName(name)# 提交事务并解锁,若没有错误则修改操作将会生效ctx.commitTransactionAndUnlock()except Exception as e:print(f"【异常】{e}")# 回滚事务并解锁ctx.rollbackTransactionAndUnlock()# 遍历文档中已有的标高然后再批量创建一些,返回按Elevation从低到高的List[DB.Level]
def getLevels(ctx : MyContext) -> List[DB.Level]:tmp : List[DB.Level] = []levelList = DB.FilteredElementCollector.ctor(ctx.session, ctx.doc).OfClass(ctx.session.typeof(DB.Level)).ToElements()for i in range(levelList.getCount()):l = DB.asLevel(levelList.getItem(i))if isNone(l):continuetmp.append(l)ret = sorted(tmp, key=lambda x:x.getElevation())createLevels(ctx, ret)return ret# 遍历FloorType,返回List[DB.FloorType]
def getFloorTypes(ctx : MyContext) -> List[DB.FloorType]:floorTypeList : List[DB.FloorType] = []listWt = DB.FilteredElementCollector.ctor(ctx.session, ctx.doc).OfClass(ctx.session.typeof(DB.FloorType)).ToElements()for i in range(listWt.getCount()):wt = DB.asFloorType(listWt.getItem(i))if isNone(wt):continuefloorTypeList.append(wt)return floorTypeList# 构造XYZ对象(调用处查看x,y坐标时稍直观点)
def ctorXyz(session:Revit.Session, x_m:float, y_m:float, z_feet:float) -> DB.XYZ:return DB.XYZ.ctor(session, m2feet(x_m), m2feet(y_m), z_feet)# 创建带孔洞的轮廓
def createListCurveLoop(ctx: MyContext, ele: float) -> DB.ListCurveLoop:session = ctx.session# 创建外Loopp0 = ctorXyz(session, 0, 2, ele)p1 = ctorXyz(session, 0.6, 0.6, ele)p2 = ctorXyz(session, 2, 0, ele)p3 = ctorXyz(session, 13, 0, ele)p4 = ctorXyz(session, 15, -2, ele)p5 = ctorXyz(session, 15, 2, ele)p6 = ctorXyz(session, 15, 10, ele)p7 = ctorXyz(session, 0, 10, ele)extCurves = DB.ListCurve.ctor(session)extCurves.Add(DB.Arc.Create(session, p0, p2, p1))extCurves.Add(DB.Line.CreateBound(session, p2, p3))extCurves.Add(DB.Arc.Create(session, p3, p5, p4))extCurves.Add(DB.Line.CreateBound(session, p5, p6))extCurves.Add(DB.Line.CreateBound(session, p6, p7))extCurves.Add(DB.Line.CreateBound(session, p7, p0))extProfileLoop = DB.CurveLoop.Create(session, extCurves)# 创建内Loopp8  = ctorXyz(session, 3, 2, ele)p9  = ctorXyz(session, 6, 2, ele)p10 = ctorXyz(session, 6, 4, ele)p11 = ctorXyz(session, 3, 4, ele)innCurves = DB.ListCurve.ctor(session)innCurves.Add(DB.Line.CreateBound(session, p8, p9))innCurves.Add(DB.Line.CreateBound(session, p9, p10))innCurves.Add(DB.Line.CreateBound(session, p10, p11))innCurves.Add(DB.Line.CreateBound(session, p11, p8))innProfileLoop = DB.CurveLoop.Create(session, innCurves)# 创建轮廓定义listCurveLoop = DB.ListCurveLoop.ctor(session)# 添加外LooplistCurveLoop.Add(extProfileLoop)# 添加内LooplistCurveLoop.Add(innProfileLoop)return listCurveLoop# 批量创建楼板
def FloorCreation2(ctx: MyContext) -> None:"""本示例展示如何使用Python+DRVT,在外部让Revit批量创建墙"""if ctx.doc is not None:ctx.closeDoc(True)template = "建筑样板.rte"fileName = "FloorCreation2.rvt"err = ctx.createAndActiveDoc(template, fileName)if err != 0:raise AssertionError(f"创建项目文档失败: 错误码 {err}")session = ctx.sessiondoc = ctx.doc# 取所有标高,缺省是两个levels = getLevels(ctx)try:# 取所有FloorTypefloorTypeList = getFloorTypes(ctx)# 涉及到修改操作的,需要锁定并用事务包装ctx.lockAndStartTransaction("批量创建板")for i in range(len(levels)):locLev = levels[i]# 选择一个FloorTypefloorType = floorTypeList[i % len(floorTypeList)]# 定义板的轮廓线listCurveLoop = createListCurveLoop(ctx, locLev.getElevation())# 创建板floor = DB.Floor.Create(session, doc, listCurveLoop, floorType.getId(), locLev.getId())# 取“结构”参数p = floor.getParameter(DB.BuiltInParameter.FLOOR_PARAM_IS_STRUCTURAL)# 更新其值为“1”p.Set(1)print(f"在 {locLev.getName()} 创建了 {floorType.getName()} 楼板(ID:{floor.getId().getIntegerValue()})")# 提交事务并解锁,若没有错误则修改操作将会生效ctx.commitTransactionAndUnlock()except Exception as e:print(f"【异常】{e}")# 回滚事务并解锁ctx.rollbackTransactionAndUnlock()# 保存文档并关闭ctx.closeDoc(True)# 下面这段代码,看过“创建新项目”示例的会很熟悉,就是照搬过来的
# 创建新的上下文(可以按需创建多个,意味着能直接管理多个 Revit 会话)
ctx = MyContext("在这里指定会话名称")
# 初始化会话(启动 Revit 进程实例)
ctx.initSession()# 调用FloorCreation
FloorCreation(ctx)# 结束会话(Revit 进程实例将退出)
ctx.dispose()

又是一个完整的自动化脚本,上面的代码做了什么?

1、创建Revit会话,启动Revit进程(可见、可交互,与手工启动的无任何差异)

2、批量创建带孔洞的楼板

3、结束会话,退出Revit进程

其中“2、批量创建带孔洞的楼板”做了以下工作:

        1)以“建筑样板.rte”为样板,创建项目 “FloorCreation2.rvt” 并作为当前活动文档(可见、可交互)

        2)获取该文档中所有标高(缺省仅2个),并批量创建多个,按Elevation排序

        3)获取该文档中所有FloorType

        4)在每一个标高上

                a)按次序选择一FloorType

                b)在当前标高的高度上创建一个稍复杂的带孔洞的轮廓

                c)基于a)选择的FloorType + b)中创建的轮廓在当前标高上创建一个楼板

                d)更新楼板对象的“结构”参数值为True(选中楼板在其“属性”中可见“结构”参数打勾)

        保存项目文件并关闭

带孔洞轮廓:

运行结果(三维视图):

控制台输出:

全自动完成全程无需手工操作:启动Revit => 创建项目 => 批量创建 => 保存项目文档 => 退出Revit 。

Python+DRVT,轻松跨越了应用边界与技术壁垒,实现对Revit插件核心能力的高效驾驭。

随着展示出来的能力越来越多,并且始终保持一贯简洁的同时又能专注于业务逻辑+双向访问。那么,对于充分挖掘Revit的价值、构建自动化生产流水线、将Revit深度集成到自己的系统……会不会有新的想法?创意有没有闪现?


相关文章

Python+DRVT 从外部调用 Revit:从外部启动 Revit-CSDN博客

Python+DRVT 从外部调用 Revit:打开项目文件-CSDN博客

Python+DRVT 从外部调用 Revit:获取项目信息-CSDN博客

Python+DRVT 从外部调用 Revit:更新项目信息-CSDN博客

Python+DRVT 从外部调用 Revit:第一个完整示例-CSDN博客

Python+DRVT 从外部调用 Revit:创建新项目-CSDN博客

Python+DRVT 从外部调用 Revit:创建族文档-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建轴网-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建标高-CSDN博客

Python+DRVT 从外部调用 Revit:创建风管系统加劲肋-CSDN博客

Python+DRVT 从外部调用 Revit:创建剖面-CSDN博客

Python+DRVT 从外部调用 Revit:创建桁架族-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建墙-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建门-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建门和窗-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建梁-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建梁(2)-CSDN博客

Python+DRVT 从外部调用 Revit:批量创建楼板-CSDN博客

深度嵌入数字化工作流:DRVT 的思考与实践-CSDN博客

从插件化走向系统集成——Revit-CSDN博客

Revit变身智能组件,BIM未来可期-CSDN博客

#SystemIntegration #Revit #RevitAPI #Python #Automation #DesignAutomation #BIM #Interop #AEC #DigitalTwin #Workflow

http://www.dtcms.com/a/616799.html

相关文章:

  • 做网站界面一般用什么来做网站备案各种问题汇总
  • 竹山县住房和城乡建设局网站电子商务网站规划与建设
  • 网站标题算关键词优化吗chatgpt 在线
  • 做企业福利网站起名wordpress 首页 404
  • 做网站编程序在线设计平台怎么运营
  • 泉州英文网站建设wordpress 同步 博客园
  • 网站建设中服务器搭建方式网站系统的软件和硬件接口
  • 网站关键词怎么修改做网站编辑好还是期刊编辑好
  • 查询优惠券的网站如何做微信编辑器做网站
  • 建设 银行网网站浙江响应式网站建设
  • 企业培训网站wordpress 手机端打开速度慢
  • 国外被动收入网站做的好的帮卖货平台
  • 顺德公司网站制作大连建设工程信息网档案下载
  • 中国平面设计和网站建设WordPress连接微博
  • 广州公司建站网站开发建设合同
  • 网站反链暴增怎么回事网站开发用框架开发的优缺点
  • 手机建个人网站怎么建设一个网站赚钱
  • 企业网站首页设计求个没封的w站2021你懂
  • 电子商城网站开发文档机械设计最好的三维软件
  • 移动网站开发教程做网站一定要备案吗
  • 1280的界面网站做多宽太原手手工网站建设公司
  • 一元购网站的建设你做的网站可视区域多少钱
  • 网站备案太慢网站设计用什么软件实现
  • 网站的背景图怎么做的.加强网站安全建设
  • 网站开发工程师应聘书700字舆情报告分析案例
  • 微信公众号开发网站开发站长统计app软件大全
  • windows优化大师官方免费上海市网站seo公司
  • 制作网站建设拓扑图软件2023年招标公告
  • 网站30g流量软件开发培训班排名前十名
  • 常见电子商务网站基本模式义乌免费做网站