Archicad二次开发——创建墙、梁、柱等元素

1、创建直线墙

				API_Element     wallElement = {};
				GSErrCode       err;
				wallElement.header.typeID = API_ElemTypeID::API_WallID;
				ACAPI_Element_GetDefaults(&wallElement, nullptr);
				err = ACAPI_CallUndoableCommand("Create Element", [&]() -> GSErrCode {
					wallElement.wall.begC = { 0, 0.0 };
					wallElement.wall.endC = { 0, 2.0 };
					ACAPI_Element_Create(&wallElement, nullptr);
					return NoError;
				});
				if (err==NoError)
				{
					ACAPI_Element_Get(&wallElement);
					MessageBox(ACAPI_GetMainWindow(), APIGuidToString(wallElement.header.guid).ToCStr(), "title", 0);
				}

2、创建曲线墙

API_Element     wallElement = {};
				GSErrCode       err;
				wallElement.header.typeID = API_ElemTypeID::API_WallID;
				ACAPI_Element_GetDefaults(&wallElement, nullptr);
				err = ACAPI_CallUndoableCommand("Create Element", [&]() -> GSErrCode {
					wallElement.wall.begC = { 0, 0.0 };
					wallElement.wall.endC = { 0, 10.0 };
					wallElement.wall.angle = PI/4;
					ACAPI_Element_Create(&wallElement, nullptr);
					return NoError;
				});
				if (err==NoError)
				{
					ACAPI_Element_Get(&wallElement);
					MessageBox(ACAPI_GetMainWindow(), APIGuidToString(wallElement.header.guid).ToCStr(), "title", 0);
				}

3、创建柱子

				API_Coord point;

				if (!ClickAPoint("Click to place column at this position.", &point)) {
					return Error;
				}

				API_Element element;
				API_ElementMemo memo;
				BNClear(element);
				BNClear(memo);

				element.header.typeID = API_ColumnID;
				GSErrCode err = ACAPI_Element_GetDefaults(&element, &memo);

				if (err != NoError) {
					ACAPI_WriteReport("ACAPI_Element_GetDefaults (Column) has failed with error code %ld!", true, err);
					ACAPI_DisposeElemMemoHdls(&memo);
					return Error;
				}

				element.column.origoPos = point;

				err = ACAPI_CallUndoableCommand("Create Element", [&]() -> GSErrCode {
					return ACAPI_Element_Create(&element, &memo);
				});
				if (err != NoError) {
					ACAPI_WriteReport("ACAPI_Element_Create (Column) has failed with error code %ld!", true, err);
				}

				ACAPI_DisposeElemMemoHdls(&memo);
				MessageBox(ACAPI_GetMainWindow(), APIGuidToString(element.header.guid).ToCStr(), "title", 0);

4、创建梁

				API_Element element;
				API_ElementMemo memo;
				BNClear(element);
				BNClear(memo);

				element.header.typeID = API_BeamID;
				GSErrCode err = ACAPI_Element_GetDefaults(&element, &memo);

				if (err != NoError) {
					ACAPI_WriteReport("ACAPI_Element_GetDefaults (Beam) has failed with error code %ld!", true, err);
					ACAPI_DisposeElemMemoHdls(&memo);
					return Error;
				}

				element.beam.begC = { 0,0 };
				element.beam.endC = { 10,0 };
				err = ACAPI_CallUndoableCommand("Create Element", [&]() -> GSErrCode {
					return ACAPI_Element_Create(&element, &memo);
				});
				if (err != NoError) {
					ACAPI_WriteReport("ACAPI_Element_Create (Beam) has failed with error code %ld!", true, err);
				}

				ACAPI_DisposeElemMemoHdls(&memo);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值