GetDome メソッド

構文

BOOL GetDome(DOUBLE* dTop, DOUBLE* dTopH, DOUBLE* dFlatten,
DOUBLE* xCenter, DOUBLE* yCenter, DOUBLE* xRad, DOUBLE* yRad, DOUBLE* dDegree);

(JavaScript用) string GetDomeJS();

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

パラメータ

dTop
上端の基準高。
dTopH
上端の最上部高。
dFlatten
扁平率。
xCenter
楕円の中心のX座標。
yCenter
楕円の中心のY座標。
xRad
X方向の半径。
yRad
Y方向の半径。
dDegree
主軸の傾き(角度単位)。

戻り値

ドーム屋根の情報を取得できた場合 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 78: // dome
		{
		double dTop, dTopH, dFlatten;
		double xCenter, yCenter, xRad, yRad, dDegree;
		m_MadoriDoc->GetDome(&dTop, &dTopH, &dFlatten,
			&xCenter, &yCenter, &xRad, &yRad, &dDegree);
		strMsg.Format(TEXT("Dome xpos[%lf]ypos[%lf]xrad[%lf]yrad[%lf]"),
			xCenter, yCenter, xRad, yRad);
		AfxMessageBox(strMsg);
		}
		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 78: // dome
		var data = eval( doc.GetDomeJS() );
		var msg = " Result[" + data.Result + "]";
		alert(msg);
		msg = " Center[" + data.XCenter + ", " + data.YCenter + "]\n" +
		      " xRad[" + data.XRadius + "]\n" +
		      " yRad[" + data.YRadius + "]";
		alert(msg);
		break;
	}
	lRet = doc.GetNextObject();
}