GetRoom メソッド

構文

BOOL GetRoom(VARIANT * vVertex,  WORD * uRoomType, BSTR * szRoomName, unsigned short * bDispRoomName,
    unsigned short * bDispRoomSize, double * dFloorHeight, double * dFloorThick, double * dCeilingHeight,
    double * dHabakiHeight, double * dKoshiHeight, double * dMawaribuchiHeight, double * dKoshiMikiriHeight,
    double * dBalconyHeight, unsigned short * bHabaki,  unsigned short * bMawaribuchi,  unsigned short * bKoshikabe,
    unsigned short * bKoshiMikiri,  unsigned short * bRoofFlag, BYTE * byHatchStyle, OLE_COLOR * ocForeColor,
    OLE_COLOR * ocBackColor, unsigned short * bBackTrans, WORD * uTatamiType, BSTR *szFontName, double * dFontSize,
    BYTE * byFontAttr, double * dFontAngle, OLE_COLOR * ocFontColor);

(JavaScript用) string GetRoomJS();

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

パラメータ

vVertex
(x, y) 頂点列。型は VT_R8 | VT_ARRAY にしてください。vVertex.parrayは不要になったら、SafeArrayDestroyで解放してください。
uRoomType
部屋の種類。次のいずれかの値です。
szRoomName
部屋名。
bDispRoomName
部屋名を表示するかどうか。0で表示しません。1で表示します。
bDispRoomSize
部屋サイズを表示するかどうか。0で表示しません。1で表示します。
dFloorHeight
床面の高さ。通常は0.0です。
dFloorThick
床の厚み。
dCeilingHeight
天井高。
dHabakiHeight
幅木高。
dKoshiHeight
腰壁高。
dMawaribuchiHeight
廻り縁高。
dKoshiMikiriHeight
腰壁見切高。
dBalconyHeight
バルコニー手すり高さ。
bHabaki
幅木があるかどうか。0で無し。1であり。
bMawaribuchi
廻り縁があるかどうか。0で無し。1であり。
bKoshikabe
腰壁があるかどうか。0で無し。1であり。
bKoshiMikiri
腰壁見切があるかどうか。0で無し。1であり。
bRoofFlag
屋根があるかどうか。0で無し。1であり。バルコニー、ポーチのみ、無しに出来ます。
byHatchStyle
模様の種類。次のいずれかの値です。
crForeColor
前景色。
crBackColor
背景色。
bBackTrans
背景を透明にするかどうか。0で不透明、1で透明。
uTatamiType
畳タイプ。次のいずれかの値です。
szFontName
部屋名、部屋サイズの表示フォント名。
dFontSize
部屋名、部屋サイズの表示フォントサイズ。
byFontAttr
部屋名、部屋サイズの表示フォント属性。次のフラグの任意の組み合わせです。
dFontAngle
部屋名、部屋サイズの表示角度。
crFontColor
部屋名、部屋サイズの表示色。

戻り値

部屋の情報を取得できた場合 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 19: // room
		{
		VARIANT vVertex;
		vVertex.vt = VT_R8 | VT_ARRAY;
		vVertex.parray = NULL;
		unsigned short uRoomType;
		BSTR szRoomName = NULL;
		unsigned short bDispRoomName, bDispRoomSize;
		double dFloorHeight, dFloorThick, dCeilingHeight, dHabakiHeight, dKoshiHeight, dMawaribuchiHeight, dKoshiMikiriHeight, dBalconyHeight;
		unsigned short bHabaki, bMawaribuchi, bKoshikabe, bKoshiMikiri, bRoofFlag;
		BYTE byHatchStyle;
		unsigned long ocForeColor, ocBackColor;
		unsigned short bBackTrans, uTatamiType;
		BSTR szFontName = NULL;
		double dFontSize;
		BYTE byFontAttr;
		double dFontAngle;
		unsigned long ocFontColor;

		m_MadoriDoc->GetRoom(&vVertex, &uRoomType, &szRoomName, &bDispRoomName, &bDispRoomSize, &dFloorHeight, 
			&dFloorThick, &dCeilingHeight, &dHabakiHeight, &dKoshiHeight, &dMawaribuchiHeight, &dKoshiMikiriHeight, 
			&dBalconyHeight, &bHabaki, &bMawaribuchi, &bKoshikabe, &bKoshiMikiri, &bRoofFlag, &byHatchStyle, 
			&ocForeColor, &ocBackColor, &bBackTrans, &uTatamiType, &szFontName, &dFontSize, &byFontAttr, 
			&dFontAngle, &ocFontColor);

		CString strRoomName, strFontName;
		AfxBSTR2CString(&strRoomName, szRoomName);
		AfxBSTR2CString(&strFontName, szFontName);

		strMsg.Format(TEXT("Room type[%u]name[%s]disp[%u][%u]floorHeight[%lf]")
			TEXT("thick[%lf]Ceiling[%lf]habaki[%lf]koshi[%lf]")
			TEXT("mawa[%lf]mikiri[%lf]bal[%lf]bHabaki[%u]bMawa[%u]bKosi[%u]bKosiM[%u]bRoof[%u]hatch[%d]")
			TEXT("forCol[%x]backCol[%x]back[%u]tatami[%u]font[%s]size[%lf]attr[%x]angle[%lf]col[%x]"),
			uRoomType, strRoomName, bDispRoomName, bDispRoomSize, dFloorHeight, 
			dFloorThick, dCeilingHeight, dHabakiHeight, dKoshiHeight, 
			dMawaribuchiHeight, dKoshiMikiriHeight, 
			dBalconyHeight, bHabaki, bMawaribuchi, bKoshikabe, bKoshiMikiri, bRoofFlag, byHatchStyle, 
			ocForeColor, ocBackColor, bBackTrans, uTatamiType, strFontName, dFontSize, byFontAttr, 
			dFontAngle, ocFontColor);
		AfxMessageBox(strMsg);
		if(szRoomName){
			::SysFreeString(szRoomName);
		}
		if(szFontName){
			::SysFreeString(szFontName);
		}
		ULONG uVertex = 0;
		if(vVertex.parray){
			uVertex = vVertex.parray->rgsabound[0].cElements;
		}
		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 19: // room
		var data = eval( doc.GetRoomJS() );

		alert( "Result[" + data.Result + "]" );

		alert( data.Vertex.length );
		for( var i=0 ; i < data.Vertex.length ; i++ ){
			alert( "Vertex:[" + data.Vertex[i] + "]" );
		}

		alert( data.RoomType );
		alert( data.RoomName );
		alert( data.DispRoomName );
		alert( data.DispRoomSize );
		alert( data.FloorHeight );
		alert( data.FloorThick );
		alert( data.CeilingHeight );
		alert( data.HabakiHeight );
		alert( data.KoshiHeight );
		alert( data.BalconyHeight );
		alert( data.KoshiMikiriHeight );
		alert( data.Habaki );
		alert( data.Mawaribuchi );
		alert( data.Koshikabe );
		alert( data.KoshiMikiri );
		alert( data.RoofFlag );
		alert( data.HatchStyle );
		alert( data.ForeColor );
		alert( data.BackColor );
		alert( data.BackTrans );
		alert( data.TatamiType );
		alert( data.FontName );
		alert( data.FontSize );
		alert( data.FontAttr );
		alert( data.FontAngle );
		alert( data.FontColor );

		break;
	}

	lRet = doc.GetNextObject();
}
ページのTOPへ戻る