a week ago
- last edited
a week ago
by
Laszlo Nagy
I'm programing on ArchiCAD27/VisualStudio C++2019/Windows10.
But my function can not create layer
GSErrCode CreateLayer(GS::UniString layer_name, API_Attribute* attr) {
BNZeroMemory(attr, sizeof(API_Attribute));
attr->header.typeID = API_LayerID;
attr->header.uniStringNamePtr = &layer_name;
GS::UniString title = u8"Create Layer";
GSErrCode res = ACAPI_Attribute_Create(attr, nullptr); //1)
if (res == APIERR_NEEDSUNDOSCOPE) {
res = ACAPI_CallUndoableCommand(title, [&]()->GSErrCode {
return(ACAPI_Attribute_Create(attr, nullptr));
});
}
return(res);
}
1) res == -213031231 meaning
APIERR_NOTSUPPORTED
why i cannot create layer ?
Solved! Go to Solution.
a week ago
Hi,
Are you using a demo version or full version of ArchiCAD? Can you show us how you are calling your function? I was able to call your function successfully and create a layer using;
GS::ErrCode err = NoError;
API_Attribute myAttribute = {};
err = CreateLayer("A TEST LAYER", &myAttribute);
ACAPI_WriteReport("CreateLayer returned error [%ld]", false, err);
Also, creating an attribute / layer is non-undoable, so doesn't need the undo fallback code.
Hope this helps.
Danny
a week ago
Hi,
Are you using a demo version or full version of ArchiCAD? Can you show us how you are calling your function? I was able to call your function successfully and create a layer using;
GS::ErrCode err = NoError;
API_Attribute myAttribute = {};
err = CreateLayer("A TEST LAYER", &myAttribute);
ACAPI_WriteReport("CreateLayer returned error [%ld]", false, err);
Also, creating an attribute / layer is non-undoable, so doesn't need the undo fallback code.
Hope this helps.
Danny
a week ago
Thank you.
I success [CreateLayer]
My ArchiCAD is not DEMO version.
I think on our result.
My Error Reason is that [Create Layer] is on Constructor in Global Variables.
CreateLayer() move to oter function from Constructor.
===== Addon.cpp
class MainData {
public:
MainData() {
...
CreateLayer(...);
...
}
};
MainData mMaindata;
----Addon's Functions
....
================
Error
Start ArchiCAD27 execute constructor of mMainData before [New Project] or [Load Project].
-->constructor of mMainData
-> CreateLayer() Error
->after [New Project] or [Load Project].
-->on Select Addon Menu
-->call CreateLayer() on button
-> CreateLayer() Error
//----Success Pattern
class MainData {
public:
MainData() {
...
// CreateLayer(...);
...
}
void Go() {
CreateLayer(...);
}
};
MainData mMaindata;
And
On Addon - Menu Click
mMainData.go();