License delivery maintenance is planned for Saturday, July 26, between 12:00 and 20:00 CEST. During this time, you may experience outages or limited availability across our services, including BIMcloud SaaS, License Delivery, Graphisoft ID (for customer and company management), Graphisoft Store, and BIMx Web Viewer. More details…
2019-01-11
12:08 PM
- last edited on
2022-10-04
04:43 PM
by
Daniel Kassai
GSErrCode Dimension_MoveTextToCenter(API_Guid& i_guid) { API_ElementMemo memo; BNZeroMemory(&memo, sizeof(memo)); GSErrCode err = ACAPI_Element_GetMemo(i_guid, &memo, APIMemoMask_AdditionalPolygon); if (err != NoError) DBGPrintlnf("[" __FUNC__ "] ERROR %s - ACAPI_Element_GetMemo(APIMemoMask_AdditionalPolygon)", ErrId2Name(err)); else { bool hasChanges = false; const UInt32 nDimElem = BMGetHandleSize((GSHandle)memo.dimElems) / sizeof(API_DimElem); for (UInt32 d = 1; d < nDimElem; ++d) { auto& dimElem = (*memo.dimElems); if (dimElem.dimVal == 0) continue; auto& dimElemPrev = (*memo.dimElems)[d - 1]; if (!Dimension_MoveTextToCenter(dimElem.note, dimElem.pos, dimElemPrev.pos)) continue; double length = 0; const GSErrCode err = Any_GetTextLineLength(dimElem.note, length); if (err != NoError) { DBGPrintlnf("[Error] %s " __FUNC__ " - ACAPI_Goodies(APIAny_GetTextLineLengthID)", ErrId2Name(err)); break; } API_Coord pos; pos.x = (dimElem.pos.x + dimElemPrev.pos.x) / 2; pos.y = (dimElem.pos.y + dimElemPrev.pos.y) / 2; if (dimElem.note.noteAngle != 0) RotatePoint(pos, -dimElem.note.noteAngle); pos.x -= (length / 2); pos.y += (GetDrawingScale() / 2) / 1000; if (dimElem.note.noteAngle != 0) RotatePoint(pos, dimElem.note.noteAngle); dimElem.note.pos = pos; dimElem.note.fixPos = true; hasChanges = true; } if (err == NoError && hasChanges) { ACAPI_CallUndoableCommand("Change Memo", [&]() -> GSErrCode { err = ACAPI_Element_ChangeMemo(i_guid, APIMemoMask_AdditionalPolygon, &memo); return NoError; }); if (err == NoError) DBGPrintlnf("[" __FUNC__ "] SUCCESS ACAPI_Element_ChangeMemo"); else DBGPrintlnf("[Error] %s " __FUNC__ " - ACAPI_Element_ChangeMemo()", ErrId2Name(err)); } } ACAPI_DisposeElemMemoHdls(&memo); return err; }
Solved! Go to Solution.
2019-02-04 05:37 PM
2019-01-30 06:44 PM
2019-02-01 04:08 AM
sznagy wrote:that was ArchiCAD 22 3006 INT FULL
Hello,
Could you specify the version of ArchiCAD you are using?
2019-02-04 05:37 PM
2019-02-13 06:17 AM
sznagy wrote:Thank you, and yes it is important as we are creating lots of dimensions and it will be quite a hassle for our users to turn each back on manually.
Yes, it is indeed a bug. I made an entry for it. Let me know if this is a great deal for the project, and we will do our best to fix it.