GetStairs メソッド

構文

BOOL GetStairs(double * dXPos, double * dYPos, double * dWidth, WORD * uStairsType,
    double * dStepDepth1, double * dStepDepth2, double * dStepDepth3,
    unsigned short * uStep1, unsigned short * uStep2, unsigned short * uStep3,
    unsigned short * uLandStep1, unsigned short * uLandStep2, unsidned short * bTurn, double * dAngle,
    unsidned short * bRiser,
    unsidned short * bLeftStringer, unsidned short * bLeftWallRail, unsidned short * bLeftWallBase,
    unsidned short * bLeftHandRail, double * dLeftBarHeight,    
    unsidned short * bRightStringer, unsidned short * bRightWallRail, unsidned short * bRightWallBase,
    unsidned short * bRightHandRail, double * dRightBarHeight, 
    unsidned short * bLeftFrame, unsidned short * bRightFrame, unsidned short * bLeftPanel, unsidned short * bRightPanel,
    unsidned short * bExternal,
    unsigned short * uCut, unsigned short * uDir);

(JavaScript用) string GetStairsJS();

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

パラメータ

dXPos
始点X座標。
dYPos
始点Y座標。
dWidth
幅。
uStairsType
階段の種類。次のいずれかの値です。
  • 0直進階段
  • 1踊り場のある直進階段
  • 2L字階段
  • 3U字階段
  • 4中空き階段
  • 5S字階段
  • 6円形階段
dStepDepth1
最初の踊り場までの踏面の奥行き。
dStepDepth2
踊り場間の踏面の奥行き。踊り場のある直進階段、U字階段の場合は、踊り場の奥行き。
dStepDepth3
踊り場からの踏面の奥行き。円形階段の場合は、中心角。
uStep1
踊り場までの段数。
uStep2
踊り場から踊り場までの段数。
uStep3
踊り場からの段数。円形階段の場合は、内側半径。
uLandStep1
廻り部分の段数(0:踊り場、1:2分割、2:3分割)。U字階段の場合は、次のいずれかの値です。
  • 0平坦(1段)
  • 12段
  • 23段
  • 34段(60度/30度)
  • 44段(45度)
  • 55段
  • 66段
  • 7上部2段、下部1段
  • 8上部3段、下部1段
  • 9上部1段、下部2段
  • 10上部1段、下部3段
uLandStep2
中空き階段、S字階段の上部の廻り部分段数(0:踊り場、1:2分割、2:3分割)。
廻り部がひとつの階段の場合、0が返ります。
bTurn
0:右回り 1:左回り
dAngle
角度。90度単位。
bRiser
蹴込板があるかどうか。0で無し、1であり。
bLeftStringer
左側桁があるかどうか。0で無し、1であり。
bLeftWallRail
Ver.10.0.4まで : 左手すり壁があるかどうか。0で無し、1であり。
Ver.10.0.5以降 : int値。 0:無し、1:手すり壁、4:手摺柵(Over The Post) 5:手摺柵(Post To Post)。
bLeftWallBase
左下壁があるかどうか。0で無し、1であり。
bLeftHandRail
左手すりバーがあるかどうか。0で無し、1であり。
dLeftBarHeight
左手すりバー高さ。
bRightStringer
右側桁があるかどうか。0で無し、1であり。
bRightWallRail
Ver.10.0.4まで : 右手すり壁があるかどうか。0で無し、1であり。
Ver.10.0.5以降 :int値。 0:無し、1:手すり壁、4:手摺柵(Over The Post) 5:手摺柵(Post To Post)。
bRightWallBase
右下壁があるかどうか。0で無し、1であり。
bRightHandRail
右手すりバーがあるかどうか。0で無し、1であり。
dRightBarHeight
右手すりバー高さ。
bLeftFrame
左フレームがあるかどうか。0で無し、1であり。
bRightFrame
右フレームがあるかどうか。0で無し、1であり。
bLeftPanel
左パネルがあるかどうか。0で無し、1であり。
bRightPanel
右パネルがあるかどうか。0で無し、1であり。
bExternal
外階段かどうか。0で内、1で外。
uCut
カット表示。次のいずれかの値です。
  • 0カット表示しない
  • 11/3カット
uDir
昇り表示。次のいずれかの値です。
  • 0なし
  • 1UP
  • 2UP/DN
  • 3上ル
  • 4上ル/下ル

戻り値

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

	lRet = m_MadoriDoc->GetNextObject();
	switch(uType){
	case 12: // stairs
	case 13: // STRAIGHTSTAIRS
	case 14: // straightland
	case 15: // lsign
	case 16: // usign
	case 17: // kosign
	case 18: // ssign
		{
		double dXPos, dYPos, dWidth;
		unsigned short uStairsType;
		double dStepDepth1, dStepDepth2, dStepDepth3;
		unsigned short uStep1, uStep2, uStep3, uLandStep1, uLandStep2, bTurn;
		double dAngle;
		unsigned short bRiser, bLeftStringer, bLeftWallRail, bLeftWallBase, bLeftHandRail;
		double dLeftBarHeight;
		unsigned short bRightStringer, bRightWallRail, bRightWallBase, bRightHandRail;
		double dRightBarHeight;
		unsigned short bLeftFrame, bRightFrame, bLeftPanel,bRightPanel, bExternal, uCut, uDir;
		m_MadoriDoc->GetStairs(&dXPos, &dYPos, &dWidth, &uStairsType, &dStepDepth1, &dStepDepth2, &dStepDepth3,
			&uStep1, &uStep2, &uStep3, &uLandStep1, &uLandStep2, &bTurn, &dAngle, &bRiser, &bLeftStringer, 
			&bLeftWallRail, &bLeftWallBase, &bLeftHandRail, &dLeftBarHeight, &bRightStringer, 
			&bRightWallRail, &bRightWallBase, &bRightHandRail, &dRightBarHeight, &bLeftFrame, &bRightFrame, 
			&bLeftPanel, &bRightPanel, &bExternal, &uCut, &uDir);
		switch(uStairsType){
		case 0: // 直進階段
			strMsg.Format(TEXT("直進階段 step[%u]depth[%lf]"), uStep1, dStepDepth1);
			break;
		case 1: // 踊り場のある直進階段
			strMsg.Format(TEXT("踊り場のある直進階段 step[%u,%u]depth[%lf]landdepth[%lf]"), 
				uStep1, uStep2, dStepDepth1, dStepDepth2);
			break;
		case 2: // L字階段
			strMsg.Format(TEXT("L字階段 step[%u,%u]landstep[%u]depth[%lf,%lf]"), 
				uStep1, uStep2, uLandStep1, dStepDepth1, dStepDepth2);
			break;
		case 3: // U字階段
			strMsg.Format(TEXT("U字階段 step[%u,%u]landstep[%u]depth[%lf]"), 
				uStep1, uStep2, uLandStep1, dStepDepth1);
			break;
		case 4: // 中空き階段
			strMsg.Format(TEXT("中空き階段 step[%u,%u,%u]landstep[%u,%u]depth[%lf,%lf,%lf]"), 
				uStep1, uStep2, uStep3, uLandStep1, uLandStep2, dStepDepth1, dStepDepth2, dStepDepth3);
			break;
		case 5: // S字階段
			strMsg.Format(TEXT("S字階段 step[%u,%u,%u]landstep[%u,%u]depth[%lf,%lf,%lf]"), 
				uStep1, uStep2, uStep3, uLandStep1, uLandStep2, dStepDepth1, dStepDepth2, dStepDepth3);
			break;
		}
		AfxMessageBox(strMsg);

		strMsg.Format(TEXT("pos[%lf,%lf]w[%lf]turn[%u]ang[%lf]riser[%u]\nleft stringer[%u]")
			TEXT("wall rail[%u]base[%u]hand rail[%u]bar[%lf] \nright stringer[%u]")
			TEXT("wall rail[%u]base[%u]hand rail[%u]bar[%lf]\nframe l[%u]r[%u]")
			TEXT("panel l[%u]r[%u]external[%u]cut[%u]dir[%u]"),
			dXPos, dYPos, dWidth, bTurn, dAngle, bRiser, bLeftStringer, 
			bLeftWallRail, bLeftWallBase, bLeftHandRail, dLeftBarHeight, bRightStringer, 
			bRightWallRail, bRightWallBase, bRightHandRail, dRightBarHeight, bLeftFrame, bRightFrame, 
			bLeftPanel, bRightPanel, bExternal, uCut, uDir);
		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 12: // stairs
	case 13: // STRAIGHTSTAIRS
	case 14: // straightland
	case 15: // lsign
	case 16: // usign
	case 17: // kosign
	case 18: // ssign

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

		msg = " XPos[" + data.XPos + "]\r\n";
		msg += " YPos[" + data.YPos + "]\r\n";
		msg += " Width[" + data.Width + "]";
		alert(msg);

		msg = " StairsType[" + data.StairsType + "]\r\n";
		msg += " StepDepth1[" + data.StepDepth1 + "]\r\n";
		msg += " StepDepth2[" + data.StepDepth2 + "]\r\n";
		msg += " StepDepth3[" + data.StepDepth3 + "]";
		alert(msg);

		msg = " Step1[" + data.Step1 + "]\r\n";
		msg += " Step2[" + data.Step2 + "]\r\n";
		msg += " Step3[" + data.Step3 + "]\r\n";
		msg += " LandStep1[" + data.LandStep1 + "]\r\n";
		msg += " LandStep2[" + data.LandStep2 + "]";
		alert(msg);

		msg = " Turn[" + data.Turn + "]\r\n";
		msg += " Angle[" + data.Angle + "]\r\n";
		msg += " Riser[" + data.Riser + "]";
		alert(msg);

		msg = " LeftStringer[" + data.LeftStringer + "]\r\n";
		msg += " LeftWallRail[" + data.LeftWallRail + "]\r\n";
		msg += " LeftWallBase[" + data.LeftWallBase + "]\r\n";
		msg += " LeftHandRail[" + data.LeftHandRail + "]\r\n";
		msg += " LeftBarHeight[" + data.LeftBarHeight + "]";
		alert(msg);

		msg = " RightStringer[" + data.RightStringer + "]\r\n";
		msg += " RightWallRail[" + data.RightWallRail + "]\r\n";
		msg += " RightWallBase[" + data.RightWallBase + "]\r\n";
		msg += " RightHandRail[" + data.RightHandRail + "]\r\n";
		msg += " RightBarHeight[" + data.RightBarHeight + "]";
		alert(msg);

		msg = " LeftFrame[" + data.LeftFrame + "]\r\n";
		msg += " RightFrame[" + data.RightFrame + "]\r\n";
		msg += " LeftPanel[" + data.LeftPanel + "]\r\n";
		msg += " RightPanel[" + data.RightPanel + "]\r\n";
		msg += " External[" + data.External + "]\r\n";
		msg += " Cut[" + data.Cut + "]\r\n";
		msg += " Dir[" + data.Dir + "]";
		alert(msg);

		break;
	}

	lRet = doc.GetNextObject();
}