/// <summary> /// обратить бергштрихи у полилинии /// Должна быть запущена транзакция!!! /// </summary> public void ReverseIsoline() { using (var curve = IdCurve.GetObject(OpenMode.ForWrite, false, true) as Curve) { ResultBuffer rb = curve.GetXDataForApplication(RegAppNAME); if (rb != null) { var data = rb.AsArray(); bool isFound = false; for (int i = 0; i < data.Length; i++) { var tv = data[i]; if (tv.TypeCode == (short)DxfCode.ExtendedDataInteger16) { data[i] = new TypedValue((int)DxfCode.ExtendedDataInteger16, IsNegate ? 0 : 1); IsNegate = !IsNegate; isFound = true; break; } } if (isFound) { using (ResultBuffer rbNew = new ResultBuffer(data)) { curve.XData = rbNew; } } } } }
/// <summary> /// Включение/отключение бергштрихов для полилинии - запись xdata /// Должна быть запущена транзакция!!! /// </summary> private void Activate(bool activate) { using (var curve = IdCurve.GetObject(OpenMode.ForRead, false, true) as Curve) { //ResultBuffer rb = curve.GetXDataForApplication(RegAppNAME); ResultBuffer rb; if (activate) { rb = new ResultBuffer(new TypedValue(1001, RegAppNAME), // 0 - прямой штрих, 1 - обратный new TypedValue((int)DxfCode.ExtendedDataInteger16, 0), // 0 - изолиния, 1 - бергштрих new TypedValue((int)DxfCode.ExtendedDataInteger16, 0) ); } else { rb = new ResultBuffer(new TypedValue(1001, RegAppNAME)); } curve.UpgradeOpen(); curve.XData = rb; } }