Nicht ganz so einfach wie man es sich vorstellt, ist das arbeiten mit Platzhaltern.
Vielen Dank an Fritz für die Zusendung. Ich hab mal die Helperklassen erweitert.
using System.Collections.Generic; using System.Linq; using Eplan.EplApi.DataModel; using Eplan.EplApi.DataModel.Graphics; namespace Suplanus.Sepla.Helper { public class PlaceHolderUtility { /// <summary> /// Apply a record to placeholder by name /// </summary> /// <param name="placeHolders"></param> /// <param name="placeHolderName"></param> /// <param name="recordName"></param> /// <returns></returns> public bool ApplyRecord(PlaceHolder[] placeHolders, string placeHolderName, string recordName) { List<PlaceHolder> foundPlaceHolder = placeHolders .Where(placeHolder => placeHolder.Name.Equals(placeHolderName)) // name .Where(placeHolder => placeHolder.FindRecord(recordName) != -1) // record .ToList(); using (Transaction transaction = new TransactionManager().CreateTransaction()) { foreach (PlaceHolder placeHolder in foundPlaceHolder) { placeHolder.ApplyRecord(recordName, true); // apply (with page data) transaction.Commit(); // needed if not placed in project } } return foundPlaceHolder.Any(); // true == found | false == not found } /// <summary> /// Create a record to a placeHolder by name and apply a record /// </summary> /// <param name="placeHolders"></param> /// <param name="placeHolderName"></param> /// <param name="recordName"></param> /// <param name="variableName"></param> /// <param name="value"></param> /// <returns></returns> public bool CreateRecordWithValueAndApply(PlaceHolder[] placeHolders, string placeHolderName, string recordName, string variableName, string value) { List<PlaceHolder> foundPlaceHolder = placeHolders .Where(placeHolder => placeHolder.Name.Equals(placeHolderName)) // name .ToList(); foreach (PlaceHolder placeHolder in foundPlaceHolder) { placeHolder.AddRecord(recordName); placeHolder.set_Value(recordName, variableName, value); using (Transaction transaction = new TransactionManager().CreateTransaction()) { placeHolder.ApplyRecord(recordName, true); // apply (with page data) transaction.Commit(); // needed if not placed in project } } return foundPlaceHolder.Any(); // true == found | false == not found } } }
Hinterlasse einen Kommentar