Сообщество программистов Autodesk в СНГ

ADN Club => Civil 3D API => Тема начата: alsh от 19-05-2021, 12:34:01

Название: Как изменить текст в Sample Line?
Отправлено: alsh от 19-05-2021, 12:34:01
Добрый день.
В справке дан пример как изменить линию Sample line
Код - C# [Выбрать]
  1. ObjectId sampleLineStyleId = _civildoc.Styles.SampleLineStyles.Add("New SampleLine Style");
  2. SampleLineStyle sampleLineStyle = ts.GetObject(sampleLineStyleId, OpenMode.ForWrite) as SampleLineStyle;
  3. // Display lines in violet
  4. sampleLineStyle.GetDisplayStylePlan(SampleLineDisplayStyleType.Lines).Color = Color.FromColorIndex(ColorMethod.ByAci, 200);
  5. sampleLineStyle.GetDisplayStyleModel(SampleLineDisplayStyleType.Lines).Color = Color.FromColorIndex(ColorMethod.ByAci, 200);
А как изменить текст, скажем по Sample line name вместо Sample line Raw station?
В сивиле это делается через Edit Sample lines labels in Group.
то есть через SampleLineLabelGroup ?
Спасибо заранее.
Название: Re: Как изменить текст в Sample Line?
Отправлено: Александр Ривилис от 19-05-2021, 21:26:53
Посмотри это описание: http://docs.autodesk.com/CIV3D/2014/ENU/Developers_Guide/index.html?url=files/GUID-C7A2534B-0BE3-4032-BC39-989358A50C6C.htm,topicNumber=d30e17879
Возможно это то, что ты ищешь.
Название: Re: Как изменить текст в Sample Line?
Отправлено: alsh от 20-05-2021, 11:38:24
Нашел  :)
 
Код - C# [Выбрать]
  1. foreach(ObjectId oid in alignment.GetSampleLineGroupIds())
  2. ...
  3. ObjectIdCollection idColl = Autodesk.Civil.DatabaseServices.SampleLineLabelGroup.GetAvailableLabelGroupIds(oid);
  4.  foreach (ObjectId sId in idColl)
  5. {
  6.                         SampleLineLabelGroup sg = trans.GetObject(sId, OpenMode.ForWrite) as SampleLineLabelGroup;                        
  7.                         IList<LabelGroupSubEntity> labels = sg.SubEntities;
  8.                         foreach (LabelGroupSubEntity label in labels)
  9.                         {
  10.                            ObjectIdCollection componentIDs = label.GetTextComponentIds();
  11.  
  12.                             foreach (ObjectId componentID in componentIDs)
  13.                             {
  14.                                LabelStyleTextComponent component = (LabelStyleTextComponent)trans.GetObject(componentID, OpenMode.ForRead);
  15.                                label.SetTextComponentOverride(componentID, test_str);
  16.                             }
  17.                        }
  18. }