如何使用 fo-dicom 获取 dicom 项目的完整字符串元素?
How to get the full string element of a dicom item with fo-dicom?
我正在尝试使用 fo-dicom 在 dicom 文件中获取一串放射治疗计划。对你来说似乎没有那么难,但我一直坚持,因为我找不到正确的命令。
我正在筛选计划,例如对于 Leaf/Jaw Positions
。 VS 调试模式中显示的字符串值为 "-35//35",我也在我的 DICOM 编辑器中找到它。但是输出只给我值-35。我的代码就像
var Leaf = file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[0].
Get<string>(Dicom.DicomTag.LeafJawPositions);
所以我只得到了提到的第一个值。通过将最后一个 Get<string>()
更改为 Get<Dicom.DicomElement>()
或调试监视中的其他内容,我可以再次看到整个字符串,但无法打印它。
当我在这里查找时 C# Split A String By Another String or Easiest way to split a string on newlines in .NET? 我尝试将代码编辑为
string Leaf = file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[0].
Get<Dicom.DicomElement>(Dicom.DicomTag.LeafJawPositions);
但是 string
无法接受 Dicom.DicomElement
作为字符串并且在最后一行使用 Get<string>()
我只能再次获得剪切的字符串。
希望你能帮忙找出我哪里做错了,以及如何得到这个项目的完整字符串。
从 https://github.com/fo-dicom/fo-dicom/issues/491 开始,他们正在使用新的 API 解决问题,但假设您使用的是旧版本,
string Leaf = String.Join(@"\",
...
Get<string[]>(Dicom.DicomTag.LeafJawPositions));
应该return你所期望的。
PS 我对 Join
使用 string
扩展方法:
public static string Join(this IEnumerable<string> strings, string sep) => String.Join(sep, strings.ToArray());
public static string Join(this IEnumerable<string> strings, char sep) => String.Join(sep.ToString(), strings.ToArray());
我正在尝试使用 fo-dicom 在 dicom 文件中获取一串放射治疗计划。对你来说似乎没有那么难,但我一直坚持,因为我找不到正确的命令。
我正在筛选计划,例如对于 Leaf/Jaw Positions
。 VS 调试模式中显示的字符串值为 "-35//35",我也在我的 DICOM 编辑器中找到它。但是输出只给我值-35。我的代码就像
var Leaf = file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[0].
Get<string>(Dicom.DicomTag.LeafJawPositions);
所以我只得到了提到的第一个值。通过将最后一个 Get<string>()
更改为 Get<Dicom.DicomElement>()
或调试监视中的其他内容,我可以再次看到整个字符串,但无法打印它。
当我在这里查找时 C# Split A String By Another String or Easiest way to split a string on newlines in .NET? 我尝试将代码编辑为
string Leaf = file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0].
Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[0].
Get<Dicom.DicomElement>(Dicom.DicomTag.LeafJawPositions);
但是 string
无法接受 Dicom.DicomElement
作为字符串并且在最后一行使用 Get<string>()
我只能再次获得剪切的字符串。
希望你能帮忙找出我哪里做错了,以及如何得到这个项目的完整字符串。
从 https://github.com/fo-dicom/fo-dicom/issues/491 开始,他们正在使用新的 API 解决问题,但假设您使用的是旧版本,
string Leaf = String.Join(@"\",
...
Get<string[]>(Dicom.DicomTag.LeafJawPositions));
应该return你所期望的。
PS 我对 Join
使用 string
扩展方法:
public static string Join(this IEnumerable<string> strings, string sep) => String.Join(sep, strings.ToArray());
public static string Join(this IEnumerable<string> strings, char sep) => String.Join(sep.ToString(), strings.ToArray());