×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

bool相减不能得到中空的物体

发布于 2014-10-5 0 点赞 6 评论 3912 浏览

过节又来问问题了,偶然要用到一个中空的球体,开始以为很简单,使用两个球布尔相减不就可以了
import rhinoscriptsyntax as rs
s1 = rs.AddSphere([0,0,0], 5)
s2 = rs.AddSphere([0,0,0], 10)
s2 = rs.BooleanDifference(s2, s1)
if(s2 == None):
    rs.MessageBox('ERR')
else:
    rs.MessageBox('OK')

显示是成功了,但是用剖面查看,球本身还是实心的,
又用box实验了一下,结果是一样的

import rhinoscriptsyntax as rs
L1 = 2000
W1 = 1000
H1 = 1000;
floor = 100
#Create out box
outer_corns = [
[0,0,0],[0, W1, 0],[L1, W1, 0],[L1, 0, 0],
[0, 0, H1],[0, W1, H1],[L1, W1, H1],[L1, 0, H1]
]
outbox = rs.AddBox(outer_corns);
rs.MoveObject(outbox, [-L1/2, -W1/2, -H1/2])
#Create inner box
L2 = L1 - 2*floor
W2 = W1 - 2*floor
H2 = H1 - 2*floor
inner_corns = [
[0,0,0],[0, W2, 0],[L2, W2, 0],[L2, 0, 0],
[0, 0, H2],[0, W2, H2],[L2, W2, H2],[L2, 0, H2]
]
innerbox = rs.AddBox(inner_corns);
rs.MoveObject(innerbox, [-L2/2, -W2/2, -H2/2])
#Get out box layer
outbox = rs.BooleanDifference(outbox, innerbox)
rs.MoveObject(outbox, [L1/2, W1/2, H1/2])

把H2 = H1 - 2*floor改为H2 = H1就可以切出一个边框,不知道为什么中空的就不行,请各位指教
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

手铅心 | 实习生 | 发表于 2014-10-5 20:37:11
....看的我头疼...
0 回复

举报

筑梦NARUTO | 设计师 | 发表于 2014-10-6 12:39:41
本帖最后由 筑梦NARUTO 于 2014-10-6 14:28 编辑

偏移不就行,你用的布尔你可以在犀牛里试试,会失败的,因为rhino的实体属于简陋的实体,和skp一样,所以判断实心的机制不包含 这类内部开孔的,所以会失败,但你的代码返回的是一个空列表,你那有写几乎不会出现Err 你可以这样改下import rhinoscriptsyntax as rss1 = rs.AddSphere([0,0,0], 5)
s2 = rs.AddSphere([0,0,0], 10)
s3 = rs.BooleanDifference(s2, s1)
if(len(s3) == 0):
    rs.MessageBox('ERR')
else:
    rs.MessageBox('OK')



QQ图片20141006124137.jpg
0 回复

举报

wwwtiger | 设计助理 | 发表于 2014-10-8 13:08:02
试了一下,S3不是空列表啊
boolDiff.png
0 回复

举报

wwwtiger | 设计助理 | 发表于 2014-10-8 13:13:00
offset是个办法,但是还是不明白bool相减为何有问题
简陋实体是个什么概念,我只知道SKETCHUP好像和3DMax等相似,是使用多边形逼近实现实体的,也就是RHINO中MESH
0 回复

举报

筑梦NARUTO · 发表于 2014-10-8 18:09 点评

就是犀牛的问题,只要在内部包了一个物体再布尔就会失败

筑梦NARUTO | 设计师 | 发表于 2014-10-8 18:09:30
wwwtiger 发表于 2014-10-8 13:13
offset是个办法,但是还是不明白bool相减为何有问题
简陋实体是个什么概念,我只知道SKETCHUP好像和3DMax等 ...

就是犀牛的问题,只要在内部包了一个物体再布尔就会失败
0 回复

举报

wwwtiger · 发表于 2014-10-9 11:46 点评

多谢你的帮助 有实现的方法就行了,RHINO已经很不错了,有些小问题也是正常

wwwtiger | 设计助理 | 发表于 2014-10-9 11:46:12
筑梦NARUTO 发表于 2014-10-8 18:09
就是犀牛的问题,只要在内部包了一个物体再布尔就会失败

多谢你的帮助
有实现的方法就行了,RHINO已经很不错了,有些小问题也是正常
0 回复

举报