GetDecoWall メソッド

構文

BOOL GetDecoWall(VARIANT * vVertex, VARIANT * vWallFace, USHORT* uDecoWallHeightMethod,
     DOUBLE * dDecoWallHeight, DOUBLE * dDecoWallThickL, DOUBLE * dDecoWallThickR, unsigned short * bDecoWallHabaki,
     unsigned short * bDecoWallMawaribuchi, unsigned short * bDecoWallKoshikabe, unsigned short * bDecoWallKoshiMikiri,
     unsigned short * bDecoWallTopFrame);

(JavaScript用) string GetDecoWallJS();

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

パラメータ

vVertex
(x, y) 頂点列。型は VT_R8 | VT_ARRAY にしてください。vVertex.parrayは不要になったら、SafeArrayDestroyで解放してください。
vWallFace
(x, y) 壁面。型は VT_R8 | VT_ARRAY にしてください。vWallFace.parrayは不要になったら、SafeArrayDestroyで解放してください。
uDecoWallHeightMethod
壁の高さ設定。
  • 0床から天井まで。
  • 1天井から。
  • 2床から。
dDecoWallHeight
壁の高さ。
dDecoWallThickL
壁厚A。
dDecoWallThickR
壁厚B。
bDecoWallHabaki
幅木。0:なし 1:あり。
bDecoWallMawaribuchi
廻り縁。0:なし 1:あり。
bDecoWallKoshikabe
腰壁。0:なし 1:あり。
bDecoWallKoshiMikiri
腰壁見切り。0:なし 1:あり。
bDecoWallTopFrame
笠木。0:なし 1:あり。

戻り値

独立壁の情報を取得できた場合 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);

	if (uType == 56){//独立壁
		VARIANT vVertex, vWallFace;
		vVertex.vt = VT_R8 | VT_ARRAY;
		vVertex.parray = NULL;
		vWallFace.vt = VT_R8 | VT_ARRAY;
		vWallFace.parray = NULL;
		unsigned short uDecoWallHeightMethod;
		double dDecoWallHeight, dDecoWallThickL, dDecoWallThickR;
		unsigned short bDecoWallHabaki, bDecoWallMawaribuchi;
		unsigned short bDecoWallKoshikabe, bDecoWallKoshiMikiri, bDecoWallTopFrame;

		m_MadoriDoc->GetDecoWall(&vVertex, &vWallFace, &uDecoWallHeightMethod,
		&dDecoWallHeight, &dDecoWallThickL, &dDecoWallThickR, &bDecoWallHabaki,
		&bDecoWallMawaribuchi, &bDecoWallKoshikabe, &bDecoWallKoshiMikiri,
		&bDecoWallTopFrame);

		ULONG uVertex = 0;
		if(vVertex.parray){
			uVertex = vVertex.parray->rgsabound[0].cElements;
		}
		ULONG uWallFace = 0;
		if(vWallFace.parray){
			uWallFace = vWallFace.parray->rgsabound[0].cElements;
		}
		strMsg.Format(TEXT("decowall Method[%u]h[%lf]ThickL[%lf]ThickR[%lf]
			Habaki[%d]Mawari[%d]Koshikabe[%d]KoshiMikiri[%d]TopFrame[%d]"), 
			uDecoWallHeightMethod, dDecoWallHeight, dDecoWallThickL, 
			dDecoWallThickR,bDecoWallHabaki, bDecoWallMawaribuchi,
			 bDecoWallKoshikabe, bDecoWallKoshiMikiri,bDecoWallTopFrame);
		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(uWallFace > 0){
			double * pVar;
			SafeArrayAccessData(vWallFace.parray, (void**)&pVar);
			for(ULONG u = 0; u < uWallFace; u+=2){
				strMsg.Format(TEXT("WallFace %u[%lf,%lf]"), u/2, pVar[u], pVar[u+1]);
				AfxMessageBox(strMsg);
			}
			SafeArrayUnaccessData(vWallFace.parray);
		}
		if(vVertex.parray) SafeArrayDestroy(vVertex.parray);
		if(vWallFace.parray) SafeArrayDestroy(vWallFace.parray);
		}
	
	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 56: // 壁
		doc.Select();
		var data = eval( doc.GetDecoWallJS() );
		alert( "Result[" + data.Result + "]" );
		alert( data.Vertex.length );
		for( var i=0 ; i < data.Vertex.length ; i++ ){
			alert( "Vertex:[" + data.Vertex[i] + "]" );
		}
		alert( "WallFace" + data.WallFace.length );
		for( var i=0 ; i < data.WallFace.length ; i++ ){
			alert( "WallFace:[" + data.WallFace[i] + "]" );
		}
		var msg = " DecoWallHeightMethod[" + data.DecoWallHeightMethod + "]";
		alert(msg);
		var msg = " DecoWallHeight[" + data.DecoWallHeight + "]";
		alert(msg);
		var msg = " DecoWallThickL[" + data.DecoWallThickL + "]";
		alert(msg);
		var msg = " DecoWallThickR[" + data.DecoWallThickR + "]";
		alert(msg);
		var msg = " DecoWallHabaki[" + data.DecoWallHabaki + "]";
		alert(msg);
		var msg = " DecoWallMawaribuchi[" + data.DecoWallMawaribuchi + "]";
		alert(msg);
		var msg = " DecoWallKoshikabe[" + data.DecoWallKoshikabe + "]";
		alert(msg);
		var msg = " DecoWallKoshiMikiri[" + data.DecoWallKoshiMikiri + "]";
		alert(msg);
		var msg = " DecoWallTopFrame[" + data.DecoWallTopFrame + "]";
		alert(msg);
		doc.Unselect();
		break;
	}
	lRet = doc.GetNextObject();
}

対応情報

Ver.8.0.13以降で対応しています。