사각형 그리기 액션 일부가 작동하지 않습니다. (DrawObjCreatorRectangle)

(예전 커뮤니티(2016-2020) 사이트에서 옮겨온 글입니다: 번호 87)

작성자: yhak.joo
날짜: 2018-02-12


며칠 째 제자리 걸음을 하고 있어 개발자님의 도움을 요청드립니다.

x 좌표 50 mm

y 좌표 50 mm

width 35 mm

height 75 mm의 사각형을 그리려고 아래와 같이 코딩하였습니다.

그러나 실행결과,

첨부한 캡쳐화면처럼

실행 화면에는 조그만 점만 나타납니다…

실행 화면에서 이 점을 마우스 우클릭을 하여

개체 속성을 확인해보니

위치는 프로그램에서 지정한 대로 적용이 되었으나

크기는 어떠한 값을 지정해도 0.01 mm로 되어 적용이 안됩니다.

(첨부 캡쳐화면 참조)

실행 화면의 개체 속성 창에서 위치와 크기를 변경하면

역시 위치는 변경이 되는데

크기는 변경이 되질 않습니다.

계속 찾아보고 있는데 며칠째 진전이 없어

개발자님의 도움을 요청드립니다.

{

	CDHwpAction act = m_HwpCtrl.CreateAction(_T("DrawObjCreatorRectangle"));

	CDHwpParameterSet set = act.CreateSet();

	act.GetDefault(set);

 

	set.SetItem(_T("TreatAsChar"), CComVariant(0));				// off

	

	set.SetItem(_T("VertRelTo"), CComVariant(0));				// 종이 영역

	set.SetItem(_T("VertAlign"), CComVariant(0));				// 위(Top)

	set.SetItem(_T("VertOffset"), CComVariant(50 * 283.465));	      // 1mm = 283.465 HWPUNITs

 

	set.SetItem(_T("HorzRelTo"), CComVariant(0));				// 종이 영역

	set.SetItem(_T("HorzAlign"), CComVariant(0));				// 왼쪽(Left)

	set.SetItem(_T("HorzOffset"), CComVariant(50 * 283.465));	      // 1mm = 283.465 HWPUNITs

 

	set.SetItem(_T("WidthRelTo"), CComVariant(4));				// 고정 값(단위 HWPUNIT)

	set.SetItem(_T("Width"), CComVariant(35 * 283.465));		      // 1mm = 283.465 HWPUNITs

 

	set.SetItem(_T("HeightRelTo"), CComVariant(2));				// 고정 값(단위 HWPUNIT)

	set.SetItem(_T("Height"), CComVariant(75 * 283.465));		      // 1mm = 283.465 HWPUNITs

 

	// 아래와 같이 set.Item으로 내용을 확인해 보면

	// 지정한 대로 값이 들어 있습니다.

 

	VARIANT returnVal;

	returnVal = set.Item(_T("Width"));

	returnVal = set.Item(_T("Height"));

 

	set.SetItem(_T("LayoutWidth"), CComVariant(50 * 283.465));	      // 1mm = 283.465 HWPUNITs

	set.SetItem(_T("LayoutHeight"), CComVariant(50 * 283.465));	      // 1mm = 283.465 HWPUNITs

 

	act.Execute(set);

 

}

감사합니다.

댓글

hsmun (2018.02.21)

제가 알기로는 DrawObjCreatorRectangle액션의 파라미터셋에서 서브셋인 DrawLayOut을 얻어야 할 것으로 보여집니다

var layoutset = set.Item("ShapeDrawLayOut");
layoutset.SetItem("CreateNumPt", 4);// 4개의 점

var arrayCreatePts = layoutset.CreateItemArray("CreatePt", 8);// 4개의 점을 x, y 좌표를 배열에 지정 8개
arrayCreatePts.SetItem(0, 0);
arrayCreatePts.SetItem(1, 0);
arrayCreatePts.SetItem(2, 3000);
arrayCreatePts.SetItem(3, 0);
arrayCreatePts.SetItem(4, 3000);
arrayCreatePts.SetItem(5, 3000);
arrayCreatePts.SetItem(6, 0);
arrayCreatePts.SetItem(7, 3000);
action.Execute(set);
yhak.joo (2018.02.21)

답변 진심 감사드립니다.