Прошерстил API Reference вдоль и поперек. Вот, например, настройки таблиц - отдельные свойства для материалов и отдельные для общих объёмов:
Но у группы осей сечений метод только для общих объёмов, для отдельных материалов нет:
Посмотрел у объектов SectionView, SectionViewGroup, SampleLine - у них также нет ничего подобного.
Залез внутрь AeccDbMgd и посмотрел есть ли подходящие внутренние методы - не нашёл.
Попробовал через COM - там вообще мало что есть по сравнению с .NET.
Есть очень старый вопрос на форуме Autodesk от Терно Алексея, но без ответа:
https://forums.autodesk.com/t5/civil-3d-customization/material-data-from-samplelinegroup/td-p/3201344Нашёл ещё код на VB.NET на гитхабе с получением данных из коридора:
https://github.com/Armegedon/ACAD14-Reports/blob/master/Net/Source/C3DReports/Corridor/CorridorSlopeStake_ExtractData.vbТам есть такой кусок:
' material info
If bHaveMaterialInfo Then
sData.HaveMaterialInfo = bHaveMaterialInfo
sData.CutArea = qtoSectionalResult(index).AreaResult.CutArea
sData.FillArea = qtoSectionalResult(index).AreaResult.FillArea
sData.CumulativeNetVolume = qtoSectionalResult(index).VolumeResult.CumulativeCutVolume - qtoSectionalResult(index).VolumeResult.CumulativeFillVolume
End If
Но, насколько я понял, это не то что нужно.
И ещё на португальском отсюда (можете сами перевести гуглтранслейтом):
https://tbn2.blogspot.com/2012/05/Sample Line Group
Dim slg as SampleLineGroup...
Falta um método/função equivalente ao
slg.GetTotalVolumeResultDataForMaterialList
que liste os materiais individualmente
tentei com:
Dim guidMaterialList As System.Guid = slg.GetMappingGuid(materialListName)
Dim guidCorte As System.Guid = slg.GetMaterialGuid(guidMaterialList , "corte")
slg.GetTotalVolumeResultDataForMaterialList(guidCorte)
mas isso dá erro. pois só aceita :
slg.GetTotalVolumeResultDataForMaterialList(guidMaterialList)
o que achei estranho, pois ate onde eu testei, so pode ter um material list na sample line group :
For Each r As Autodesk.Civil.QTO.DatabaseServices.QTOSectionalResult In _
slg.GetTotalVolumeResultDataForMaterialList(guidCorte).GetResultsAlongSampleLines
'como obter a estaca???
Next
a classe QTOSectionalResult não implementa uma forma de devolver a estaca.
em nenhuma das classes do QTO dá pra obter os fatores (Cut, Fill, Refill)
Так что, к моему сожалению, похоже на то, что нет в API инструментов для получения этих данных.
Как крайний вариант, если не найдёте способа получше, можно попробовать взрывать таблицу результатов и искать в полученных текстах нужные данные.