NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 14307|回复: 2
打印 上一主题 下一主题

[在线求助] python编程如何获取一个不规则封闭solid内部的随机点?(附现有程序)

[复制链接]
跳转到指定楼层
1m
发表于 2016-9-21 10:29:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Argydit 于 2016-9-21 11:06 编辑

如题,如何获取一个不规则封闭solid内部的随机点?或者是思路也可以。想了很久很想出来…总感觉很绕。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
发表于 2016-9-21 12:59:01 | 只看该作者
本帖最后由 月之眼 于 2016-9-21 13:07 编辑

给你简单改了一下,快不少,你可以看看
  1. #coding=utf-8
  2. import rhinoscriptsyntax as rs
  3. import random
  4. import Rhino.Geometry as rg

  5. def ptRange(pt01,pt02):
  6.     xB = random.uniform(pt01[0],pt02[0])
  7.     yB = random.uniform(pt01[1],pt02[1])
  8.     zB = random.uniform(pt01[2],pt02[2])
  9.     return xB,yB,zB

  10. randomPtsNum = rs.GetInteger("输入生成的随机点数")
  11. brep = rs.GetObject("选择要生成随机点的多重曲面",rs.filter.polysurface)
  12. geo_brep = rs.coercebrep(brep)
  13. box = geo_brep.GetBoundingBox(True)

  14. random_pt = []

  15. while (len(random_pt)<= randomPtsNum):
  16.     pt = ptRange(box.Min,box.Max)
  17.     if rs.IsPointInSurface(brep,pt,True,3):
  18.         random_pt.append(pt)

  19. for pot in random_pt:
  20.     rs.AddPoint(pot)
复制代码

点评

嗯嗯 多谢。  详情 回复 发表于 2016-9-21 14:18

评分

参与人数 1强度 +3 照度 +10 收起 理由
skywoolf + 3 + 10 表示赞同!

查看全部评分

3m
 楼主| 发表于 2016-9-21 14:18:05 | 只看该作者
月之眼 发表于 2016-9-21 12:59
给你简单改了一下,快不少,你可以看看

嗯嗯 多谢。

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-22 11:49 , Processed in 0.072706 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表