How can I make a mesh join another mesh if its touching a certain color?
basic principle: If black mesh is touching red mesh, join.
How can I make a mesh join another mesh if its touching a certain color?
basic principle: If black mesh is touching red mesh, join.
You might start with a simple command macro. For example:
_SelNone
_SelMesh
_Invert
_Hide _Enter
_SelColor _RGB 0 0 0
_Join
You would have to check for intersections and then check for color.
What are you trying to achieve?
Ok, this should be simple… but meshmeshintersection does not register two meshes that are touching as intersecting.
This script works if the meshes pass through each other only:
import rhinoscriptsyntax as rs
objects=rs.GetObjects("Select objects for touch calculation")
redLayer="red"
#divide objects into two lists
objectsRed = []
objectsNotRed = []
for obj in objects:
if rs.IsMesh(obj):
if rs.ObjectLayer(obj) == redLayer:
objectsRed.append(obj)
else:
objectsNotRed.append(obj)
print len(objectsRed)
print len(objectsNotRed)
#check if there are any objects in the lists
if len(objectsRed)>0:
if len(objectsNotRed)>0:
for objRed in objectsRed:
rs.UnselectAllObjects()
rs.SelectObject(objRed)
for objNotRed in objectsNotRed:
intersect= rs.MeshMeshIntersection(objRed,objNotRed)
print intersect
if intersect:
rs.SelectObject(objNotRed)
objectsNotRed.remove(objNotRed)
if len(rs.SelectedObjects())>1:
rs.Command("_Join")
joined=rs.SelectedObjects()
rs.ObjectLayer(joined[0], redLayer)
I didn’t annotate it or clean it up since it didn’t work properly.
In this case I think the right approach would now be to duplicate the mesh outlines and then check for intersections between those. The approach in the above script can be used for that as well, you just need to rewrite it with the proper commands of course 
Good luck!