# Overlapping Group Check

**URL:** <https://forums.sketchup.com/t/overlapping-group-check/69112>\
**Category:** Ruby API\
**Created:** [May 24, 2018, 1:50pm UTC](https://forums.sketchup.com/t/overlapping-group-check/69112 "2018-05-24T13:50:08Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![kharr](https://avatars.discourse-cdn.com/v4/letter/k/76d3ee/32.png) [@kharr](https://forums.sketchup.com/u/kharr)\
**Post date:** [May 24, 2018, 1:50pm UTC](https://forums.sketchup.com/t/overlapping-group-check/69112/1 "2018-05-24T13:50:08Z")

</div>

Hello all.  
I’m fairly new to the extension development, and I’m running into a road block… I have a ruby script that trims a group A (solid) based on another group B (solid), which works great.

My question is, how can I limit or stop the trim from occurring if group A overlaps say a group C? I’m looking for an if statement check prior to trim.

Thanks for the help.

---

<div class="post-metadata">

**Author:** ![Aerilius](https://avatars.discourse-cdn.com/v4/letter/a/e19b73/32.png) [@Aerilius](https://forums.sketchup.com/u/Aerilius)\
**Post date:** [May 24, 2018, 2:16pm UTC](https://forums.sketchup.com/t/overlapping-group-check/69112/2 "2018-05-24T14:16:15Z")

</div>

The [solid operations](https://help.sketchup.com/en/article/3000100) do not give enough fine-grained access to use if statements. They are “atomic” operations with a clearly defined input and result.

Think of it like a [set operation](https://en.wikipedia.org/wiki/Complement_(set_theory)). If you want to protect those parts of `A` overlapping with `C` from being trimmed by `B`, they must not overlap with `B`.

So instead of:

```nohighlight
A \ B

```

you do:

```nohighlight
A \ (B \ C)

```

---

<div class="post-metadata">

**Author:** ![kharr](https://avatars.discourse-cdn.com/v4/letter/k/76d3ee/32.png) [@kharr](https://forums.sketchup.com/u/kharr)\
**Post date:** [May 25, 2018, 1:08pm UTC](https://forums.sketchup.com/t/overlapping-group-check/69112/3 "2018-05-25T13:08:32Z")

</div>

Thanks for the feedback.  
Is there a check statement that returns (true/false) that can be used to determine if two groups intersect?

---

<div class="post-metadata">

**Author:** ![Aerilius](https://avatars.discourse-cdn.com/v4/letter/a/e19b73/32.png) [@Aerilius](https://forums.sketchup.com/u/Aerilius)\
**Post date:** [May 25, 2018, 1:16pm UTC](https://forums.sketchup.com/t/overlapping-group-check/69112/4 "2018-05-25T13:16:04Z")

</div>

Determining intersection of arbitrary solid volumes is a non-trivial problem. Usually only bounding-boxes are checked. Only if bounding-boxes intersect, the geometry may intersect or not.

Something like:

```ruby
instance1.bounds.intersect(instance2.bounds).valid?

```

> **[Class: Geom::BoundingBox](https://ruby.sketchup.com/Geom/BoundingBox.html#intersect-instance_method)**
>
> Bounding boxes are three-dimensional boxes (eight corners), aligned with the axes, that surround entities within your model.

> **[Class: Geom::BoundingBox](https://ruby.sketchup.com/Geom/BoundingBox.html#valid%3F-instance_method)**
>
> Bounding boxes are three-dimensional boxes (eight corners), aligned with the axes, that surround entities within your model.

---

<div class="post-metadata">

**Author:** ![kharr](https://avatars.discourse-cdn.com/v4/letter/k/76d3ee/32.png) [@kharr](https://forums.sketchup.com/u/kharr)\
**Post date:** [May 25, 2018, 1:18pm UTC](https://forums.sketchup.com/t/overlapping-group-check/69112/5 "2018-05-25T13:18:42Z")

</div>

I was heading down that road… thanks again.  
I’ll let you know if I can get it figured out.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/sketchup/original/3X/f/2/f2a121500b085ed60806607a82720b092d800bb3.png) [@system](https://forums.sketchup.com/u/system)\
**Post date:** [August 25, 2018, 5:18am UTC](https://forums.sketchup.com/t/overlapping-group-check/69112/6 "2018-08-25T05:18:46Z")

</div>

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.
