2017-10-13 27 views
2

私はfo-dicomで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または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>()で私が唯一の取得もう一度文字列をカットします。

あなたが私が間違ったやり方を見つけ出し、このアイテムの完全な文字列を取得する方法を見つけることができます。

答えて

3

https://github.com/fo-dicom/fo-dicom/issues/491から、彼らは新しいAPIの問題を修正していますが、古いリリースを使用していると仮定され、

string Leaf = String.Join(@"\", 
       ... 
       Get<string[]>(Dicom.DicomTag.LeafJawPositions)); 

は、あなたが期待するものを返す必要があります。私はJoinためstring拡張メソッドを使用し

PS:あなたの答えのための

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()); 
+0

感謝。それはとてもうまくいく。 – Booma

関連する問題