yucad3d

Block + inserts

Define a block from entities, then place single and rectangular-array references (CadAddInsBlock / CadAddInsBlockM).

// 6 — Create Block + inserts (CreBlock.htm)
static void samp_creblock() {
    samp_clear();
    int e[3];
    e[0] = CadAddLine(g_hDwg, 0,0,0, 0,1,0);        CadEntityPutColor(e[0], CAD_COLOR_RED);
    e[1] = CadAddLine(g_hDwg, -0.866,-0.5,0, 0,0,0); CadEntityPutColor(e[1], CAD_COLOR_GREEN);
    e[2] = CadAddLine(g_hDwg, 0.866,-0.5,0, 0,0,0);  CadEntityPutColor(e[2], CAD_COLOR_BLUE);
    int hBlock = CadAddBlock(g_hDwg, "3line", 0,0,0);
    if (hBlock) {
        CadBlockAddEntity(hBlock, e[0]); CadBlockAddEntity(hBlock, e[1]); CadBlockAddEntity(hBlock, e[2]);
        int id = CadBlockGetID(hBlock);
        CadAddInsBlock(g_hDwg, id, 0,0,0, 1.0, 0);
        CadAddInsBlockM(g_hDwg, id, 3,0,0, 1.0, 0, 8,3, 1.732, 3.0);
        CadAddInsBlockM(g_hDwg, id, 3.866,1.5,0, 1.0, 0, 8,3, 1.732, 3.0);
        CadUpdate(g_hDwg);
    }
    samp_zoom_ext();
    set_status(L"Sample 6: Block + inserts — compare to creblock.gif");
}
    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 SampleCreBlock()
    {
        SampleClear();
        int[] e = new int[3];
        e[0] = YuCadApi.CadAddLine(_hDwg, 0,0,0, 0,1,0);        YuCadApi.CadEntityPutColor(e[0], YuCadApi.CAD_COLOR_RED);
        e[1] = YuCadApi.CadAddLine(_hDwg, -0.866,-0.5,0, 0,0,0); YuCadApi.CadEntityPutColor(e[1], YuCadApi.CAD_COLOR_GREEN);
        e[2] = YuCadApi.CadAddLine(_hDwg, 0.866,-0.5,0, 0,0,0);  YuCadApi.CadEntityPutColor(e[2], YuCadApi.CAD_COLOR_BLUE);
        int hBlock = YuCadApi.CadAddBlock(_hDwg, "3line", 0,0,0);
        if (hBlock != 0)
        {
            YuCadApi.CadBlockAddEntity(hBlock, e[0]); YuCadApi.CadBlockAddEntity(hBlock, e[1]); YuCadApi.CadBlockAddEntity(hBlock, e[2]);
            int id = YuCadApi.CadBlockGetID(hBlock);
            YuCadApi.CadAddInsBlock(_hDwg, id, 0,0,0, 1.0, 0);
            YuCadApi.CadAddInsBlockM(_hDwg, id, 3,0,0, 1.0, 0, 8,3, 1.732, 3.0);
            YuCadApi.CadAddInsBlockM(_hDwg, id, 3.866,1.5,0, 1.0, 0, 8,3, 1.732, 3.0);
            YuCadApi.CadUpdate(_hDwg);
        }
        SampleZoomExt();
        SetStatus("Sample 6: Block + inserts — compare to creblock.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.