Road profile (vertical curves)
PVIs joined by grades with symmetric parabolic curves; CadRProfGetY returns tangent vs curve elevations.
// Vertical road profile: PVIs joined by grades with parabolic curves. static void feat_roadprof() { samp_clear(); int pr = CadAddRProf(g_hDwg); if (!pr) { set_status(L"CadAddRProf failed"); return; } CadRProfAddVer(pr, 0, 50); CadRProfAddVer(pr, 150, 80); CadRProfAddVer(pr, 300, 60); CadRProfAddVer(pr, 450, 95); CadRProfPutCurveLen(pr, 1, 60); // parabola through PVI 1 CadRProfPutCurveLen(pr, 2, 80); // ... and PVI 2 CadRProfPutScale(pr, 1.0, 2.0); // 2x vertical exaggeration CadRProfUpdate(pr); double yo = 0, yn = 0; CadRProfGetY(pr, 200, &yo, &yn); CadUpdate(g_hDwg); samp_zoom_ext(); wchar_t s[160]; swprintf(s, 160, L"CadAddRProf: 4 PVIs, 2 vertical curves; at 200 m tangent=%.2f curve=%.2f", yo, yn); set_status(s); }
6: // Road profile begin CadPurge(FhDwg, CAD_CLEAR_ENTITIES); pr := CadAddRProf(FhDwg); if pr = 0 then begin StatusBar.SimpleText := 'CadAddRProf failed'; Exit; end; CadRProfAddVer(pr, 0, 50); CadRProfAddVer(pr, 150, 80); CadRProfAddVer(pr, 300, 60); CadRProfAddVer(pr, 450, 95); CadRProfPutCurveLen(pr, 1, 60); CadRProfPutCurveLen(pr, 2, 80); CadRProfPutScale(pr, 1.0, 2.0); CadRProfUpdate(pr); CadRProfGetY(pr, 200, @yo, @yn); CadUpdate(FhDwg); CadExecute(FhDwg, FCadHwnd, CAD_CMD_ZOOM_EXT); StatusBar.SimpleText := Format('CadAddRProf: 4 PVIs, 2 vertical curves; at 200 m tangent=%.2f curve=%.2f', [yo, yn]); end;
private void FeatRoadProf() { SampleClear(); var pr = YuCadApi.CadAddRProf(_hDwg); if (pr == 0) { SetStatus("CadAddRProf failed"); return; } YuCadApi.CadRProfAddVer(pr, 0, 50); YuCadApi.CadRProfAddVer(pr, 150, 80); YuCadApi.CadRProfAddVer(pr, 300, 60); YuCadApi.CadRProfAddVer(pr, 450, 95); YuCadApi.CadRProfPutCurveLen(pr, 1, 60); YuCadApi.CadRProfPutCurveLen(pr, 2, 80); YuCadApi.CadRProfPutScale(pr, 1.0, 2.0); YuCadApi.CadRProfUpdate(pr); YuCadApi.CadRProfGetY(pr, 200, out var yo, out var yn); YuCadApi.CadUpdate(_hDwg); SampleZoomExt(); SetStatus($"CadAddRProf: 4 PVIs, 2 vertical curves; at 200 m tangent={yo:F2} curve={yn:F2}"); }
This code is extracted verbatim from the shipped demo hosts (
examples/cpp, examples/delphi, examples/csharp) — run the matching menu item there to see it live.