Learn to manage BIM workflows and create professional Archicad templates with the BIM Manager Program.
2005-10-12
08:51 PM
- last edited on
2023-08-07
11:33 AM
by
Doreena Deng
2005-10-13 03:18 AM
2005-10-14 07:05 PM
2005-10-19 03:23 AM
2005-10-20 02:18 PM
API_ParamOwnerType paramOwner; API_ChangeParamType chgParam; API_GetParamsType getParams; API_Element element, mask; API_ElementMemo memo; GSErrCode err, err2; BNZeroMemory (¶mOwner, sizeof (API_ParamOwnerType)); paramOwner.libInd = 0; // no library part paramOwner.typeID = API_WindowID; // window element paramOwner.index = 0; // element default BNZeroMemory (&getParams, sizeof (APIAny_GetActParametersID)); err = ACAPI_Goodies (APIAny_OpenParametersID, ¶mOwner, NULL); if (!err) { BNZeroMemory (&chgParam, sizeof (API_ChangeParamType)); err = ACAPI_Goodies (APIAny_GetActParametersID, &getParams, NULL); if (!err) { chgParam.index = 0; // junk parameter for testing CHCopyC ("A", chgParam.name); chgParam.realValue = 2.1; // what I actually want to change //CHCopyC ("gs_detlevel_3D", chgParam.name); // chgParam.strValue = "Off"; err2 = ACAPI_Goodies (APIAny_ChangeAParameterID, &chgParam, NULL); if (!err2){ err = ACAPI_Goodies (APIAny_GetActParametersID, &getParams, NULL); if (!err){ WriteReport_Err("APIAny_GetActParametersID successful: ", err); }else{ WriteReport_Err("APIAny_GetActParametersID error: ", err); } WriteReport_Err("ACAPI_Goodies (APIAny_ChangeAParameterID) successful: ", err2); }else{ WriteReport_Err("ACAPI_Goodies (APIAny_ChangeAParameterID) error: ", err2); } }else { WriteReport_Err("ACAPI_Goodies (APIAny_OpenParametersID) error: ", err); } ACAPI_Goodies (APIAny_CloseParametersID, NULL, NULL); WriteReport_Err("APIAny_OpenParametersID successful: ", err); }else { WriteReport_Err("APIAny_OpenParametersID error: ", err); } if (!err) { // If typeID = Window BNZeroMemory (&element, sizeof (API_Element)); BNZeroMemory (&memo, sizeof (API_ElementMemo)); element.header.typeID = API_WindowID; element.window.width = 1.2; element.window.height = 2.1; ACAPI_ELEMENT_MASK_CLEAR (mask); ACAPI_ELEMENT_MASK_SET (mask, API_WindowType, width); ACAPI_ELEMENT_MASK_SET (mask, API_WindowType, height); memo.params = getParams.params; err2 = ACAPI_Element_ChangeParameters (elemHead, elemCount, &element, &memo, &mask); if (!err2){ WriteReport_Err("ACAPI_Element_ChangeParameters successful: ", err2); }else{ WriteReport_Err("ACAPI_Element_ChangeParameters error: ", err2); } WriteReport_Err("ACAPI_Goodies (APIAny_ChangeAParameterID) successful: ", err); }else{ WriteReport_Err("ACAPI_Goodies (APIAny_ChangeAParameterID) error:: ", err); }Is there anything you (or anyone else) see that is wrong?
2005-10-20 02:20 PM
Demo layer is on Existing layer is on Window #14 Selected element is a Window Element is set to existing APIAny_GetActParametersID successful: : 0 ACAPI_Goodies (APIAny_ChangeAParameterID) successful: : 0 APIAny_OpenParametersID successful: : 0 ACAPI_Element_ChangeParameters successful: : 0 ACAPI_Goodies (APIAny_ChangeAParameterID) successful: : 0
2005-10-21 05:02 AM
2005-10-27 07:17 PM
TomWaltz wrote:Can you clarify what you are trying to do here? Your opening question suggests you are trying to modify a selected element, but this code would modify the default settings for placing a new Window element (you only specify the typeID and not the index of a specific element. Is that what you want? Take a look at the API documentation on the type API_ParamOwnerType for more information on this.
I was experimenting with two different ideas: changing the "A" value of the object and changing the "width" and "height" of the window. Neither approach seemed to work.API_ParamOwnerType paramOwner; BNZeroMemory (¶mOwner, sizeof (API_ParamOwnerType)); paramOwner.libInd = 0; // no library part paramOwner.typeID = API_WindowID; // window element paramOwner.index = 0; // element default
TomWaltz wrote:There is a type mismatch here - getParams is the type API_GetParamsType, but you zero it using the size of APIAny_GetActParametersID. You could also write:API_GetParamsType getParams; BNZeroMemory (&getParams, sizeof(APIAny_GetActParametersID));
BNZeroMemory (&getParams, sizeof(getParams));
2005-10-27 07:22 PM
Can you clarify what you are trying to do here?Ralph,
2005-10-27 07:38 PM
TomWaltz wrote:In that case, you need to specify the index for each selected window to be changed:
my intention is to change one of the parameters of the selected door or window.
paramOwner.index = <index of a selected window>;