構文
BOOL AddSiteUpDown(VARIANT & vVertex,
BYTE byInputType, double dPolygonHeight, USHORT uBaseLineIndex,
double
dBaseLineHeight, double dGradient, VARIANT & vSelectPointArray,
VARIANT & vZPos);
図面に敷地高低差オブジェクトを追加します。
パラメータ
vVertex
(x, y) 頂点列。型は VT_R8 | VT_ARRAY にしてください。
byInputType
高さの指定方法。次のいずれかの値を指定できます。
- 0面の高さを指定。
- 1辺と勾配を指定。
- 23点の高さを指定。
dPolygonHeight
高さ。単位ミリ。
uBaseLineIndex
勾配の基準となる辺。
dBaseLineHeight
基準となる辺の高さ。単位ミリ。
dGradient
勾配(%)。
vSelectPointArray
高さを決定する頂点配列。配列要素は、3。型は、VT_UI2 | VT_ARRAY
にしてください。
vZPos
高さの配列。型は、VT_R8 | VT_ARRAY にしてください。
戻り値
敷地敷地高低差オブジェクトを追加できた場合 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); // 敷地高低差オブジェクトを追加 SAFEARRAYBOUND bound[1]; bound[0].cElements = 8; bound[0].lLbound = 0; SAFEARRAY * pArray = SafeArrayCreate(VT_R8, 1, bound); double * pVar; SafeArrayAccessData(pArray, (void**)&pVar); double dVertex[8] = {0.0, 0.0, 10000.0, 0.0, 10000.0, 10000.0, 0.0, 10000.0}; for(int i=0; i < 8; ++i){ pVar[i] = dVertex[i]; } SafeArrayUnaccessData(pArray); VARIANT v; v.vt = VT_R8 | VT_ARRAY; v.parray = pArray; BYTE byInputType = 0; double dPolygonHeight = 2000; USHORT uBaseLineIndex = 0; double dBaseLineHeight = 1000; double dGradient = 20; SAFEARRAYBOUND bound2[1]; bound2[0].cElements = 3; bound2[0].lLbound = 0; SAFEARRAY * pArray2 = SafeArrayCreate(VT_UI2, 1, bound2); unsigned short * pPoint; SafeArrayAccessData(pArray2, (void**)&pPoint); pPoint[0] = 0; pPoint[1] = 1; pPoint[2] = 2; SafeArrayUnaccessData(pArray2); VARIANT vSelectPointArray; vSelectPointArray.vt = VT_UI2 | VT_ARRAY; vSelectPointArray.parray = pArray2; SAFEARRAYBOUND bound3[1]; bound3[0].cElements = 4; bound3[0].lLbound = 0; SAFEARRAY * pArray3 = SafeArrayCreate(VT_R8, 1, bound3); SafeArrayAccessData(pArray3, (void**)&pVar); pVar[0] = 0; pVar[1] = 0; pVar[2] = 0; pVar[3] = 0; SafeArrayUnaccessData(pArray3); VARIANT vZPos; vZPos.vt = VT_R8 | VT_ARRAY; vZPos.parray = pArray3; long lRet = m_MadoriDoc->AddSiteUpDown(v, byInputType, dPolygonHeight, uBaseLineIndex, dBaseLineHeight, dGradient, vSelectPointArray, vZPos); if(lRet) AfxMessageBox("OK", MB_ICONINFORMATION); else AfxMessageBox("失敗");