要在DWG文件中映射文本表,我创建了字典。
我加载了文本数据,并为每一列制作了字典。
我想制作一个合并每列的新字典。
制作每列的字典时,该字典按顺序排序。 我只想组装每一列以制作一个新的表字典。
如果您有更简单的文本映射方法,请发表评论。
此图显示了问题:
// make a dictionary of text in the table
if ((vText.Point1.X <= xBoundaryEnd) && (vText.Point.X >= xBoundaryStart) && (vText.Point1.Y <= yBoundaryEnd) && (vText.Point.Y >= yBoundaryStart)){
bomTextDictionary.Add(vText.Handle,
new textDataType
{
text = vText.UnicodeText,
refPointX = vText.Point1.X,
refPointY = vText.Point1.Y
});
}
// first column of table (number) dictionay by distingushing vertical line from the bomTextDictionary.
var numberDict = bomTextDictionary.Where(x => x.Value.refPointX >= verticalLineDictionary.ElementAt(0).Value.xStart && x.Value.refPointX <= verticalLineDictionary.ElementAt(1).Value.xStart)
.ToDictionary(text => text.Key, text => text.Value.text);
答案 0 :(得分:1)
您可以创建一个模型类来存储列(例如名称,数量,零件,工程图),然后将字典与模型一起使用。
示例:
public class TableDWG
{
public int Key { get; set; }
public string Name { get; set; }
public int Quantity { get; set; }
public string Part { get; set; }
public string Drawing { get; set; }
public TableDWG() { }
public TableDWG(int key, string name, int quatity, string part, string drawing)
{
Key = key;
Name = name;
Quantity = quatity;
Part = part;
Drawing = drawing;
}
}
然后您执行此操作:
IDictionary<int, TableDWG> table = new Dictionary<int, TableDWG>
{
// you can do this
{ 1, new TableDWG(1, "something", 5, "part", "drawing") },
{ 2, new TableDWG(2, "something2", 2, "part2", "drawing2") },
// OR this
{3, new TableDWG()
{
Key = 3,
Name = "Something3",
Quantity = 1,
Part = "Part 3",
Drawing = "Drwaing 3"
} }
};
这只是一个如何在一个字典中存储多列的示例,还有其他方法,但这是更简单的方法。在模型中。