gpt4 book ai didi

ruby - 无法使用 Sketchup Ruby API 获取 Sketchup 模型的位置范围

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:56 25 4
gpt4 key购买 nike

我有一个地理定位的 Sketchup 3d 模型。我可以获得模型的地理位置,如下所示:-

latitude = Sketchup.active_model.attribute_dictionaries["GeoReference"]["Latitude"]

longitude = Sketchup.active_model.attribute_dictionaries["GeoReference"]["Longitude"]

现在我想在 3D 地球上渲染这个模型。所以我需要 3d 模型的位置边界。

基本上我需要模型在二维 map 上的边界框。

现在我正在从模型的角(8 个角)中提取相同的数据。

// This will return left-front-bottom corner.
lowerCorner = Sketchup.active_model.bounds.corner(0)
// This will return right-back-top corner.
upperCorner = Skectup.active_model.bounds.corner(6)

但它会根据模型返回以米、英寸为单位的简单几何点。

例如我上传了this sketchup 中的模型。以下分别是我通过对上述模型使用上述代码获得的 geo-locationlowerCornerupperCorner 的值。

geoLocation : 25.141407985864, 55.18563969191 //lat,long
lowerCorner : (-9483.01089", -6412.376053", -162.609524") // In inches
upperCorner : (-9483.01089", 6479.387909", 12882.651999") // In inches

所以我的第一个问题是我所做的是否正确?第二个问题是如果第一个问题,我如何以经纬度格式获取 lowerCorner 和 upperCorner 的值。

最佳答案

But it returns simple geometrical points in meters, inches depending upon the model.

Geom::BoundingBox.corner返回一个 Geom::Point3d。其中的 x、y 和 z 成员是 Length .这始终返回 SketchUp 的内部值,即英寸。

但是,当您使用 Length.to_s 时,它将使用当前模型的单位设置并将值格式化为该值。当您调用 Geom::Point3d.to_s 时,它将使用 Length.to_s。另一方面,如果您调用 Geom::Point3d.inspect,它将不带格式地打印内部单位(英寸)。

与其像那样直接利用模型的属性,我建议您使用地理定位的 API 方法:Sketchup::Model.georeferenced?

通过它的声音,您可能会找到 Sketchup::Model.point_to_latlong有用。

示例 - 我将 SketchUp 模型定位到 Trondheim, Norway 的城镇广场(地理位置:63°25′47″N 10°23′36″E):

model = Sketchup.active_model
bounds = model.bounds
# Get the base of the boundingbox. No need to get the top - as the
# result doesn't contain altiture information.
(0..3).each { |i|
pt = bounds.corner(i)
latlong = model.point_to_latlong(pt)
latitude = latlong.x.to_f
longitude = latlong.y.to_f
puts "#{pt.inspect} => #{longitude}, #{latitude}"
}

showing a localised su model getting world coordinates from model coordinates

关于ruby - 无法使用 Sketchup Ruby API 获取 Sketchup 模型的位置范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com