Zoals wel vaker gebeurt, af en toe komt er een vraag voorbij hoe je kunt bepalen of een object volledig in een ander object valt. Een ideale vraag om eens een blog over te schrijven, dus vandaar deze.

Hoe vaak komt het voor dat je deze vraag stelt? En wil je dan weten of er objecten kruisen en/of binnen een vlak vallen? Of alleen maar of objecten binnen een ander vlak vallen? In welke setting?

Volgorde van verwerken

Normaal gesproken kijk je eerst of objecten je vlak snijden. Zo niet, dan kan het object er volledig binnen of buiten vallen. De tweede check is dus of een object er helemaal binnen valt. Maar je moet ook rekening houden met de derde dimensie: liggen de objecten en je vlak niet op hetzelfde vlak dan moet je ze eerst plat slaan voordat je verder kunt. Er zijn nodes om snijdingen te vinden in Dynamo:

Deze node werkt met Dynamo geometrie dus je zult de AutoCAD objecten eerst even moeten binnenhalen in de Dynamo Environment.

Objecten binnen een vlak

Stel dat je een tekening hebt met enkele omtreklijnen die een fase voorstellen. Deze zijn keurig geplaatst op afzonderlijke lagen. Maar de percelen binnen die vlakken zijn allemaal op dezelfde laag getekend. Hoe kun je ze dan splitsen?

Om te beginnen haal je de objecten over naar Dynamo. De omtreklijnen kun je bijvoorbeeld selecteren met een Select Objects node, en de percelen met All Objects on Layer node.

In Dynamo ziet dat er zo uit:

Als een object niet snijdt, en je wilt vervolgens weten of het binnen het vlak ligt, dan kun je wiskundig gezien een oneindige lijn trekken vanaf één vertex van het object, en dan kijken hoevaak het snijdt met de omtreklijn. Als het aantal keren oneven is, dan ligt het object in het vlak. Bij nul of een even aantal dan ligt het buiten het vlak.

In Dynamo is geen node te vinden die dat kan bepalen, maar er is wel een Containment Test node. Deze werkt alleen op een Polygon dus je moet de omtreklijn als PolyCurve eerst converteren. Ook heb je de startpunten van de percelen nodig voor deze test.

Omdat je in dit voorbeeld 43 percelen wilt checken in alledrie omtreklijnen, moet je wat spelen met de Level waarop je een vergelijking wilt doen. Zo hou je uiteindelijk 3 lijsten over met elk 43 waarden. Elke lijst bevat true waarden voor de startpunten die bij die omtreklijn horen. Deze lijsten kun je vervolgens weer gebruiken om als Mask te leggen over de Polylines lijst (niet de PolyCurves in Dynamo). Zo hou je uiteindelijk 3 lijsten over met de percelen die bij die omtreklijn horen, in de IN output port.

Laagnaam aanpassen

Nu kun je de laagnaam aanpassen van de percelen, door bijvoorbeeld de naam van de laag waar de afzonderlijke omtreklijn op staat, toe te voegen. Zoals in het begin aangegeven is, zijn de omtreklijnen wel keurig op aparte lagen geplaatst. Heb je dat niet, dan kun je zelf iets verzinnen met een volgnummer bijvoorbeeld, of een kleur aanpassing doen.

Omdat je 3 lijsten met een aantal percelen wilt aanpassen op 3 waarden in 1 lijst, moet je opnieuw wat puzzelen met Levels. Uiteindelijk worden alle percelen dan op de juiste laag gezet, binnen het bijbehorende vlak.

 

Wil je complexe of repetitieve taken automatiseren in Civil 3D? Dit boek helpt je alles te leren over de design automating tool Dynamo voor Civil 3D. Je wordt een professional in visueel programmeren, en binnenkort zijn al je saaie of complexe taken geautomatiseerd! This book is only available in English.