aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2023-05-04 08:02:57 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2023-05-04 08:02:57 +0300
commitb37dade3701765153edfb114fca862ca3f51029f (patch)
treefd86d44ef0e3e3ee62f2f3d52afa4db4ad0372e6
parent46db5452c81d5225e4ec754855df50526ec0f283 (diff)
Fill products as Text not Attributes
-rw-r--r--RhSolutions.AddIn/Services/DxfWriter.cs111
1 files changed, 46 insertions, 65 deletions
diff --git a/RhSolutions.AddIn/Services/DxfWriter.cs b/RhSolutions.AddIn/Services/DxfWriter.cs
index 85fe983..d8ed26a 100644
--- a/RhSolutions.AddIn/Services/DxfWriter.cs
+++ b/RhSolutions.AddIn/Services/DxfWriter.cs
@@ -29,6 +29,47 @@ public class DxfWriter : IWriter
WriteProducts(new[] { (string.Empty, products) });
}
+ private IEnumerable<EntityObject> WriteRow(int x, int y, Product product, double amount)
+ {
+ string measure = product.ProductMeasure switch
+ {
+ Measure.Kg => "кг",
+ Measure.M => "м",
+ Measure.M2 => "м2",
+ Measure.P => "шт",
+ _ => string.Empty
+ };
+
+ return new[]
+ {
+ new Text(product.Name, new Vector2(x + 4180, y), 250)
+ {
+ Alignment = TextAlignment.MiddleLeft,
+ WidthFactor = 0.85
+ },
+ new Text(product.ProductSku, new Vector2(x + 24750, y), 250)
+ {
+ Alignment = TextAlignment.MiddleCenter,
+ WidthFactor = 0.85
+ },
+ new Text("«РЕХАУ»", new Vector2(x + 28750, y), 250)
+ {
+ Alignment = TextAlignment.MiddleCenter,
+ WidthFactor = 0.85
+ },
+ new Text(measure, new Vector2(x + 32000, y), 250)
+ {
+ Alignment = TextAlignment.MiddleCenter,
+ WidthFactor = 0.85
+ },
+ new Text(amount.ToString(), new Vector2(x + 34000, y), 250)
+ {
+ Alignment = TextAlignment.MiddleCenter,
+ WidthFactor = 0.85
+ }
+ };
+ }
+
public void WriteProducts(IEnumerable<(string, Dictionary<Product, double>)> products)
{
productDict = products.First().Item2;
@@ -39,6 +80,8 @@ public class DxfWriter : IWriter
for (int i = 0; i < tablesCount; i++)
{
+ int x = i * 43000;
+
var insertion = new Insert(tableBlock, new Vector2(tablePosition, 0))
{
Layer = doc.Layers["Таблицы"]
@@ -48,30 +91,8 @@ public class DxfWriter : IWriter
for (int row = 0; row < 27 && i * 27 + row < pArray.Length; row++)
{
- insertion.Attributes.AttributeWithTag($"Name{row}").Value = pArray[i * 27 + row].Name.Replace("\n", " ");
- insertion.Attributes.AttributeWithTag($"ProductSku{row}").Value = pArray[i * 27 + row].ProductSku;
- insertion.Attributes.AttributeWithTag($"Rh{row}").Value = "«РЕХАУ»";
- insertion.Attributes.AttributeWithTag($"Amount{row}").Value = productDict[pArray[i * 27 + row]].ToString();
-
- string measure = string.Empty;
- switch (pArray[i * 27 + row].ProductMeasure)
- {
- case Measure.Kg:
- measure = "кг";
- break;
- case Measure.M:
- measure = "м";
- break;
- case Measure.M2:
- measure = "м2";
- break;
- case Measure.P:
- measure = "шт";
- break;
- default:
- break;
- }
- insertion.Attributes.AttributeWithTag($"Measure{row}").Value = measure;
+ int y = 25400 - row * 800;
+ doc.Entities.Add(WriteRow(x, y, pArray[i * 27 + row], productDict[pArray[i * 27 + row]]));
}
insertion.Attributes.AttributeWithTag("Sheet").Value = (i + 1).ToString();
@@ -428,47 +449,6 @@ public class DxfWriter : IWriter
Block block = new("Таблица спецификации", entities);
- y = 25400;
- for (int i = 0; i < 27; i++)
- {
- block.AttributeDefinitions.Add(new AttributeDefinition($"Name{i}")
- {
- Position = new Vector3(4180, y, 0),
- Alignment = TextAlignment.MiddleLeft,
- WidthFactor = 0.85,
- Height = 250
- });
- block.AttributeDefinitions.Add(new AttributeDefinition($"ProductSku{i}")
- {
- Position = new Vector3(24750, y, 0),
- Alignment = TextAlignment.MiddleCenter,
- WidthFactor = 0.85,
- Height = 250
- });
- block.AttributeDefinitions.Add(new AttributeDefinition($"Rh{i}")
- {
- Position = new Vector3(28750, y, 0),
- Alignment = TextAlignment.MiddleCenter,
- WidthFactor = 0.85,
- Height = 250
- });
- block.AttributeDefinitions.Add(new AttributeDefinition($"Measure{i}")
- {
- Position = new Vector3(32000, y, 0),
- Alignment = TextAlignment.MiddleCenter,
- WidthFactor = 0.85,
- Height = 250
- });
- block.AttributeDefinitions.Add(new AttributeDefinition($"Amount{i}")
- {
- Position = new Vector3(34000, y, 0),
- Alignment = TextAlignment.MiddleCenter,
- WidthFactor = 0.85,
- Height = 250
- });
- y -= 800;
- }
-
block.AttributeDefinitions.Add(new AttributeDefinition($"Sheet")
{
Position = new Vector3(41000, 950, 0),
@@ -480,6 +460,7 @@ public class DxfWriter : IWriter
return block;
}
+
public void Dispose()
{
Process.Start(file);