tisdag 19 maj 2020

Från C3D till SHP Eller Hur många funktioner behöver man? Alla!

Visst ni att man kan exportera ledningar till SHP? Ja okej, det är ingen nyhet. Visste ni att ledningarnas Invert-nivå blir fel? Jag hoppas ni visste det, men jag visste det inte.

Tydligen är detta en känd bugg, det som händer är alltså att ledningarnas Centerline-elevation används som VG (Invert) för ledningarna vid SHP-export.

Men som tur är så finns det en väg runt det här, och varning, detta är en sån där lösning som jag gillar men som är en smula omständlig. Jag har försökt tänka ut en bättre lösning, men jag hittar inget. Om ni vet en bättre lösning så hoppas jag ni meddelar mig så får jag lära mig nåt nytt!

Och jag ska också erkänna att jag kom inte på detta själv, varken problemet eller lösningen. Problemet kom från en kund, lösningen kommer från en film som ni hittar här:

https://cadpilot.com/home/resources/video-training/civil-training-on-the-web/civil-3d-pipes/correct-civil-3d-pipes-export-to-esri-shp.html

Filmen är väldigt pedagogisk så det är enkel att följa. Jag har testat det och det fungerar alldeles utmärkt när jag testar med mina ledningar. Om ni hellre vill följa en nedskriven beskrivning så har jag den nedan.

I princip är gången så här:  Exportera till SDF > Importera SDF-filen > Räkna om ledningarnas VG till den riktiga VG > Exportera till SDF > Importera SDF > Exportera till SHP (Jag sa ju att det var en smula omständligt)

1. Använd ExportToSDF för att exportera ledningsnäten till en SDF-fil.

2. Använd MapWSpace för att öppna Task Pane. Använd Data > Connect to Data > Add SDF Connection och lägg till den exporterade SDF-filen > Add to Map för att se informationen din ritning. (Här kan du se att VG och Centerline är fel)

3. Markera Pipes-lagret i Task Pane och klicka på Table i Task Pane för att öppa Data Table.

4. Längst ner i dialogen hittar du Options > Create a Calculation. Sätt namn till Start_Invert_2 (eller annat lämpligt namn) och använd Property-knappen och Operator-knappen för att skapa ekvationen: StartInvert - (InsideDiameter / 2), klicka OK. Nu har du ytterligare en kolumn i Data Table som ska visa korrekt VG.

5. Klicka på Options igen, nu får du välja Manage Calculations och sedan klicka på New Calculation för att skapa kolumnen för End_Invert2, motsvarande ekvation men med EndInvert.

(5.5 nu är det ju läge att kolla att de nya VG-värdena är rätt mot ditt Civil 3D-original-pipe network)

6. I Task Pane högerklicka på Pipes-raden och välj Export Layer Data to SDF.

7. Använd MapImport och importera den senaste exporterade filen. I Import-dialogen klicka i Data-kolumnen > klicka i Create Object Data > Select Fields > klicka i de fälten som du vill importera (alltså inte det felaktiga VG-värdet, men se till att få med det korrekta, beräknade fältet)

8. Nu har du linjer i din fil med rätt VG-värden på, nu är det dags att exportera till SHP med MapExport, se till på Data-fliken välja Attributen som ska med.

Nu har du en SHP-fil med rätt värden!

Medan jag skrev det här så insåg jag att ett alternativ till denna, minst sagt omständliga metod är att flytta alla ledningar nedåt med halva diametern och sedan exportera ledningarna till SDF och sedan till SHP - men då gäller det komma ihåg att flytta tillbaka ledningarna när du är klar!