構文
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 を返します。
使用例
// C++ sample
// 間取りオブジェクトへ接続
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(TEXT("OK"), MB_ICONINFORMATION);
else AfxMessageBox(TEXT("失敗"));
// JavaScript sample var doc = new CMadoriDoc(); var vertex = [0.10, 0.0, 10000.0, 0.0, 10000.0, 10000.0, 0.0, 10000.0]; var byInputType = 0; var dPolygonHeight = 2000; var uBaseLineIndex = 0; var dBaseLineHeight = 1000; var dGradient = 20; var vSelectPointArray = [0, 1, 2]; var vZPos = [0.0, 0.0, 0.0, 0.0]; var result = doc.AddSiteUpDown(vertex, byInputType, dPolygonHeight, uBaseLineIndex, dBaseLineHeight, dGradient, vSelectPointArray, vZPos); alert(result);