개체 다중선택 명령

function OnScriptMacro_원도형삽입()
{
HAction.GetDefault(“DrawObjCreatorEllipse”, HParameterSet.HShapeObject.HSet);
with (HParameterSet.HShapeObject)
{
ShapeDrawFillAttr.GradationAlpha = 0;
ShapeDrawFillAttr.Type = BrushType(“NullBrush”);
ShapeDrawFillAttr.WinBrushAlpha = 0;
ShapeDrawFillAttr.WinBrushFaceStyle = HatchStyle(“None”);
ShapeDrawFillAttr.WinBrushHatchColor = RGBColor(0, 0, 0);
ShapeDrawFillAttr.WinBrushFaceColor = RGBColor(255, 255, 255);
ShapeDrawFillAttr.WindowsBrush = 0;
ShapeDrawFillAttr.GradationBrush = 0;
ShapeDrawFillAttr.ImageBrush = 0;
ShapeDrawFillAttr.ImageAlpha = 0;
ShapeDrawLineAttr.Alpha = 64;
ShapeDrawLineAttr.OutLineStyle = HwpOutLineStyle(“Normal”);
ShapeDrawLineAttr.TailFill = 1;
ShapeDrawLineAttr.HeadFill = 1;
ShapeDrawLineAttr.TailSize = EndSize(“SmallSmall”);
ShapeDrawLineAttr.HeadSize = EndSize(“SmallSmall”);
ShapeDrawLineAttr.EndCap = 1;
ShapeDrawLineAttr.TailStyle = EndStyle(“Normal”);
ShapeDrawLineAttr.HeadStyle = EndStyle(“Normal”);
ShapeDrawLineAttr.Width = MiliToHwpUnit(2.0);
ShapeDrawLineAttr.Style = HwpLineType(“Solid”);
ShapeDrawLineAttr.Color = RGBColor(255, 255, 255);
ShapeDrawLayOut.CreateItemArray(“CreatePt”, 6);
ShapeDrawLayOut.CreatePt.Item(0) = 2834;
ShapeDrawLayOut.CreatePt.Item(1) = 2834;
ShapeDrawLayOut.CreatePt.Item(2) = 5669;
ShapeDrawLayOut.CreatePt.Item(3) = 2834;
ShapeDrawLayOut.CreatePt.Item(4) = 2834;
ShapeDrawLayOut.CreatePt.Item(5) = 0;
ShapeDrawLayOut.CreateNumPt = 3;
TreatAsChar = 0;
TextWrap = TextWrapType(“InFrontOfText”);
VertOffset = MiliToHwpUnit(148.5);
VertAlign = VAlign(“Top”);
VertRelTo = VertRel(“Paper”);
HorzOffset = MiliToHwpUnit(105.0);
HorzAlign = HAlign(“Justify”);
HorzRelTo = HorzRel(“Paper”);
HeightRelTo = HeightRel(“Absolute”);
Height = 5669;
WidthRelTo = WidthRel(“Absolute”);
Width = 5669;
NumberingType = Numbering(“Figure”);
ShapeDrawShadow.ShadowType = DrawShadowType(“None”);
ShapeDrawShadow.ShadowColor = RGBColor(178, 178, 178);
ShapeDrawShadow.ShadowOffsetX = MiliToHwpUnit(0.0);
ShapeDrawShadow.ShadowOffsetY = MiliToHwpUnit(0.0);
HSet.SetItem(“ShapeType”, 0);
TextFlow = TextFlowType(“BothSides”);
AdjustTextbox = 0;
ShapeCreationMode = 0;
ShapeCreationType = 2;
}
HAction.Execute(“DrawObjCreatorEllipse”, HParameterSet.HShapeObject.HSet);
HAction.GetDefault(“DrawObjCreatorEllipse”, HParameterSet.HShapeObject.HSet);
with (HParameterSet.HShapeObject)
{
ShapeDrawFillAttr.GradationAlpha = 0;
ShapeDrawFillAttr.Type = BrushType(“NullBrush”);
ShapeDrawFillAttr.WinBrushAlpha = 0;
ShapeDrawFillAttr.WinBrushFaceStyle = HatchStyle(“None”);
ShapeDrawFillAttr.WinBrushHatchColor = RGBColor(0, 0, 0);
ShapeDrawFillAttr.WinBrushFaceColor = RGBColor(255, 255, 255);
ShapeDrawFillAttr.WindowsBrush = 0;
ShapeDrawFillAttr.GradationBrush = 0;
ShapeDrawFillAttr.ImageBrush = 0;
ShapeDrawFillAttr.ImageAlpha = 0;
ShapeDrawLineAttr.Alpha = 0;
ShapeDrawLineAttr.OutLineStyle = HwpOutLineStyle(“Normal”);
ShapeDrawLineAttr.TailFill = 1;
ShapeDrawLineAttr.HeadFill = 1;
ShapeDrawLineAttr.TailSize = EndSize(“SmallSmall”);
ShapeDrawLineAttr.HeadSize = EndSize(“SmallSmall”);
ShapeDrawLineAttr.EndCap = 1;
ShapeDrawLineAttr.TailStyle = EndStyle(“Normal”);
ShapeDrawLineAttr.HeadStyle = EndStyle(“Normal”);
ShapeDrawLineAttr.Width = MiliToHwpUnit(1.0);
ShapeDrawLineAttr.Style = HwpLineType(“Solid”);
ShapeDrawLineAttr.Color = RGBColor(255, 0, 0);
ShapeDrawLayOut.CreateItemArray(“CreatePt”, 6);
ShapeDrawLayOut.CreatePt.Item(0) = 2834;
ShapeDrawLayOut.CreatePt.Item(1) = 2834;
ShapeDrawLayOut.CreatePt.Item(2) = 5669;
ShapeDrawLayOut.CreatePt.Item(3) = 2834;
ShapeDrawLayOut.CreatePt.Item(4) = 2834;
ShapeDrawLayOut.CreatePt.Item(5) = 0;
ShapeDrawLayOut.CreateNumPt = 3;
TreatAsChar = 0;
TextWrap = TextWrapType(“InFrontOfText”);
VertOffset = MiliToHwpUnit(148.5);
VertAlign = VAlign(“Top”);
VertRelTo = VertRel(“Paper”);
HorzOffset = MiliToHwpUnit(105.0);
HorzAlign = HAlign(“Justify”);
HorzRelTo = HorzRel(“Paper”);
HeightRelTo = HeightRel(“Absolute”);
Height = 5669;
WidthRelTo = WidthRel(“Absolute”);
Width = 5669;
NumberingType = Numbering(“Figure”);
ShapeDrawShadow.ShadowType = DrawShadowType(“None”);
ShapeDrawShadow.ShadowColor = RGBColor(178, 178, 178);
ShapeDrawShadow.ShadowOffsetX = MiliToHwpUnit(0.0);
ShapeDrawShadow.ShadowOffsetY = MiliToHwpUnit(0.0);
HSet.SetItem(“ShapeType”, 0);
TextFlow = TextFlowType(“BothSides”);
AdjustTextbox = 0;
ShapeCreationMode = 0;
ShapeCreationType = 2;
}
HAction.Execute(“DrawObjCreatorEllipse”, HParameterSet.HShapeObject.HSet);

}

위와 같은 매크로로 원도형(빨간원, 반투명흰색원) 2개를 삽입했습니다. 그리고 이 두 원을 선택하여 그룹으로 묶어야합니다.

(참고: 그룹묶기 명령-> HAction.Run(“ShapeObjGroup”); )

하지만 원 2개를 삽입하고 → 원 2개 선택 → 그룹묶기 이 루틴을 한번에 하려면

원 2개를 선택하도록 하는 명령을 하여야 하는데,

ai한테 받은 코드
// 첫 번째 개체 선택 HAction.Run(“SelectCtrlReverse”); // Shift 추가 선택 상태를 유도하는 액션 HAction.Run(“SelectObject”); HAction.Run(“SelectCtrlReverse”); // 이전 선택을 유지한 채 추가 선택 // 그룹화 HAction.Run(“ShapeObjGroup”);

이거를 포함해서 여러 다른 수많은 답변으로 적용해봐도
도형은 하나만 선택될 뿐 동시에 선택되는 명령은 아무리 찾아봐도 안나오고 되지가 않네요

혹시 스크립트로는 불가능한 건가요?

안녕하세요
올려주신 코드 참고해서 말씀하신 내용 반영해서 다시 만들었습니다.
아래 코드 참고하시고 혹시 추가 문의사항이 있으시면 다시 말씀부탁드립니다.
감사합니다.

function OnScriptMacro_원도형삽입()
{
    // [1] 삽입 전 그리기 개체(gso) 목록 스냅샷
    var before = _GetGsoInstIDs();

    // [2] 원 2개 삽입 (테두리색, 선굵기 mm, 투명도)
    _InsertEllipse(RGBColor(255, 255, 255), 2.0, 64);   // 반투명 흰색 원
    _InsertEllipse(RGBColor(255,   0,   0), 1.0,  0);   // 빨간 원

    // [3] 새로 생긴 개체의 InstID만 추출
    var added = _DiffInstIDs(before, _GetGsoInstIDs());
    if (added.length < 2) {
        return;
    }

    // [4] 두 개체 동시 선택 → 묶기
    //     구분자는 0x02, option 1 = 기존 선택 해제 후 선택
    SelectCtrl(added.join(String.fromCharCode(2)), 1);
    HAction.Run("ShapeObjGroup");
}

// 문서 내 모든 그리기 개체의 InstID 수집
function _GetGsoInstIDs()
{
    var ids = [];
    var ctrl = HeadCtrl;
    while (ctrl) {
        if (ctrl.CtrlID == "gso") {
            var id = ctrl.GetCtrlInstID();
            if (id != null && id != "") {
                ids[ids.length] = String(id);
            }
        }
        ctrl = ctrl.Next;
    }
    return ids;
}

// after - before (JScript에는 Array.indexOf가 없어 직접 비교)
function _DiffInstIDs(before, after)
{
    var added = [];
    for (var i = 0; i < after.length; i++) {
        var found = false;
        for (var j = 0; j < before.length; j++) {
            if (before[j] == after[i]) {
                found = true;
                break;
            }
        }
        if (!found) {
            added[added.length] = after[i];
        }
    }
    return added;
}

// 원 1개 삽입 (원본 매크로의 속성 그대로, 선 속성만 인자화)
function _InsertEllipse(nLineColor, dLineWidthMM, nLineAlpha)
{
    HAction.GetDefault("DrawObjCreatorEllipse", HParameterSet.HShapeObject.HSet);
    with (HParameterSet.HShapeObject)
    {
        ShapeDrawFillAttr.GradationAlpha = 0;
        ShapeDrawFillAttr.Type = BrushType("NullBrush");
        ShapeDrawFillAttr.WinBrushAlpha = 0;
        ShapeDrawFillAttr.WinBrushFaceStyle = HatchStyle("None");
        ShapeDrawFillAttr.WinBrushHatchColor = RGBColor(0, 0, 0);
        ShapeDrawFillAttr.WinBrushFaceColor = RGBColor(255, 255, 255);
        ShapeDrawFillAttr.WindowsBrush = 0;
        ShapeDrawFillAttr.GradationBrush = 0;
        ShapeDrawFillAttr.ImageBrush = 0;
        ShapeDrawFillAttr.ImageAlpha = 0;
        ShapeDrawLineAttr.Alpha = nLineAlpha;
        ShapeDrawLineAttr.OutLineStyle = HwpOutLineStyle("Normal");
        ShapeDrawLineAttr.TailFill = 1;
        ShapeDrawLineAttr.HeadFill = 1;
        ShapeDrawLineAttr.TailSize = EndSize("SmallSmall");
        ShapeDrawLineAttr.HeadSize = EndSize("SmallSmall");
        ShapeDrawLineAttr.EndCap = 1;
        ShapeDrawLineAttr.TailStyle = EndStyle("Normal");
        ShapeDrawLineAttr.HeadStyle = EndStyle("Normal");
        ShapeDrawLineAttr.Width = MiliToHwpUnit(dLineWidthMM);
        ShapeDrawLineAttr.Style = HwpLineType("Solid");
        ShapeDrawLineAttr.Color = nLineColor;
        ShapeDrawLayOut.CreateItemArray("CreatePt", 6);
        ShapeDrawLayOut.CreatePt.Item(0) = 2834;
        ShapeDrawLayOut.CreatePt.Item(1) = 2834;
        ShapeDrawLayOut.CreatePt.Item(2) = 5669;
        ShapeDrawLayOut.CreatePt.Item(3) = 2834;
        ShapeDrawLayOut.CreatePt.Item(4) = 2834;
        ShapeDrawLayOut.CreatePt.Item(5) = 0;
        ShapeDrawLayOut.CreateNumPt = 3;
        TreatAsChar = 0;
        TextWrap = TextWrapType("InFrontOfText");
        VertOffset = MiliToHwpUnit(148.5);
        VertAlign = VAlign("Top");
        VertRelTo = VertRel("Paper");
        HorzOffset = MiliToHwpUnit(105.0);
        HorzAlign = HAlign("Justify");
        HorzRelTo = HorzRel("Paper");
        HeightRelTo = HeightRel("Absolute");
        Height = 5669;
        WidthRelTo = WidthRel("Absolute");
        Width = 5669;
        NumberingType = Numbering("Figure");
        ShapeDrawShadow.ShadowType = DrawShadowType("None");
        ShapeDrawShadow.ShadowColor = RGBColor(178, 178, 178);
        ShapeDrawShadow.ShadowOffsetX = MiliToHwpUnit(0.0);
        ShapeDrawShadow.ShadowOffsetY = MiliToHwpUnit(0.0);
        HSet.SetItem("ShapeType", 0);
        TextFlow = TextFlowType("BothSides");
        AdjustTextbox = 0;
        ShapeCreationMode = 0;
        ShapeCreationType = 2;
    }
    HAction.Execute("DrawObjCreatorEllipse", HParameterSet.HShapeObject.HSet);
}