AddSiteUpDown メソッド

構文

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("失敗");