前言
用类 FilledRegion
创建区域,看看能否用模型加个“花园”。
内容
脚本的逻辑:
- 选中一系列构件
- 用这些构件的几何图形构件一个包围盒
- 按照比例扩大这个包围盒
- 两个包围盒几何求交,保留下半部分的包围盒
- 找到这个包围盒朝上的面
- 用这个面创建一个花园区域
效果:
输入
输入包括:
- 选择一些模型构件用于生成包围盒
- 区域
FilledRegion
要放置的视图 - 花园的比例 XY
选中构件的几何图形:
用这些构件的几何图形构件一个包围盒
按照比例扩大这个包围盒
到这一步的效果:
步骤:
- 用包围盒生成一个 Cuboid,得到这个 Cuboid 的中心,
Solid.Centroid
- 得到包围盒的最大最小的点,和第1步得到中心形成两个向量
- 用这两个向量做为方向,乘以一个比例,再加到这个中心上生成包围盒新的最大最小点
- 用新的最大最小点生成一个 Cuboid
两个包围盒几何求交,保留下半部分的包围盒
到这一步的效果:
步骤:
- 用两个 Cuboid 做布尔操作,找出不同的部分
- 用 Cuboid 的中心和 Y 轴做一个平面,并将第一步的结果切成两个部分
- 得到其中下半部分
找到这个包围盒朝上的面
到这一步的效果:
步骤:
- 得到上一步几何图形的所有的面
- 得到每一个面中心点的法向量
- 将法向量朝上的面过滤出来
- 得到这个面的所有边缘线
用这个面创建一个花园区域
到达这一步的效果:
节点图: