在revit api中查找基点的坐标
Posted
技术标签:
【中文标题】在revit api中查找基点的坐标【英文标题】:Finding the coordinates for basepoint in revit api 【发布时间】:2012-11-19 15:31:03 【问题描述】:我创建了一个插件来计算网格之间的交点。交点计算的坐标使用基点位置作为坐标的原点。我想将坐标转换为测量点位置。我尝试使用以下代码获取基点的坐标:
ElementCategoryFilter filter = new ElementCategoryFilter(BuiltInCategory.OST_ProjectBasePoint);
FilteredElementCollector collector = new FilteredElementCollector(doc);
IList<Element> elements = collector.WherePasses(filter).ToElements();
foreach (Element element in elements)
double x = element.get_Parameter(BuiltInParameter.BASEPOINT_EASTWEST_PARAM).AsDouble();
double y = element.get_Parameter(BuiltInParameter.BASEPOINT_NORTHSOUTH_PARAM).AsDouble();
double elevation = element.get_Parameter (BuiltInParameter.BASEPOINT_ELEVATION_PARAM).AsDouble();
我想使用基点坐标来调整我在交点计算中找到的坐标,以使用测量点作为原点。但我不知道如何使用基点的值来调整坐标。似乎基点中的值不是使用测量点作为原点,而是可能是内部坐标。或者我可能误解了基点中的值。有什么我可以尝试的指针吗?
【问题讨论】:
【参考方案1】:经过几天的工作,我终于找到了我的错误和问题的答案。对于与我有相同问题的任何人,这就是我将坐标转换为正确坐标的方式:
我从基点获取的值是距测量点的偏移量,但我的 错误是我是欧洲人:p 我从基点获得的值以英尺为单位,而我的项目以毫米为单位。所以我创建了一个转换函数来将我从 revit api 获得的所有值(在我的例子中:基点值和网格相交函数)转换为项目单位(毫米)。这是一篇关于 http://thebuildingcoder.typepad.com/blog/2011/12/unit-conversion-and-display-string-formatting.html
主题的精彩博文我要做的第二件事是使用基点偏移量变换坐标。但是基点坐标系可能有旋转。所以我不得不先旋转坐标
double x = (pos.X * Math.Cos(angle)) - (pos.Y * Math.Sin(angle));
double y = (pos.X * Math.Sin(angle)) + (pos.Y * Math.Cos(angle));
然后我可以变换坐标:
new XYZ(position.X + projectBasePoint.X, newPos.Y + projectBasePoint.Y, 0);
【讨论】:
以上是关于在revit api中查找基点的坐标的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Tensorflow 对象检测 API 中查找边界框坐标