tisdag 8 september 2015

Begränsa ytor! Eller Varför skapar Civil 3D så många trianglar?

Någon sa någon gång att en dag som man har lärt sig något nytt är en bra dag. Så om jag har lärt mig något nytt innan 9 på morgonen så måste det vara en riktigt bra dag!

En grundsten i att hantera ytor (Surfaces) i Civil 3D är att programmet vill triangulera så mycket den bara kan. Detta är oftast en bra inställning, när vi får in punkter så gör programmet en vild triangulering och sen får användaren gå in och peka ut var det inte ska vara någon triangulering.

Specialfallet av detta är när man får 3DFaces som underlag. 3DFaces ser väldigt mycket ut som en färdig triangulering, man vill oftast bara duplicera samma triangulering till en surface. Då blir det oftast problem när Civil 3D gör en egen triangulering, baserad på alla ändpunkterna av 3DFaces-trianglarna.

Det finns en inställning och en funktion som hjälper med detta.

Inställningen är Maintain edges from objects och du hittar den när du lägger in 3DFaces i ytan.

Den gör att Civil 3D skapar trianglar efter 3DFaces-trianglarna.

Det som är kvar då är de långa trianglarna  i ytterkanterna på Surfacen. Det finns några olika metoder för att begränsa triangellängden. Den enklaste metoden är att begränsa triangellängden. Det gör man i Surface Properties, på Definition-fliken, under Build-avdelningen. Denna begränsning slår på alla trianglar, så har man långa trianglar mitt i en yta så fungerar inte denna metod speciellt bra. Jag tycker denna metoden passar som en första, grov trimning av ytan.

Man kan gå in och ta bort triangel för triangel, det gör man med DeleteSurfaceLine (Surface-ribbonet > Edit). Det är den mest tidskrävande och mest finlirande av metoder. Jag rekommenderar det som en sista finputsning eller om det bara är några få trianglar som ska bort.

Metoden som jag föredrar är att lägga in en begränsningslinje på en yta. Det gör man med AddSurfaceBoundaries (Surface-ribbonet > Add Data > Boundaries). Först behöver man rita en linje som kommer att fungera som den nya yttersta linjen för ytan. Den linjen kan vara en platt 2D Polylinje utan någon nivå, men den behöver vara sluten.

Nu till det nya jag har lärt mig idag!

Just för 3DFaces är det lite unikt för man har i princip redan en yttre gräns, man vill oftast inte att ytan ska sträcka sig utanför de objekt man har. Då finns det ett kommando som heter LineWorkShrinkWrap som skapar en linje runt de objekt man väljer, vilket då blir en perfekt ny yttre gräns för ytan.

Inga kommentarer:

Skicka en kommentar