revit二开 项目基点(可见性设置、基点修改及获取)

2023-10-24 05:31

本文主要是介绍revit二开 项目基点(可见性设置、基点修改及获取),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目基点可见性设置

1.revit中显示项目基点

revit中项目基点可以通过:视图–可见性/图形–模型类别–场地找到项目基点,将复选框勾选,点击确定即可显示。
在这里插入图片描述
在这里插入图片描述

2.revit二开显示项目基点

项目基点存在于模型类别为场地中,所以要想显示项目基点,先得设置场地的可见性,然后再设置项目基点的。
使用View(视图)中的SetCategoryHidden方法进行设置,第一个参数为ElementId,第二设置可见性,false为显示。
目前测试2019、2020、2021revit版本可通过这种方式进行设置

public void displayProjectBasePoint()
{try{using (Transaction tran = new Transaction(m_doc, "DisplayBasePoint")){tran.Start();Categories cates = m_doc.Settings.Categories;//场地Category site = cates.get_Item(BuiltInCategory.OST_Site);m_doc.ActiveView.SetCategoryHidden(site.Id, false);//项目基点Category projectBasePoint = cates.get_Item(BuiltInCategory.OST_ProjectBasePoint);m_doc.ActiveView.SetCategoryHidden(projectBasePoint.Id, false);tran.Commit();}}catch (){}
}

项目基点修改

获取到项目基点的实例,然后遍历找到要修改的实例属性重新赋值。
在revit中安转Lookup插件查看实例属性。
在这里插入图片描述
SetValueString()传入的数据单位为mm。

public void modifyProjectBasePoint(string strNorthSouth, string strEastWest, string strElevation, string strAngle)
{try{using (Transaction tran = new Transaction(m_doc, "ModifyProjectBasePoint")){tran.Start();ElementCategoryFilter siteCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_ProjectBasePoint);FilteredElementCollector collector = new FilteredElementCollector(m_doc);IList<Element> siteElements = collector.WherePasses(siteCategoryfilter).ToElements();foreach (var ele in siteElements){//项目基点参数值设置Parameter paramNorthSouth = ele.get_Parameter(BuiltInParameter.BASEPOINT_NORTHSOUTH_PARAM);if (paramNorthSouth != null)paramNorthSouth.SetValueString(strEastWest);Parameter paramEastWest = ele.get_Parameter(BuiltInParameter.BASEPOINT_EASTWEST_PARAM);if (paramEastWest != null)paramEastWest.SetValueString(strNorthSouth);Parameter paramElevation = ele.get_Parameter(BuiltInParameter.BASEPOINT_ELEVATION_PARAM);if (paramElevation != null)paramElevation.SetValueString(strElevation);Parameter paramAngle = ele.get_Parameter(BuiltInParameter.BASEPOINT_ANGLETON_PARAM);if (paramAngle != null)paramAngle.SetValueString(strAngle);}tran.Commit();}}catch{}
}

项目基点获取

与修改项目基点值类似,先获取到项目基点的实例,遍历实例属性获取值,然后通过转换得到基点。
通过.AsDouble()获取到的值为英尺,根据需要自行转换。

public XYZ getProjectBasePoint()
{double dNorthSouth = 0;double dEastWest = 0;double dElevation = 0;double dAngle = 0;ElementCategoryFilter siteCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_ProjectBasePoint);FilteredElementCollector collector = new FilteredElementCollector(m_doc);IList<Element> siteElements = collector.WherePasses(siteCategoryfilter).ToElements();foreach (var ele in siteElements){Parameter paramNorthSouth = ele.get_Parameter(BuiltInParameter.BASEPOINT_NORTHSOUTH_PARAM);if (paramNorthSouth != null)dNorthSouth = paramNorthSouth.AsDouble();Parameter paramEastWest = ele.get_Parameter(BuiltInParameter.BASEPOINT_EASTWEST_PARAM);if (paramEastWest != null)dEastWest = paramEastWest.AsDouble();Parameter paramElevation = ele.get_Parameter(BuiltInParameter.BASEPOINT_ELEVATION_PARAM);if (paramElevation != null)dElevation = paramElevation.AsDouble();Parameter paramAngle = ele.get_Parameter(BuiltInParameter.BASEPOINT_ANGLETON_PARAM);if (paramAngle != null)dAngle = paramAngle.AsDouble();}XYZ projectBasePoint = new XYZ(dEastWest, dNorthSouth, dElevation);Transform translationTransform = Transform.CreateTranslation(projectBasePoint);Transform rotationTransform = Transform.CreateRotation(XYZ.BasisZ, dAngle);Transform finalTransform = translationTransform.Multiply(rotationTransform);return finalTransform.Origin;
}

这篇关于revit二开 项目基点(可见性设置、基点修改及获取)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273008

相关文章

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解