GetSiteTriangle メソッド

構文

void GetSiteTriangle(VARIANT * pSiteTriangle);

三斜入力した敷地の三角形情報を返します。
複数の敷地がある場合、選択している先頭の敷地の情報を返します。

パラメータ

pSiteTriangle
三角形情報の配列。型は、VT_ARRAY。あらかじめ、pSiteData->parrayに面の数分のメモリを確保して下さい。面の数は、頂点数 - 2 です。

SITETRIANGLE 構造体

typedef [uuid(6282F20E-9B96-4A4D-8932-AD08F8A2E674)] struct{
	WORD uType;
	unsigned short nVertex[3];
	double a;
	double b;
	double c;
	double h;
} SITETRIANGLE;
uType
三角形のタイプ。次のいずれかの値です。
  • 03辺長さ指定。
  • 12辺長さと高さ指定。Aの長さと基準線からの高さを指定。
  • 22辺長さと高さ指定。Bの長さと基準線からの高さを指定。
  • 32辺長さと高さ指定。Aの長さとAからの高さを指定。
  • 42辺長さと高さ指定。Bの長さとBからの高さを指定。
nVertex
使用している頂点が何番目か。
a
Aの辺の長さ。
b
Bの辺の長さ。
c
Cの辺の長さ。
h
三角形のタイプが、高さ指定するタイプの場合、高さ。

使用例

// 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);

// 敷地情報を取得
unsigned short uCount = m_MadoriDoc->GetSitePoints();

if(uCount == 0){
	// エラー
	return;
}
uCount -= 2;

SITETRIANGLE * pData = new SITETRIANGLE[uCount];
m_MadoriDoc->GetSiteTriangle(pData);
for(unsigned short u = 0; u < uCount; ++u)
{
	// なんか処理
}
delete [] pData;
// JavaScript sample
function SITETRIANGLE(type, v0, v1, v2, a, b, c, h){
	this.uType = type;
	this.nVertex = [v0, v1, v2];
	this.a = a;
	this.b = b;
	this.c = c;
	this.h = h;
}

var doc = new CMadoriDoc();
var num = doc.GetSitePoints() - 2;
var data = new Array(num);
var i;
for(i = 0; i < num; ++i){
	data[i] = new SITETRIANGLE(0,0,0,0,0,0,0,0);
}
doc.GetSiteTriangle(data);
for(i = 0; i < num; ++i){
	var msg = "type:" + data[i].uType + 
		" nVertex0:" + data[i].nVertex[0] + 
		" nVertex1:" + data[i].nVertex[1] + 
		" nVertex2:" + data[i].nVertex[2] + 
		" a:" + data[i].a  + " b:" + data[i].b  + " c:" + data[i].c;
	alert(msg);
}