Create Dimensions
Horizontal, vertical, aligned and 3-point angular dimensions over a polyline, using the CadAddDimPoint + CadAddDim flow.
// 4 — Create Dimension objects (CreDim.htm) static void samp_credim() { samp_clear(); double x1=10,y1=10,x2=70,y2=10,x3=70,y3=45; CadPutLwDisplay(g_hDwg, 1); CadSetCurLweight(g_hDwg, CAD_LWEIGHT_050); CadAddVertex(x1,y1,0); CadAddVertex(x2,y2,0); CadAddVertex(x3,y3,0); CadAddPolyline(g_hDwg, CAD_PLINE_LINEAR, 1); CadSetCurLweight(g_hDwg, CAD_LWEIGHT_BYLAYER); CadAddDimPoint(0,x1,y1,0); CadAddDimPoint(1,x2,y2,0); CadAddDimPoint(2,x2,y2-6,0); CadAddDim(g_hDwg, CAD_DIM_HOR); CadAddDimPoint(0,x2,y2,0); CadAddDimPoint(1,x3,y3,0); CadAddDimPoint(2,x2+6,y2,0); CadAddDim(g_hDwg, CAD_DIM_VER); CadAddDimPoint(0,x1,y1,0); CadAddDimPoint(1,x3,y3,0); CadAddDimPoint(2,x1,y1+8,0); CadAddDim(g_hDwg, CAD_DIM_ALIGNED); CadAddDimPoint(0,x2,y2,0); CadAddDimPoint(1,x3,y3,0); CadAddDimPoint(2,x1,y1,0); CadAddDimPoint(3,x1+(x2-x1)*0.8,y1,0); CadAddDim(g_hDwg, CAD_DIM_ANG3P); CadUpdate(g_hDwg); samp_zoom_ext(); set_status(L"Sample 4: Dimensions — compare to dimens.gif"); }
4: begin CadPurge(FhDwg, CAD_CLEAR_ENTITIES); x1:=10; y1:=10; x2:=70; y2:=10; x3:=70; y3:=45; CadPutLwDisplay(FhDwg, 1); CadSetCurLweight(FhDwg, CAD_LWEIGHT_050); CadAddVertex(x1,y1,0); CadAddVertex(x2,y2,0); CadAddVertex(x3,y3,0); CadAddPolyline(FhDwg, CAD_PLINE_LINEAR, 1); CadSetCurLweight(FhDwg, CAD_LWEIGHT_BYLAYER); CadAddDimPoint(0,x1,y1,0); CadAddDimPoint(1,x2,y2,0); CadAddDimPoint(2,x2,y2-6,0); CadAddDim(FhDwg, CAD_DIM_HOR); CadAddDimPoint(0,x2,y2,0); CadAddDimPoint(1,x3,y3,0); CadAddDimPoint(2,x2+6,y2,0); CadAddDim(FhDwg, CAD_DIM_VER); CadAddDimPoint(0,x1,y1,0); CadAddDimPoint(1,x3,y3,0); CadAddDimPoint(2,x1,y1+8,0); CadAddDim(FhDwg, CAD_DIM_ALIGNED); CadAddDimPoint(0,x2,y2,0); CadAddDimPoint(1,x3,y3,0); CadAddDimPoint(2,x1,y1,0); CadAddDimPoint(3,x1+(x2-x1)*0.8,y1,0); CadAddDim(FhDwg, CAD_DIM_ANG3P); CadUpdate(FhDwg); CadExecute(FhDwg, FCadHwnd, CAD_CMD_ZOOM_EXT); StatusBar.SimpleText := 'Sample 4: Dimensions — compare to dimens.gif'; end; 5: begin CadPurge(FhDwg, CAD_CLEAR_ENTITIES); lt := CadAddLinetype(FhDwg, PAnsiChar(AnsiString('Gas')), PAnsiChar(AnsiString('3,-1.7,[arial.yucf,T=GAS,F=1,S=1,R=0.0,X=-1.4,Y=-.5],-1.7,1,-1.1,[Ltype,T=OK,F=1,S=1.0,R=0.0,X=-0.9,Y=-.5],-1.1')), PAnsiChar(AnsiString('-- GAS --- OK --- GAS --'))); CadSetCurLinetype(FhDwg, lt); CadAddLine(FhDwg, 0,0,0, 31,0,0); lt := CadAddLinetype(FhDwg, PAnsiChar(AnsiString('Face2')), PAnsiChar(AnsiString('1.5,-1,[arial.yucf,U=263a,F=1,S=2.0,X=-1.4,Y=-0.7],-1,0.5,-1,[Ltype,U=263b,F=1,R=45,S=2.0,X=-0.55,Y=-1.5],-1')), PAnsiChar(AnsiString('--F-F---F-F---F-F--'))); CadSetCurLinetype(FhDwg, lt); CadAddLine(FhDwg, 0,3.5,0, 31,3.5,0); lt := CadAddLinetype(FhDwg, PAnsiChar(AnsiString('Notes')), PAnsiChar(AnsiString('1,-1,[arial.yucf,U=266b,S=1.0,X=-0.5,Y=-0.5],-1')), PAnsiChar(AnsiString('-- note --- note --- note --'))); CadSetCurLinetype(FhDwg, lt); CadAddLine(FhDwg, 0,7,0, 31,7,0); CadRegen(FhDwg); CadExecute(FhDwg, FCadHwnd, CAD_CMD_ZOOM_EXT); StatusBar.SimpleText := 'Sample 5: complex linetypes — compare to linetype.gif'; end; 6: begin CadPurge(FhDwg, CAD_CLEAR_ENTITIES); ee[0] := CadAddLine(FhDwg, 0,0,0, 0,1,0); CadEntityPutColor(ee[0], CAD_COLOR_RED); ee[1] := CadAddLine(FhDwg, -0.866,-0.5,0, 0,0,0); CadEntityPutColor(ee[1], CAD_COLOR_GREEN); ee[2] := CadAddLine(FhDwg, 0.866,-0.5,0, 0,0,0); CadEntityPutColor(ee[2], CAD_COLOR_BLUE); hBlock := CadAddBlock(FhDwg, PAnsiChar(AnsiString('3line')), 0,0,0); if hBlock <> 0 then begin CadBlockAddEntity(hBlock, ee[0]); CadBlockAddEntity(hBlock, ee[1]); CadBlockAddEntity(hBlock, ee[2]); id := CadBlockGetID(hBlock); CadAddInsBlock(FhDwg, id, 0,0,0, 1.0, 0); CadAddInsBlockM(FhDwg, id, 3,0,0, 1.0, 0, 8,3, 1.732, 3.0); CadAddInsBlockM(FhDwg, id, 3.866,1.5,0, 1.0, 0, 8,3, 1.732, 3.0); CadUpdate(FhDwg); end;
private void SampleCreDim() { SampleClear(); double x1=10,y1=10,x2=70,y2=10,x3=70,y3=45; YuCadApi.CadPutLwDisplay(_hDwg, 1); YuCadApi.CadSetCurLweight(_hDwg, YuCadApi.CAD_LWEIGHT_050); YuCadApi.CadAddVertex(x1,y1,0); YuCadApi.CadAddVertex(x2,y2,0); YuCadApi.CadAddVertex(x3,y3,0); YuCadApi.CadAddPolyline(_hDwg, YuCadApi.CAD_PLINE_LINEAR, 1); YuCadApi.CadSetCurLweight(_hDwg, YuCadApi.CAD_LWEIGHT_BYLAYER); YuCadApi.CadAddDimPoint(0,x1,y1,0); YuCadApi.CadAddDimPoint(1,x2,y2,0); YuCadApi.CadAddDimPoint(2,x2,y2-6,0); YuCadApi.CadAddDim(_hDwg, YuCadApi.CAD_DIM_HOR); YuCadApi.CadAddDimPoint(0,x2,y2,0); YuCadApi.CadAddDimPoint(1,x3,y3,0); YuCadApi.CadAddDimPoint(2,x2+6,y2,0); YuCadApi.CadAddDim(_hDwg, YuCadApi.CAD_DIM_VER); YuCadApi.CadAddDimPoint(0,x1,y1,0); YuCadApi.CadAddDimPoint(1,x3,y3,0); YuCadApi.CadAddDimPoint(2,x1,y1+8,0); YuCadApi.CadAddDim(_hDwg, YuCadApi.CAD_DIM_ALIGNED); YuCadApi.CadAddDimPoint(0,x2,y2,0); YuCadApi.CadAddDimPoint(1,x3,y3,0); YuCadApi.CadAddDimPoint(2,x1,y1,0); YuCadApi.CadAddDimPoint(3,x1+(x2-x1)*0.8,y1,0); YuCadApi.CadAddDim(_hDwg, YuCadApi.CAD_DIM_ANG3P); YuCadApi.CadUpdate(_hDwg); SampleZoomExt(); SetStatus("Sample 4: Dimensions — compare to dimens.gif"); }
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.