Как программно вставить переменную в таблицу исполнений

Автор MasterMVC, 17.07.24, 18:46:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

MasterMVC

Уважаемые знатоки! Внимание вопрос.
Как программно вставить переменную в таблицу исполнений в менеджере документа в 3d модели детали?
Снимок.PNG

p3452

Не прокатит!
- Ваш КОД, "в студию"!
И, к нему, вопросы "по существу"...
Или, милости просим, на другие Форумы имеющие раздел - "Ищу исполнителя"!

MasterMVC

  IKompasDocument3D doc3D = (IKompasDocument3D)kompas7.Documents.Add(DocumentTypeEnum.ksDocumentPart);
  IPart7 parttop = doc3D.TopPart;
  IEmbodimentsManager embodimentsManager = (IEmbodimentsManager)doc3D;
  IVariable7 varB = parttop.AddVariable("B", 45, "");
  IVariable7 varL = parttop.AddVariable("L", 45, "");
  parttop.Update();


  IPropertyMng pm = (IPropertyMng)kompas7;

  IPropertyKeeper _pk = (IPropertyKeeper)parttop;
  IProperty propertyL = null;
  propertyL = pm.AddProperty(doc3D, propertyL);
  propertyL.Name = "L";         
  _pk.InsertHypertextReference((_Property)propertyL, varL, ksHypertextTypeEnum.ksHTVariableValue, false, 0, 2, 0.0);

  propertyL.Update();

  IProperty propertyB = null;
  propertyB = pm.AddProperty(doc3D, propertyB);
  propertyB.Name = "B";
  _pk.InsertHypertextReference((_Property)propertyB, varB, ksHypertextTypeEnum.ksHTVariableValue, false, 0, 2, 0.0);
  propertyB.Update();

  int b = 0;
  foreach (var item in ls)
  {
      if (b != 0)
      {
          embodimentsManager.AddEmbodiment(0, true, "АБВГ." + decimalcls.Decimal, b.ToString(), "");
      }
      b++;
  }
 
  IReport rep = pm.GetReport(doc3D, ksReportTypeEnum.ksRTEmbodimentsReport);
  rep.CurrentStyleIndex = 3;
  rep.Rebuild();

  IReportStyle rs = rep.CurrentReportStyle;
  var rsc1= rs.AddColumn(2, "L", (_Property)propertyL);
  var rsc2 = rs.AddColumn(3, "B", (_Property)propertyB);
  rsc1.Header = "L";
  rsc1.ValueFormat = ksValueFormatEnum.ksVFVariableValue;
  rsc1.Visible = true;
  rsc2.Header = "B";
  rsc2.ValueFormat = ksValueFormatEnum.ksVFVariableValue;
  rsc2.Visible = true;
  rep.Rebuild();

MasterMVC


p3452

Вопрос надо сформулировать по другому
- Как программно выполнить операцию аналогичную ручному добавлению столбцов свойств, в "Менеджере документов" (Гл._меню + Управление + Управление исполнениями)?

Если ЭТО можно сделать через API, то Таблица исполнений, (аналог операции Отчет+Создать_таблицу_исполнений) будет получена через GetReport(...) будет сформированна автоматически!

В противном случае - это "косяк Компас".
Табл_исп 01.png
Табл_исп 02.png
Табл_исп 03.png

MasterMVC


p3452

- Не оценил, не понял - ну и ладно...
Возможно стоит создать отдельную тему по Менеджеру документа (самая сырая, на сегодняшний день поделка разработчиков).
 

p3452

IReport rep = pm.GetReport(doc3D, ksReportTypeEnum.ksRTEmbodimentsReport);
rep.ShowAllObjects = true;
rep.Rebuild();

IReportStyle rs = rep.CurrentReportStyle;
int kolColumns = rs.ColumnsCount;
string propName1 = "L";
string propName2 = "B";
ReportStyleColumn rsc1= rs.AddColumn(kolColumns, propName1, pm.GetProperty(doc3D, propName1));
ReportStyleColumn rsc2 = rs.AddColumn(kolColumns+1, propName2, pm.GetProperty(doc3D, propName2));
rsc1.Header = propName1;
rsc1.ValueFormat = ksValueFormatEnum.ksVFVariableValue;
rsc1.Visible = true;
rsc2.Header = propName2;
rsc2.ValueFormat = ksValueFormatEnum.ksVFVariableValue;
rsc2.Visible = true;
rep.Rebuild();

doc3D.RebuildDocument();
//+ rep.SaveAs(@"..\\rep.cdw")