act.GetDefault(set) 위치 문의드립니다.

안녕하세요.
아래처럼 표셀에 음영을 넣는 코드인데
act.GetDefault(set) 부분이
1번코드 처럼 subset 전에 있어야 하나요?
2번코드 처럼 subset 다음에 있어야 하나요?
둘다 동일하게 실행은 되더군요.

공식 문서에 봐도 어디는 위에 어디는 아래에 사용하게 되어 있네요..

몇몇 다른 명령으로 테스트를 해봤는데
탭 설정은 2번 처럼 되어야만 작동을 하네요
그러면 서브셋 위에 있는게 정답일까요?

GPT로 물어보니 2번코드가 적절하다고 하네요.ㅎㅎ

	// 1번코드 ---------------------------------------------
	act = CreateAction("CellFill");
	set = act.CreateSet();

	subset = set.CreateItemSet("FillAttr", "DrawFillAttr");
	act.GetDefault(set); // 위치가 어디일까요?

	subset.SetItem("Type", 1);
	subset.SetItem("WinBrushFaceStyle", HatchStyle("None"));
	subset.SetItem("WinBrushHatchColor", RGBColor(0, 0, 0));
	subset.SetItem("WinBrushFaceColor", RGBColor(217, 217, 217));
	act.Execute(set);


	// 2번코드 ---------------------------------------------
	act = CreateAction("CellFill");
	set = act.CreateSet();

	act.GetDefault(set); // 위치가 어디일까요?
	subset = set.CreateItemSet("FillAttr", "DrawFillAttr");

	subset.SetItem("Type", 1);
	subset.SetItem("WinBrushFaceStyle", HatchStyle("None"));
	subset.SetItem("WinBrushHatchColor", RGBColor(0, 0, 0));
	subset.SetItem("WinBrushFaceColor", RGBColor(217, 217, 217));
	act.Execute(set);

안녕하세요 ^^

액션을 생성하고 액션에 해당하는 Set을 만들고 액션의 GetDefault를 하면 액션에 필요한 SetItem의 기본 값을 가져오게 됩니다.

CellFill 같은 경우는 현재 위치한 셀의 CellBorder Set의 정보를 가져올텐대요 아마도 FillAttr이 서브셋이 존재할수도 있습니다.

ItemExist(“FillAttr”)을 통해 셋이 있는경우 Item(“FillAttr”)을 통해 서브셋을 가져와 값을 설정해주면 될것같습니다.

GetDefault의 경우는 셋을 생성한다음에 바로 호출해준뒤 필요한 셋을 호출하는 구조로 설계되어있습니다. ^^
2번코드가 적절하다고 볼수있습니다 ~
감사합니다.

답변감사합니다.
추후로 여러가지를 테스트를 해보니
act.GetDefault(set) 이 서브셋 아래에 위치해야 작동하는 코드도 있네요.

예를들어 아래처럼 셀 크기를 조회 해보는 코드를 만들경우..

act.GetDefault(set); 가 서브셋 위에 위치할경우

function OnScriptMacro_test_1()
{
	act = CreateAction("TablePropertyDialog");
	set = act.CreateSet();

	act.GetDefault(set); //서브셋 위위치
	subset = set.CreateItemSet("ShapeTableCell", "Cell");

	celll_w = subset.Item("Width"); // 셀너비(hwpunit)
	cell_h = subset.Item("Height"); // 셀높이(hwpunit)
	act.Execute(set);

	XHwpMessageBox.String = "셀너비="+celll_w+"\n셀높이="+cell_h;
	XHwpMessageBox.Flag = 0;
	XHwpMessageBox.DoModal();
}

값을 못찾음


act.GetDefault(set); 가 서브셋 아래에 위치할경우

function OnScriptMacro_test_2()
{
	act = CreateAction("TablePropertyDialog");
	set = act.CreateSet();
	
	subset = set.CreateItemSet("ShapeTableCell", "Cell");
	act.GetDefault(set); //서브셋 아래위치

	celll_w = subset.Item("Width"); // 셀너비(hwpunit)
	cell_h = subset.Item("Height"); // 셀높이(hwpunit)
	act.Execute(set);

	XHwpMessageBox.String = "셀너비="+celll_w+"\n셀높이="+cell_h;
	XHwpMessageBox.Flag = 0;
	XHwpMessageBox.DoModal();
}

정상작동


어느 명령어는 위/아래 위치 상관없이 정상작동 되는것도 있고
탭 설정 같은 경우는 act.GetDefault(set); 가 서브셋 위에 위치해야만 정상작동 됩니다.
무슨 오류인지 몰라도 완전히 고정위치 정답은 없고 시행착오를 겪으며 해결해야 겠네요. ㅠㅠ