private static Extents3d createChangePlan(List<ChangePanel> chPanels, Point3d ptPlan, ObjectId idBtrFloor, BlockTableRecord btr,Transaction t) { // Вставить блок монтажки var blRefFloor = new BlockReference(ptPlan, idBtrFloor); btr.AppendEntity(blRefFloor); t.AddNewlyCreatedDBObject(blRefFloor, true); // Обвести облачком каждую панель с изменившейся покраской foreach (var chPanel in chPanels) { // Границы монт. панели на монт. плане в координатах Модели. var extMP = chPanel.ExtMountPanel; extMP.TransformBy(blRefFloor.BlockTransform); Point3d ptCloudMin; Point3d ptCloudMax; Point3d ptText; if (chPanel.IsHorizontal) { ptCloudMin = new Point3d(extMP.MinPoint.X + 150, extMP.MinPoint.Y - 150, 0); ptCloudMax = new Point3d(extMP.MaxPoint.X - 150, extMP.MaxPoint.Y + 150, 0); ptText = new Point3d(ptCloudMin.X, ptCloudMin.Y - 100, 0); } else { ptCloudMin = new Point3d(extMP.MinPoint.X - 150, extMP.MinPoint.Y + 150, 0); ptCloudMax = new Point3d(extMP.MaxPoint.X + 150, extMP.MaxPoint.Y - 150, 0); ptText = new Point3d(ptCloudMax.X+100, ptCloudMin.Y+(ptCloudMax.Y-ptCloudMin.Y)*0.5, 0); } var extCloud = new Extents3d(ptCloudMin, ptCloudMax); // Полилиния облака изменения var pl = extCloud.GetPolyline(); var plCloud = getCloudPolyline(pl); plCloud.SetDatabaseDefaults(); plCloud.Color = ColorChange; btr.AppendEntity(plCloud); t.AddNewlyCreatedDBObject(plCloud, true); // Текст изменения MText text = new MText(); text.SetDatabaseDefaults(); text.Color = ColorChange; text.TextHeight = 250; text.Contents = $"Старая марка покраски: {chPanel.PaintOld}, \n\rНовая марка покраски: {chPanel.PaintNew} " + $"\n\rПанель: {chPanel.MarkSb}"; text.Location = ptText; btr.AppendEntity(text); t.AddNewlyCreatedDBObject(text, true); chPanel.PanelMount.SetPaintingToAttr(chPanel.PanelAKR.MarkAr); } // Разбить //blRefFloor.ExplodeToOwnerSpace(); return blRefFloor.GeometricExtents; }
private static Extents3d createChangePlan(List <ChangePanel> chPanels, Point3d ptPlan, ObjectId idBtrFloor, BlockTableRecord btr, Transaction t) { // Вставить блок монтажки var blRefFloor = new BlockReference(ptPlan, idBtrFloor); btr.AppendEntity(blRefFloor); t.AddNewlyCreatedDBObject(blRefFloor, true); // Обвести облачком каждую панель с изменившейся покраской foreach (var chPanel in chPanels) { // Границы монт. панели на монт. плане в координатах Модели. var extMP = chPanel.ExtMountPanel; extMP.TransformBy(blRefFloor.BlockTransform); Point3d ptCloudMin; Point3d ptCloudMax; Point3d ptText; if (chPanel.IsHorizontal) { ptCloudMin = new Point3d(extMP.MinPoint.X + 150, extMP.MinPoint.Y - 150, 0); ptCloudMax = new Point3d(extMP.MaxPoint.X - 150, extMP.MaxPoint.Y + 150, 0); ptText = new Point3d(ptCloudMin.X, ptCloudMin.Y - 100, 0); } else { ptCloudMin = new Point3d(extMP.MinPoint.X - 150, extMP.MinPoint.Y + 150, 0); ptCloudMax = new Point3d(extMP.MaxPoint.X + 150, extMP.MaxPoint.Y - 150, 0); ptText = new Point3d(ptCloudMax.X + 100, ptCloudMin.Y + (ptCloudMax.Y - ptCloudMin.Y) * 0.5, 0); } var extCloud = new Extents3d(ptCloudMin, ptCloudMax); // Полилиния облака изменения var pl = extCloud.GetPolyline(); var plCloud = getCloudPolyline(pl); plCloud.SetDatabaseDefaults(); plCloud.Color = ColorChange; btr.AppendEntity(plCloud); t.AddNewlyCreatedDBObject(plCloud, true); // Текст изменения MText text = new MText(); text.SetDatabaseDefaults(); text.Color = ColorChange; text.TextHeight = 250; text.Contents = $"Старая марка покраски: {chPanel.PaintOld}, \n\rНовая марка покраски: {chPanel.PaintNew} " + $"\n\rПанель: {chPanel.MarkSb}"; text.Location = ptText; btr.AppendEntity(text); t.AddNewlyCreatedDBObject(text, true); chPanel.PanelMount.SetPaintingToAttr(chPanel.PanelAKR.MarkAr); } // Разбить //blRefFloor.ExplodeToOwnerSpace(); return(blRefFloor.GeometricExtents); }