public Bitmap GenerateCaseImage(Packable content, int number, CaseAlignement caseAlignment) { Graphics2DImage graphics = new Graphics2DImage(ImageSize); graphics.SetViewport(PtMin - new Vector2D(0.5f, 0.5f), PtMax + new Vector2D(0.5, 0.5)); graphics.MarginRatio = 0.0f; double length = 0.0, width = 0.0; if (content is PackableBrick packable) { length = packable.Length; width = packable.Width; } uint pickId = 0; for (int i = 0; i < number; ++i) { Vector3D v = Vector3D.Zero; switch (caseAlignment) { case CaseAlignement.SHARING_LENGTH: v = new Vector3D(0.0, i * width, 0.0); break; case CaseAlignement.SHARING_WIDTH: v = new Vector3D(i * length, 0.0, 0.0); break; default: break; } Box b; if (content is PackProperties pack) { b = new Pack(pickId++, pack, new BoxPosition(v)); } else if (content is PackableBrick brick) { b = new Box(pickId++, brick, new BoxPosition(v)) { ShowOrientationMark = true } } ; else { return(null); } b.Draw(graphics); } return(graphics.Bitmap); }
public static void GenerateDefaultCaseImage(Vector3D dimCase, Size imgSize, int number, CaseAlignement caseAlignment, string filename) { Size imgSizeTotal = new Size(); Vector2D ptMin = Vector2D.Zero; Vector2D ptMax = Vector2D.Zero; switch (caseAlignment) { case CaseAlignement.SHARING_LENGTH: imgSizeTotal = new Size(imgSize.Width, number * imgSize.Height); ptMax = new Vector2D(dimCase.X, number * dimCase.Y); break; case CaseAlignement.SHARING_WIDTH: imgSizeTotal = new Size(imgSize.Width * number, imgSize.Height); ptMax = new Vector2D(number * dimCase.X, dimCase.Y); break; default: break; } var bProperties = new BoxProperties(null, dimCase.X, dimCase.Y, dimCase.Z) { TapeWidth = new treeDiM.Basics.OptDouble(true, 50.0), TapeColor = Color.Tan }; bProperties.SetAllColors(Enumerable.Repeat(Color.Beige, 6).ToArray()); MultiCaseImageGenerator imageGenerator = new MultiCaseImageGenerator(imgSizeTotal, ptMin, ptMax); Bitmap bmp = imageGenerator.GenerateCaseImage(bProperties, number, caseAlignment); bmp.Save(filename); }