木曜日
sitemanager.apx
メニュー → ExtensionsJPN → 建築・延べ床面積集計を開くから起動します。 プロジェクト設定が開かれます。必要に応じて「プロジェクト情報」「表現の上書きセット・ルール」の追加します。 デフォルトでは両方ともに追加に設定されています。 OKを押して次へ進みます。
建築・延べ床面積集計のパレットが表示されます。
建築・延べ床面積集計の設定を開いて、デフォルト設定を行います。
計算精度・端数処理の設定で、長さ、面積、許容パーセント、計画パーセントの小数点と精度を設定します。
建築面積を集計するためのゾーンを作成します。
集計するためには、敷地マネージャーで自動的に作成されるプロパティ「建築面積対象」を使用し、「申請部分」「申請以外の部分」を設定します。
建築面積タブより、建築面積集計の詳細を確認することができます。
タブ内の右上のアイコンを変更すれば、各フロアの表示に変更できます。
延べ床面積を集計するためのゾーンを作成します。
集計するためには敷地マネージャーで自動的に作成されるプロパティ「床面積対象」を使用し、「申請部分」「申請以外の部分」を設定します。
もし減算対象となる場合は「容積不算入区分」のプロパティオプションセットから設定します。また地階不算入を計算する場合は「地階不算入用住宅老人ホーム等の区分」より、住宅または老人ホーム等の部分を設定することで減算面積を算出できます。
用途別の面積集計を行いたい場合は、該当するゾーンに対してプロパティの”用途区分(記号-名称)”のオプションセットを設定します。
延床面積タブより、延床面積集計の詳細を確認することができます。延べ床面積集計を各フロアでの確認や、用途別面積、床面積算入や各床面積区分ごとの面積を表で確認することができます。
用途区分別のボタンをクリックすると用途別の面積を確認できます。
オプション>>プロパティマネージャーから用途区分(記号-名称)を開きます。
このプロパティのオプションセットにはあらかじめサンプルとしていくつかの用途区分が設定されています。
プロジェクトに該当する用途がない場合はご自身で追加が可能です。
オプションセットの設定より、追加で”用途コード-名称”(- ←ハイフン)の通りに入力し追加します。
サンプルで用意されている不要な用途は削除しても問題ありません。
追加した用途のオプションセットを該当のゾーンに設定することでパレットで集計ができます。
容積不算入区分別面積表の右側にあるアイコンを変更しますと、各区分ごとの面積を確認することができます。
未定義の場合でも、仕様により集計がされるようになっています。
容積不算入区分別面積表の右にあるアイコンを切り替えますと、容積不算入区分別の面積リストと縦横マトリクス面積表の表示に切り替えができます。
集計結果より敷地マネージャーで入力した敷地の条件から、敷地面積の合計と建築面積の合計、延床面積の合計、建蔽率や容積率に関わる各項目の計画と許容の結果を確認することができます。
建築・延べ床面積集計起動時に表現の上書き設定の追加をオンにしていますと、ご利用いただける機能です。
表現の上書きから、建築面積対象ゾーンと床面積対象ゾーンのハイライトをしていただくことができます。

建築・延べ床面積集計で入力されたモデルや値から確認申請書に関連する情報を自動でプロジェクト情報に入力します。
メニュー > ファイル > 情報 > プロジェクト情報
建築・延べ床面積集計の設定より、連携プロジェクト情報をテキストとして配置より、敷地マネージャーによって入力されたプロジェクト情報を一括でテキストとして配置することができます。各値は自動テキストで配置されます。
面積は座標法による面積計算となります。
確認申請書に関連する面積値の計算法は以下の通りです。
| 項目 | 端数処理 |
|---|---|
| 第三面7.敷地面積イ敷地面積 | 2以上の用途地域の場合、分かれた各用途地域で端数処理を行う |
| 第三面10.建築面積イ建築物全体 | 1.端数処理されていない各ゾーンを各階毎に集計し、その各階ごとの面積値を端数処理する 2.端数処理された各階ごとの面積集計を全て合計する |
| 第三面10.建築面積ロ建築面積 | 1. 端数処理されていない各ゾーンを各階毎に集計し、その各階ごとの面積値を端数処理する。 2.端数処理された各階ごとの面積集計を全て合計する |
| 建ぺい率按分 | 確認申請書第三面7.敷地面積イ敷地面積の面積値を使用して按分計算を行う |
|
第三面11.延べ面積イ~カ |
1. 端数処理されていない各ゾーンを階、床面積対象プロパティ、容積不算入プロパティ、用途区分プロパティに一致するゾーン毎に集計し、端数処理する 2. 端数処理された各階ごとの面積集計を全て合計する |
| 第三面11.延べ面積ヨ延べ面積 | 確認申請書第三面11.延べ面積イ~カで端数処理された面積集計から算入面積を掛けて(1/5や1/50など)算出し、合計する |
| 容積率按分 | 確認申請書第三面7.敷地面積イ敷地面積の面積値を使用して按分計算を行う |
|
第四面12.床面積 第五面7.用途別床面積 |
端数処理されていない各ゾーンを階、床面積対象プロパティ、容積不算入プロパティ、用途区分プロパティに一致するゾーン毎に集計し、端数処理する |
敷地マネージャーのバージョンを確認します。設定より「バージョンの確認」にて現在インストールされている敷地マネージャーのバージョンを確認できます。
敷地マネージャーで管理している情報を、APIを使用することで外部へ共有・出力することができます。
具体的には以下の例で活用できます。
敷地マネージャー>情報の出力(外部ファイルとして保存)
アドオン間での通信(別のアドオンへ情報を送信)
Python APIからコマンド実行(Pythonで情報を取得)
使用するにはpython環境の準備が必要です。 また、pythonモジュールのPandasおよびdocxのインストールも必須となります。 サンプルのpythonはこちらよりダウンロードできます
Archicadよりpythonパレットを開きます。 オプション >> 作業環境 >> 追加オプション >> 試験機能 >> Pythonパレットを有効化 ウィンドウ >> パレット >> Pythonパレット
ダウンロードしたPythonサンプルの中に以下コンテンツが含まれます。
exportDataTest.py template.docx
これらが含まれているフォルダをPythonパレットでロードしてください。
実行を押しますと、サンプルのエクセルとワードファイルがエクスポートされます。 template.docxの確認申請書に関しては、あくまでもサンプルとなりますので、ご参考までの使用としてご理解ください。
敷地マネージャーから情報を取得し、コンソールへ出力するサンプル
from archicad import ACConnection
import json
def Main():
# connect archicad
conn = ACConnection.connect ()
acc = conn.commands
act = conn.types
# get site manager data
response = acc.ExecuteAddOnCommand (act.AddOnCommandId ('SiteManagerCommand', 'GetSiteManagerData'))
# print data
formatted_json = json.dumps(response, indent=4, ensure_ascii=False)
print(formatted_json)
if __name__ == "__main__":
Main()
{
"敷地面積1": 1691.7,
"用途地域1": "第一種低層住居専用地域",
"規定容積率1": 150,
"規定建蔽率1": 50,
"敷地面積2": 0,
"用途地域2": "",
"規定容積率2": 0,
"規定建蔽率2": 0,
"敷地面積の合計": 1691.7,
"許容容積率": 150,
"許容建蔽率": 50,
"備考": "",
"建蔽率の計算式": "第一種低層住居専用地域:1691.70㎡ × 50.00% = 845.85㎡\r\n",
"容積率の計算式": "第一種低層住居専用地域:1691.70㎡ × 150.00% = 2537.55㎡\r\n",
"前面道路 幅員": 4,
"前面道路 敷地と接している部分の長さ": 0,
"建築面積 建物物全体 (申請部分)": 0,
"建蔽率": 0,
"延べ面積 建物物全体 (申請部分)": 0,
"延べ面積 容積対象 (申請部分)": 0,
"容積率": 0,
"建築面積 建物物全体 (申請以外の部分)": 0,
"延べ面積 建物物全体 (申請以外の部分)": 0,
"建築面積建物物全体 (合計) ": 0,
"延べ面積建物物全体 (合計) ": 0,
"地階の住宅又は老人ホーム等の部分 (申請部分)": 0,
"地階の住宅又は老人ホーム等の部分 (申請以外の部分)": 0,
"地階の住宅又は老人ホーム等の部分 (合計)": 0,
"エレベーターの昇降路の部分 (申請部分)": 0,
"エレベーターの昇降路の部分 (申請以外の部分)": 0,
"エレベーターの昇降路の部分 (合計)": 0,
"共同住宅又は老人ホーム等の共用の廊下等の部分 (申請部分)": 0,
"共同住宅又は老人ホーム等の共用の廊下等の部分 (申請以外の部分)": 0,
"共同住宅又は老人ホーム等の共用の廊下等の部分 (合計)": 0,
"認定機械室等の部分 (申請部分)": 0,
"認定機械室等の部分 (申請以外の部分)": 0,
"認定機械室等の部分 (合計)": 0,
"自動車車庫等の部分 (申請部分)": 0,
"自動車車庫等の部分 (申請以外の部分)": 0,
"自動車車庫等の部分 (合計)": 0,
"備蓄倉庫の部分 (申請部分)": 0,
"備蓄倉庫の部分 (申請以外の部分)": 0,
"備蓄倉庫の部分 (合計)": 0,
"蓄電池の設置部分 (申請部分)": 0,
"蓄電池の設置部分 (申請以外の部分)": 0,
"蓄電池の設置部分 (合計)": 0,
"自家発電設備の設置部分 (申請部分)": 0,
"自家発電設備の設置部分 (申請以外の部分)": 0,
"自家発電設備の設置部分 (合計)": 0,
"貯水槽の設置部分 (申請部分)": 0,
"貯水槽の設置部分 (申請以外の部分)": 0,
"貯水槽の設置部分 (合計)": 0,
"宅配ボックスの設置部分 (申請部分)": 0,
"宅配ボックスの設置部分 (申請以外の部分)": 0,
"宅配ボックスの設置部分 (合計)": 0,
"その他の不算入部分 (申請部分)": 0,
"その他の不算入部分 (申請以外の部分)": 0,
"その他の不算入部分 (合計)": 0,
"住宅の部分 (申請部分)": 0,
"住宅の部分 (申請以外の部分)": 0,
"住宅の部分 (合計)": 0,
"老人ホーム等の部分 (申請部分)": 0,
"老人ホーム等の部分 (申請以外の部分)": 0,
"老人ホーム等の部分 (合計)": 0
}
敷地マネージャーから情報を取得し、レポートへ出力するサンプル 以下のヘッダーファイルをincludeしてください。 ExternalInterface.h
#include "ExternalInterface.h"
// only for debugging
#include "StringConversion.hpp"
// -----------------------------------------------------------------------------
// Site Manager Export
// -----------------------------------------------------------------------------
static void ExportProjectInfo()
{
GS::ObjectState os;
GSErrCode err = SMEXPORT::GetProjectInfo(os);
if (err == NoError)
{
GS::UniString resultStr;
JSON::CreateFromObjectState(os, resultStr, true);
ACAPI_WriteReport(resultStr, false);
}
}
static void ExportVertexInfo()
{
SMEXPORT::SiteVertexInfo vertexInfo;
GSErrCode err = SMEXPORT::GetSiteVertexInfo(vertexInfo);
if (err == NoError)
{
ACAPI_WriteReport(APIGuidToString(vertexInfo.guid), false);
for (const auto& vertex : vertexInfo.coords){
ACAPI_WriteReport(GS::UniString::Printf("Vertex: %f, %f", vertex.x, vertex.y), false);
}
}
}
static void ExportBoundaryInfo()
{
GS::Array<SMEXPORT::SiteBoundaryInfo> boundaryInfo;
GSErrCode err = SMEXPORT::GetSiteBoundaryInfo(boundaryInfo);
if (err == NoError)
{
for (const auto& boundary : boundaryInfo) {
ACAPI_WriteReport("Boundary: " + GS::ValueToUniString(boundary.stVertexIndex) + " " + GS::ValueToUniString(boundary.edVertexIndex) + " " + GS::ValueToUniString((short)boundary.type), false);
}
}
}
static void ExportRoadInfo()
{
SMEXPORT::RoadInfo roadInfo;
GSErrCode err = SMEXPORT::GetRoadInfo(roadInfo);
if (err == NoError)
{
for (const auto& road : roadInfo.roadSegments) {
ACAPI_WriteReport("Road: " + road.guid.ToUniString() + " " + road.name + " " + road.categoryStr, false);
}
ACAPI_WriteReport("distToSpecificRoad: %f" , false, roadInfo.distToSpecificRoad);
}
}
static void ExportAreaBoundaryInfo()
{
SMEXPORT::AreaBoundaryInfo areaBoundaryInfo;
GSErrCode err = SMEXPORT::GetAreaBoundary(areaBoundaryInfo);
if (err == NoError)
{
for (const auto& sect : areaBoundaryInfo.sectors) {
ACAPI_WriteReport(GS::UniString::Printf("Sector: {%f, %f}, {%f, %f}", sect.c1.x, sect.c1.y, sect.c2.x, sect.c2.y), false, false);
}
}
}
static void ExportAreaInfo()
{
GS::Array<SMEXPORT::AreaInfo> areaInfo;
GSErrCode err = SMEXPORT::GetAreaInfo(areaInfo);
if (err == NoError)
{
for (const auto& area : areaInfo)
{
ACAPI_WriteReport("Area: " + area.categoryStr + " " + "%f", false, area.area);
for (const auto& vertex : area.coords)
{
ACAPI_WriteReport(GS::UniString::Printf("Vertex: %f, %f", vertex.x, vertex.y), false);
}
}
}
}