SketchUp: dow to make a hole in a complex component? - sketchup

I have a big cube made up of many smaller cubes. Theoretically, all surfaces should be paralei/perpendicular, but maybe I didn't alligh something (I can be sure). Also, each layer of my big cube is shifted with respect to the previous one by half of the length of side of the smaller cube. So the odd and the even layers are aligned, but an odd layer isn't alligned to an even layer.
I'd like to make s hole trougout the cube, The hole should intersect surfaces of the smaller cubes.
I've found numerous examples of how to make a hole in one component (using the push/pull tool): 1, 2, 3. However, I haven't found any information on how to deal with such a complex component . How can I make a hole throughout my cube?

The idea of creating a hole is to make a figure in form of the hole (for example, a long cylinder or parallelogram) and use it to create the hole.
After creating the figure, compose it to group (let's name it "hole" group) and move it into place of the hole. Make this group as subgroup of the target group. Then use intersect tool: select "hole" group and call "Intersect Faces / With Context" in context menu. After that it is need to delete unneeded parts in the target group.
Step by step solution:
Create a figure of the hole form, group it and give "hole" name.
Move "hole" into the place of the required hole.
Arrange "hole" as subgroup of the target group.
Intersect "hole" group with Context (i.e. parent group that is our target).
Remove unneeded parts in the target group.
The issue is that every subgroup should be edited separately, and to remove unneeded parts it is need to arrange "hole" into this subgroup and do intersection again.
To create inner surface of the hole we can use copy of the "hole" group as matter. Make copy, paste it in place, rename to "surface", arrange it into target group (if any). Then open "surface" group for edit, select all, call "Intersect Faces / With Model" in context menu. Note that intersection will be done with visible parts of the model only. After that delete unneeded parts in "surface" and optionally explode "surface" group. Use layers and hide/unhide tool to temporary hide interfering parts of the model.

Related

Polygon comparison between layers

I'm trying to compare specific polygons between layers (different years), to see if there has been any change to the area. Eg[2021 & 2019]2019 & 2021 In this example (from left to right), A would decrease by the amount that is outside of the layer, as well as the amount that B is now taking instead. C would also increase in area.
The difference, symmetrical difference, union, and intersection tools all find areas outside the total bounding box of the layer, but cannot find changes to polygons within the layer.
My desired output is a change (either % or absolute) in area from each layer to a master layer (the latest year).
(Some polygons get split and/or renamed, however I suspect this is a small enough cohort that it can be addressed manually.)
Edit: Currently trying "Detect Dataset Changes", but the polygons don't exactly 100% overlap, the 0.00000001% changes in the border mess it up and mark every polygon as changed. Posted as new question: Is there a tolerance setting I can use with "detect dataset changes" tool?

MariaDB spatial query to determine proportion of overlap

Background: I have two tables containing geometries (polygons and multipolygons). One table contains large polygons that touch but do not overlap (they are actually administrative boundaries). The other contains smaller polygons (in this case, they are parcels of land).
In most cases, each smaller polygon from the second table will be wholly contained within one of the larger polygons from the first table. This is simple enough to determine with spatial queries (ST_WITHIN). Some, however, will overlap two (or, theoretically, more) admin area polygons.
The question is, for those smaller polygons which overlap two large ones, how can I tell which it is most in?
This image illustrates the situation. Land parcel A is wholly within Leftshire, and B is wholly within Rightshire. This is a simple ST_WITHIN spatial query. I can determine that C overlaps both Leftshire and Rightshire as ST_WITHIN will be false but ST_OVERLAP will be true for both of them. But how can I determine that C is more in Leftshire than it is in Rightshire?
For reference, I am using MariaDB 5.5.64. If the problem is more easily solved using a different version (or even using a different DB), that would be an acceptable fallback, but I would ideally like to solve it using the tools I have to hand if possible.
[Edit: One simple solution would be to check which larger area the centroid of the smaller area falls into. This would work perfectly for rectangles, as in the example. However, it will not be reliable where the shapes are more complex, and I need this to work even for complex multipolygons as neither administrative areas nor land parcels are reliably simple in real life!]

Can I force Google Maps to draw polygons with overlapping paths as a union rather than intersection?

I'm working on a custom Google Map where I need to have place marks made up of several polygons. When I was using a KML file, the polygons would union together, however I had to abandon KML due to the need to present the infowindow programmatically from other items on the page.
Now that I'm drawing polygons directly (new google.maps.Polygon) I find that sometimes the items are joined via union and somethings via intersect. This appears to be related to how much overlap there is.
My polygons are building shapes with their corresponding labels so I've wanted to keep the two as separate paths if possible (though this isn't necessary).
Is it possible I'm missing a setting that tells the engine how to join the paths? PolygonOptions shows nothing, but perhaps there's a hidden feature to do this.
If you have multiple paths in a polygon, the regions will subtract if the winding direction is opposite (the relative order of coordinates i.e clockwise or counter-clockwise).
Some examples:
http://www.geocodezip.com/v3_polygon_example_donut.html
http://www.geocodezip.com/v3_polygon_example_donutA.html
http://www.geocodezip.com/v3_polygon_example_donutB.html
http://www.geocodezip.com/v3_polygon_example_donutC.html
similar question

PlayN: GroupLayer.add( layer) seems to ignore layer's depth attribute

Suppose I have 4 layer, A,B,C,D with layer.depth() of 1, 4, 2, 3.
when I add the those layer to parent, by using groupLayer.add(layer), the index (ala, depth,) of them added seems to ignore the 'depth()' attribute and the result is according only to the order when I add them.
Not sure if it's a implementation bug or I have the wrong usage semantic.
I'm not sure this is your problem but it's definitely mine right now.
I'm pretty certain layer depth only obeys the depth value within a group.
If you nest groups (like for parts of a character), I think the layer(s) in higher level groups will always be drawn above the layer(s) in lower level groups.
I'm running into this issue now when trying to create a puppet-like character with lots of image layers arranged in a group layer hierarchy of body parts.
The torso needs to be at the top of the transformation hierarchy but some layers need to be drawn on top of the torso as well. Currently, I don't think you can do this with a single group layer hierarchy with image layers as children.
GroupLayer.add(layer, depth) has been deprecated. Instead you should use Layer.setDepth.

Computing the area of a complex (self-intersecting) polygon

I'm making a program that selects an area within a canvas by clicking a sequence of points. The points clicked are linked by some lines this way: every new point is linked with the first and the last ones. I'm looking for an algorithm that computes the area of the resulting polygon.
Intersections are allowed, and here is the complexity, so the algorithm must manage this case by finding the polygon according to the ordered sequence of points clicked and calculating its area.
After many searches, the best I've found is this http://sigbjorn.vik.name/projects/Triangulation.pdf, but I would need something easier to implement in Processing.js.
First cut the line segments where they intersect. If the input set is small, you can simply check every pair. Otherwise use an R-Tree. Then compute a constrained (Delaunay) Triangulation. Then determine the inner triangles using rayshooting and sum up their areas.
hth

Resources