GetWallEdit2 メソッド

構文

BOOL GetWallEdit2(WORD* uKind, double* dXPos0, double* dYPos0, double* dXPos1, double* dYPos1,
     double* dOpeningTop, double* dOpeningBottom, double* dThickL, double* dThickR,
     double* dFrameThick, double* dDepth, VARIANT* vVertex, long* dwMDCDType,
     double* xMDCDOfs, double* yMDCDOfs, double* dRes0, double* dRes1, double* dRes2,
     double* dRes3);

(JavaScript用) string GetWallEdit2JS();

カレントのオブジェクトが壁編集系の場合、その情報を取得します。

パラメータ

uKind
壁開口の種類。次のいずれかの値です。
  • 1壁削除
  • 2壁開口
  • 3壁高さ
  • 4壁厚
  • 5ニッチ
  • 6付け棚
  • 7任意形状開口
dXPos0
始点X座標。
dYPos0
始点Y座標。
dXPos1
終点X座標。
dYPos1
終点Y座標。
dOpeningTop
開口部の上端(壁の下端からの距離)。
dOpeningBottom
開口部の下端(壁の下端からの距離)。
dThickL
壁厚左側。
dThickR
壁厚右側。
dFrameThick
枠の厚み
dDepth
ニッチ・突き出しの奥行き
vVertex
(x, y) 形状の頂点列。型は VT_R8 | VT_ARRAY にしてください。
dwMDCDType
設置されたObjectのタイプ(四角形、円、棚横など…)
xMDCDOfs
壁芯までのオフセットのX値。
yMDCDOfs
壁芯までのオフセットのY値。
dRes0
予約値0
dRes1
予約値1
dRes2
予約値2
dRes3
予約値3

戻り値

壁編集オブジェクトの情報を取得できた場合 0 以外を返します。できなかった場合は 0 を返します。

使用例

// 間取りオブジェクトへ接続
CMadoriDoc * m_MadoriDoc = new CMadoriDoc();
CLSIDFromProgID (L"MyHomeDesignerMadori.MadoriDoc", &clsid);
GetActiveObject (clsid, NULL, &pUnk);
pUnk->QueryInterface (IID_IDispatch, (void**)(&pDisp));
m_MadoriDoc->AttachDispatch (pDisp);

// 列挙する
long lRet = m_MadoriDoc->GetTopObject();
if(lRet == 0) AfxMessageBox(TEXT("何もない"));

while(lRet){
	ULONG uType = m_MadoriDoc->GetCurrentObjectType();
	short nLayer = m_MadoriDoc->GetCurrentObjectLayer();
	CString strMsg;
	strMsg.Format(TEXT("[%X]type[%d]layer[%d]"), lRet, uType,nLayer);
	AfxMessageBox(strMsg);

	switch(uType){
	case 21: // no wall
	case 22: // opening
	case 23: // height
	case 48: // thick
	case 57: // niche
	case 58: // shelf
	case 59: // customshape
		{
		VARIANT vVertex;
		vVertex.vt = VT_R8 | VT_ARRAY;
		vVertex.parray = NULL;

		WORD uKind;
		double dXPos0, dYPos0, dXPos1, dYPos1, dOpeningTop, dOpeningBottom, dThickL, dThickR;
		double dFrameThick, dDepth, xMDCDOfs, yMDCDOfs, dRes0, dRes1, dRes2, dRes3;
		long dwMDCDType;

		m_MadoriDoc->GetWallEdit2(uKind, dXPos0, dYPos0, dXPos1, dYPos1,
			dOpeningTop, dOpeningBottom, dThickL, dThickR, dFrameThick, dDepth, vVertex,
			dwMDCDType, xMDCDOfs, yMDCDOfs, dRes0, dRes1, dRes2, dRes3);

		ULONG uVertex = 0;
		if(vVertex.parray){
			uVertex = vVertex.parray->rgsabound[0].cElements;
		}

		strMsg.Format(TEXT("kind[%d]vertex[%d]"), uKind, uVertex);
		AfxMessageBox(strMsg);
		if(uVertex > 0){
			double * pVar;
			SafeArrayAccessData(vVertex.parray, (void**)&pVar);
			for(ULONG u = 0; u < uVertex; u+=2){
				strMsg.Format(TEXT("Vertex %u[%lf,%lf]"), u/2, pVar[u], pVar[u+1]);
				AfxMessageBox(strMsg);
			}
			SafeArrayUnaccessData(vVertex.parray);
		}
		if(vVertex.parray) SafeArrayDestroy(vVertex.parray);

		}
		break;
	}
	lRet = m_MadoriDoc->GetNextObject();
}

// JavaScript sample
var doc = new CMadoriDoc();
var lRet = doc.GetTopObject();

while(lRet){
	var uType =doc.GetCurrentObjectType();
	alert(uType);
	switch (uType){
	case 21: // no wall
	case 22: // opening
	case 23: // height
	case 48: // thick
	case 57: // niche
	case 58: // shelf
	case 59: // customshape
		var data = eval( doc.GetWallEdit2JS() );

		var msg = " Result[" + data.Result + "]";
		alert(msg);

		var msg =	" Kind[" + data.Kind + "]\n" +
					" XPos0[" + data.XPos0 + "]\n" +
					" YPos0[" + data.YPos0 + "]\n" +
					" XPos1[" + data.XPos1 + "]\n" +
					" YPos1[" + data.YPos1 + "]\n" +
					" Top[" + data.Top + "]\n" +
					" Bottom[" + data.Bottom + "]\n" +
					" ThickL[" + data.ThickL + "]\n" +
					" ThickR[" + data.ThickR + "]\n" +
					" FrameThick[" + data.FrameThick + "]\n" +
					" Depth[" + data.Depth + "]";
		alert(msg);

		var nPoints = data.Hole.length / 2;
		alert( nPoints );
		for( var i=0 ; i < nPoints ; i++ ){
			alert( "Vertex:[" + data.Hole[i*2] + ", " + data.Hole[i*2+1] + "]" );
		}

		msg 	=	" MDCDType[" + data.MDCDType + "]\n" +
					" XMDCDOffset[" + data.XMDCDOffset + "]\n" +
					" YMDCDOffset[" + data.YMDCDOffset + "]\n" +
					" Res0[" + data.Res0 + "]\n" +
					" Res1[" + data.Res1 + "]\n" +
					" Res2[" + data.Res2 + "]\n" +
					" Res3[" + data.Res3 + "]";
		alert(msg);

		break;
	}

	lRet = doc.GetNextObject();
}