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

相关文章

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依