GetUsage メソッド

構文

BOOL GetUsage(VARIANT* vVertex, long* uUsage, double* dKenpei, long* bBoka, long* bKado,
     double* dKenpeiMax, double* dYoseki, double* dYosekiMax, long* bAbsHeightSw, double* dAbsHeight,
     long* bRoadObliqSw, double* dRoadObliqSlope, double* dRoadObliqInfluence,
     long* bNorthObliqSw, double* dNorthObliqHeight, double* dNorthObliqSlope,
     long* bNeighborObliqSw, double* dNeighborObliqHeight, double* dNeighborObliqSlope,
     long* bHLObliqSw, BSTR* szHLName, long* nHLType, long* nHLRoad,
     double* h1, double* k1, double* h2, double* k2, double* h3, long* bHLUserDefine, BSTR* szHLRemark,
     long* bShadowSw, double* dShadowHeight, double* dShadowTime1, double* dShadowTime2,
     long* bHokkaido, double* dLatitude, double* dLongitude);

(JavaScript用) string GetUsageJS();

カレントのオブジェクトが用途地域範囲の場合、その情報を取得します。

パラメータ

vVertex
(x, y) 形状の頂点列。型は VT_R8 | VT_ARRAY にしてください。
uUsage
用途地域種別。次のいずれかの値です。
  • 0未指定
  • 1第1種低層住居専用地域
  • 2第2種低層住居専用地域
  • 3第1種中高層住居専用地域
  • 4第2種中高層住居専用地域
  • 5第1種住居地域
  • 6第2種住居地域
  • 7準住居地域
  • 8近隣商業地域
  • 9商業地域
  • 10準工業地域
  • 11工業地域
  • 12工業専用地域
  • 13指定なし
dKenpei
指定建ぺい率。百分率です。
bBoka
防火地域か。防火地域なら1、違うなら0。
bKado
角地か。角地なら1、違うなら0。
dKenpeiMax
許容建ぺい率。百分率です。
dYoseki
指定容積率。百分率です。
dYosekiMax
許容容積率。百分率です。
bAbsHeightSw
絶対高さ制限があるか。あるなら1、ないなら0。
dAbsHeight
絶対高さ制限の高さ。mm単位です。
bRoadObliqSw
道路斜線制限があるか。あるなら1、ないなら0。
dRoadObliqSlope
道路斜線の勾配。
dRoadObliqInfluence
道路斜線の適用距離。mm単位です。
bNorthObliqSw
北側斜線制限があるか。あるなら1、ないなら0。
dNorthObliqHeight
北側斜線の立上高。mm単位です。
dNorthObliqSlope
北側斜線の勾配。
bNeighborObliqSw
隣地斜線制限があるか。あるなら1、ないなら0。
dNeighborObliqHeight
隣地斜線の立上高。mm単位です。
dNeighborObliqSlope
隣地斜線の勾配。
bHLObliqSw
高度地区制限があるか。あるなら1、ないなら0。
szHLName
高度地区制限の名称。
nHLType
高度地区の規制タイプ。
  • 0絶対高さ
  • 1一段階斜線
  • 2一段階斜線+絶対高さ
  • 3二段階斜線
  • 4二段階斜線+絶対高さ
nHLRoad
高度地区で道路がある場合の規制基準。
  • 0反対側の境界線
  • 1道路の中心線
h1
高度地区の一段階めの立上高。m単位です。
k1
高度地区の一段階めの勾配。
h2
高度地区の二段階めの立上高。m単位です。
k2
高度地区の二段階目の勾配。
h3
高度地区の絶対高。m単位です。
bHLUserDefine
ユーザー定義高度地区か。ユーザー定義のとき1、システム定義のとき0。
szHLRemark
高度地区に関する注釈。
bShadowSw
日影規制があるか。あるなら1、ないなら0。
dShadowHeight
日影規制の受影面高。mm単位です。
dShadowTime1
5mライン上の日影規制時間。時間単位です。
dShadowTime2
10mライン上の日影規制時間。時間単位です。
bHokkaido
北海道用の日影規制時間選択肢に切り替えるか。切り替えるとき1、切り替えないとき0。
dLatitude
敷地の緯度。秒単位です。
dLongitude
敷地の経度。秒単位です。

戻り値

用途地域範囲の情報を取得できた場合 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 63: // usage
		{
		VARIANT vVertex;
		vVertex.vt = VT_R8 | VT_ARRAY;
		vVertex.parray = NULL;

		long uUsage, bBoka, bKado, bAbsHeightSw, bRoadObliqSw, bNorthObliqSw, bNeighborObliqSw;
		long bHLObliqSw, nHLType, nHLRoad, bHLUserDefine, bShadowSw, bHokkaido;

		double dKenpei, dKenpeiMax, dYoseki, dYosekiMax, dAbsHeight;
		double dRoadObliqSlope, dRoadObliqInfluence, dNorthObliqHeight, dNorthObliqSlope;
		double dNeighborObliqHeight, dNeighborObliqSlope, h1, k1, h2, k2, h3;
		double dShadowHeight, dShadowTime1, dShadowTime2, dLatitude, dLongitude;

		BSTR szHLName = NULL;
		BSTR szHLRemark = NULL;

		m_MadoriDoc->GetUsage(&vVertex, &uUsage, &dKenpei, &bBoka, &bKado,
     		&dKenpeiMax, &dYoseki, &dYosekiMax, &bAbsHeightSw, &dAbsHeight,
     		&bRoadObliqSw, &dRoadObliqSlope, &dRoadObliqInfluence,
     		&bNorthObliqSw, &dNorthObliqHeight, &dNorthObliqSlope,
     		&bNeighborObliqSw, &dNeighborObliqHeight, &dNeighborObliqSlope,
     		&bHLObliqSw, &szHLName, &nHLType, &nHLRoad,
     		&h1, &k1, &h2, &k2, &h3, &bHLUserDefine, &szHLRemark,
     		&bShadowSw, &dShadowHeight, &dShadowTime1, &dShadowTime2,
     		&bHokkaido, &dLatitude, &dLongitude);
		ULONG uVertex = 0;
		if(vVertex.parray){
			uVertex = vVertex.parray->rgsabound[0].cElements;
		}
		CString strHLName;
		AfxBSTR2CString(&strHLName, szHLName);
		CString strHLRemark;
		AfxBSTR2CString(&strHLRemark, szHLRemark);

		strMsg.Format(TEXT("Usage vertex[%d]usage[%d]"), uVertex, uUsage);
		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);
		if(szHLName) ::SysFreeString(szHLName);
		if(szHLRemark) ::SysFreeString(szHLRemark);
		}
		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 63: // usage

		var data = eval( doc.GetUsageJS() );

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

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

		var msg =	" Kenpei[" + data.Kenpei + "]\n" +
					" Boka[" + data.Boka + "]\n" +
					" Kado[" + data.Kado + "]\n" +
					" KenpeiMax[" + data.KenpeiMax + "]\n" +
					" Yoseki[" + data.Yoseki + "]\n" +
					" YosekiMax[" + data.YosekiMax + "]";
		alert(msg);

		msg 	=	" AbsHeightSw[" + data.AbsHeightSw + "]\n" +
					" AbsHeight[" + data.AbsHeight + "]\n" +
					" RoadObliqSw[" + data.RoadObliqSw + "]\n" +
					" RoadObliqSlope[" + data.RoadObliqSlope + "]\n" +
					" RoadObliqInfluence[" + data.RoadObliqInfluence + "]";
		alert(msg);

		msg 	=	" NorthObliqSw[" + data.NorthObliqSw + "]\n" +
					" NorthObliqHeight[" + data.NorthObliqHeight + "]\n" +
					" NorthObliqSlope[" + data.NorthObliqSlope + "]\n" +
					" NeighborObliqSw[" + data.NeighborObliqSw + "]\n" +
					" NeighborObliqHeight[" + data.NeighborObliqHeight + "]\n" +
					" NeighborObliqSlope[" + data.NeighborObliqSlope + "]";
		alert(msg);

		msg 	=	" HLObliqSw[" + data.HLObliqSw + "]\n" +
					" HLName[" + data.HLName + "]\n" +
					" HLType[" + data.HLType + "]\n" +
					" HLRoad[" + data.HLRoad + "]\n" +
					" H1[" + data.H1 + "]\n" +
					" K1[" + data.K1 + "]\n" +
					" H2[" + data.H2 + "]\n" +
					" K2[" + data.K2 + "]\n" +
					" H3[" + data.H3 + "]\n" +
					" HLUserDefine[" + data.HLUserDefine + "]\n" +
					" HLRemark[" + data.HLRemark + "]";
		alert(msg);

		msg 	=	" ShadowSw[" + data.ShadowSw + "]\n" +
					" ShadowHeight[" + data.ShadowHeight + "]\n" +
					" ShadowTime1[" + data.ShadowTime1 + "]\n" +
					" ShadowTime2[" + data.ShadowTime2 + "]\n" +
					" Hokkaido[" + data.Hokkaido + "]\n" +
					" Latitude[" + data.Latitude + "]\n" +
					" Longitude[" + data.Longitude + "]";
		alert(msg);

		break;
	}

	lRet = doc.GetNextObject();
}