パラメータを変更したオブジェクトを配置する

 

パラメータを変更したオブジェクトを配置する

説明

オブジェクトのパラメータを変更して新しく要素を作成する方法を紹介します

オブジェクトのGUIDを確認する方法

  • 「ウインドウ」>「ツールバー」>「GDLライブラリ部品を編集」>「サブタイプ階層」を選択
  • GUIDを確認したいライブラリ部品を選択

GSErrCode CreateObject(const API_Coord& orig)
{
	GSErrCode err = NoError;

	// Search Libpart by guid
	API_LibPart     libpart = {};
	libpart.typeID = APILib_ObjectID;

	// set libpart guid
	strcpy(libpart.ownUnID, "{3643A7FB-4199-40ED-A1AE-21EAD40EBC76}-{1EC89349-6A10-4FE7-9F9D-6CF57CD38328}");
	err = ACAPI_LibPart_Search(&libpart, false);
	if (err != NoError) {
		return err;
	}


	API_ParamOwnerType   paramOwner = {};
	API_ChangeParamType  chgParam = {};
	API_GetParamsType    getParams = {};

	// Change parameter values
	paramOwner.libInd = libpart.index;
	paramOwner.typeID = API_ObjectID;
	paramOwner.guid = APINULLGuid;

	err = ACAPI_Goodies(APIAny_OpenParametersID, &paramOwner, NULL);
	if (err == NoError) {

		err = ACAPI_Goodies(APIAny_GetActParametersID, &getParams, NULL);
		if (err == NoError) {
			CHCopyC("A", chgParam.name);
			chgParam.realValue = 1.8;
			err = ACAPI_Goodies(APIAny_ChangeAParameterID, &chgParam, NULL);

			chgParam = {};
			CHCopyC("gs_bFrontPanel", chgParam.name);
			chgParam.realValue = 1;
			err = ACAPI_Goodies(APIAny_ChangeAParameterID, &chgParam, NULL);
			if (err == NoError)
				err = ACAPI_Goodies(APIAny_GetActParametersID, &getParams, NULL);
		}

		ACAPI_Goodies(APIAny_CloseParametersID, NULL, NULL);
	}

	if (err != NoError) {
		return err;
	}


	// Get default object settings
	API_Element     element = {};
	API_ElementMemo memo = {};
	element.header.typeID = API_ObjectID;
	err = ACAPI_Element_GetDefaults(&element, &memo);
	if (err != NoError) {
		return err;
	}

	// Set new value
	memo.params = getParams.params;
	element.object.libInd = libpart.index;
	element.object.xRatio = getParams.a;
	element.object.yRatio = getParams.b;
	element.object.pos = orig;


	// Create an object
	ACAPI_CallUndoableCommand(GS::UniString("Create an Object"), [&]() -> GSErrCode {
			return ACAPI_Element_Create(&element, &memo);
	});

	ACAPI_DisposeElemMemoHdls(&memo);

	return err;
}