public void CreateBtrPanelFromBase(int i, string[] marks) { // Тест создания определения блока панели по описанию в xml базе. PanelBase panelBase; string testFile = @"c:\temp\test\АКР\Base\Tests\CreateBlockPanelTest\TestCreatePanels.dwg"; //File.Copy(@"c:\Autodesk\AutoCAD\Pik\Settings\Template\АР\АР.dwt", testFile, true); using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { baseService.ClearPanelsAkrFromDrawing(db); baseService.InitToCreationPanels(db); Point3d pt = Point3d.Origin; List <ObjectId> idsBtrPanels = new List <ObjectId>(); // Создание определениц блоков панелей foreach (var mark in marks) { Panel panelXml = baseService.GetPanelXml(mark); panelBase = new PanelBase(panelXml, baseService); panelBase.CreateBlock(); if (!panelBase.IdBtrPanel.IsNull) { idsBtrPanels.Add(panelBase.IdBtrPanel); } } // Вставка вхождениц блоков панелей в модель using (var t = db.TransactionManager.StartTransaction()) { foreach (var idBtrPanel in idsBtrPanels) { var blRefPanel = new BlockReference(pt, idBtrPanel); var ms = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord; ms.AppendEntity(blRefPanel); t.AddNewlyCreatedDBObject(blRefPanel, true); pt = new Point3d(0, pt.Y + 10000, 0); } t.Commit(); } } db.SaveAs(testFile, DwgVersion.Current); } }
public void CreateBtrPanelFromBase(int i, string[] marks) { // Тест создания определения блока панели по описанию в xml базе. PanelBase panelBase; string testFile = @"c:\temp\test\АКР\Base\Tests\CreateBlockPanelTest\TestCreatePanels.dwg"; //File.Copy(@"c:\Autodesk\AutoCAD\Pik\Settings\Template\АР\АР.dwt", testFile, true); using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { baseService.ClearPanelsAkrFromDrawing(db); baseService.InitToCreationPanels(db); Point3d pt = Point3d.Origin; List<ObjectId> idsBtrPanels = new List<ObjectId>(); // Создание определениц блоков панелей foreach (var mark in marks) { Panel panelXml = baseService.GetPanelXml(mark); panelBase = new PanelBase(panelXml, baseService); panelBase.CreateBlock(); if (!panelBase.IdBtrPanel.IsNull) { idsBtrPanels.Add(panelBase.IdBtrPanel); } } // Вставка вхождениц блоков панелей в модель using (var t = db.TransactionManager.StartTransaction()) { foreach (var idBtrPanel in idsBtrPanels) { var blRefPanel = new BlockReference(pt, idBtrPanel); var ms = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord; ms.AppendEntity(blRefPanel); t.AddNewlyCreatedDBObject(blRefPanel, true); pt = new Point3d(0, pt.Y + 10000, 0); } t.Commit(); } } db.SaveAs(testFile, DwgVersion.Current); } }
public void GetAllPlanesTest() { List <FloorArchitect> floorsAr; string testFile = @"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада.dwg"; using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { BaseService baseService = new BaseService(); baseService.InitToCreationPanels(db); floorsAr = FloorArchitect.GetAllPlanes(db, baseService); } db.SaveAs(@"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада-WindowMarks.dwg", DwgVersion.Current); } Assert.AreEqual(floorsAr.Count, 2); }
public void GetAllPlanesTest() { List<FloorArchitect> floorsAr; string testFile = @"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада.dwg"; using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { BaseService baseService = new BaseService(); baseService.InitToCreationPanels(db); floorsAr = FloorArchitect.GetAllPlanes(db, baseService); } db.SaveAs(@"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада-WindowMarks.dwg", DwgVersion.Current); } Assert.AreEqual(floorsAr.Count, 2); }
private void zoomDb(Autodesk.AutoCAD.DatabaseServices.Database db, Extents3d ext) { using (var switcher = new AcadLib.WorkingDatabaseSwitcher(db)) { //db.UpdateExt(true); using (ViewportTable vTab = db.ViewportTableId.GetObject(OpenMode.ForRead) as ViewportTable) { ObjectId acVptId = vTab["*Active"]; using (ViewportTableRecord vpTabRec = acVptId.GetObject(OpenMode.ForWrite) as ViewportTableRecord) { double scrRatio = (vpTabRec.Width / vpTabRec.Height); //Matrix3d matWCS2DCS = Matrix3d.PlaneToWorld(vpTabRec.ViewDirection); //matWCS2DCS = Matrix3d.Displacement(vpTabRec.Target - Point3d.Origin) * matWCS2DCS; //matWCS2DCS = Matrix3d.Rotation(-vpTabRec.ViewTwist, // vpTabRec.ViewDirection, // vpTabRec.Target) // * matWCS2DCS; //matWCS2DCS = matWCS2DCS.Inverse(); //Extents3d extents = new Extents3d(db.Extmin, db.Extmax); //extents.TransformBy(matWCS2DCS); //double width = (extents.MaxPoint.X - extents.MinPoint.X); //double height = (extents.MaxPoint.Y - extents.MinPoint.Y); //Point2d center = new Point2d((extents.MaxPoint.X + extents.MinPoint.X) * 0.5, // (extents.MaxPoint.Y + extents.MinPoint.Y) * 0.5); double width = (ext.MaxPoint.X - ext.MinPoint.X); double height = (ext.MaxPoint.Y - ext.MinPoint.Y); if (width > (height * scrRatio)) { height = width / scrRatio; } vpTabRec.Height = ext.MaxPoint.Y - ext.MinPoint.Y; vpTabRec.Width = height * scrRatio; vpTabRec.CenterPoint = ext.Center().Convert2d(); } } } }
/// <summary> /// Экспорт фасада для АР /// </summary> public void Export() { // Список панелей для экспорта SelectPanels = new SelectionBlocks(); SelectPanels.SelectBlRefsInModel(false); if (SelectPanels.IdsBlRefPanelSb.Count > 0) { Inspector.AddError("В текущем чертеже в Модели не должно быть панелей Марки СБ (только Марки АР).", icon: System.Drawing.SystemIcons.Error); return; } if (SelectPanels.IdsBlRefPanelAr.Count == 0) { Inspector.AddError("Не найдены панели Марки АР в Моделе текущего чертежа.", icon: System.Drawing.SystemIcons.Error); return; } // Определить файл в который экспортировать фасад _fileExport = new FileExport(); _fileExport.DefineFile(); // определение фасадов (вокруг панелей АКР) var facades = Facade.GetFacades(SelectPanels.FacadeBlRefs); // Определение экспортируемых панелей и фасадов CPS = new ConvertPanelService(this); CPS.DefinePanels(facades); using (var dbExport = new Database(!_fileExport.IsExistsFileExport, true)) { if (_fileExport.IsExistsFileExport) { // удалить старые панели из файла экспорта try { dbExport.ReadDwgFile(_fileExport.FileExportFacade.FullName, FileShare.Read, true, ""); } catch (Exception ex) { // файл занят. warningMessageBusyFileExportFacade(ex, _fileExport.FileExportFacade.FullName); throw; } // сделать копию файла _fileExport.Backup(); dbExport.CloseInput(true); deletePanels(dbExport); } dbExport.CloseInput(true); CPS.DbExport = dbExport; // Копирование панелей АР в экспортный файл copyPanelToExportFile(dbExport); // Переопределение блока плитки из файла шаблона блоков для Экспорта фасадов. redefineBlockTile(dbExport); using (AcadLib.WorkingDatabaseSwitcher switchDb = new AcadLib.WorkingDatabaseSwitcher(dbExport)) { using (var t = dbExport.TransactionManager.StartTransaction()) { // Преобразования определений блоков CPS.ConvertBtr(); // Преобразования торцов фасадов CPS.ConvertEnds(); t.Commit(); } } CPS.Purge(); dbExport.SaveAs(_fileExport.FileExportFacade.FullName, DwgVersion.Current); } }
public void TestDynBlSec() { string testFile = @"c:\temp\test\АКР\Base\Tests\TestDynBlSec.dwg"; using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { ObjectId idBtrPanel; ObjectId idBtrMs; using (var t = db.TransactionManager.StartTransaction()) { BlockTableRecord ms; BlockTableRecord btrPanel; ObjectId idBtrSec; BlockTableRecord btrDim; using (var bt = db.BlockTableId.GetObject(OpenMode.ForWrite) as BlockTable) { ms = bt[BlockTableRecord.ModelSpace].GetObject(OpenMode.ForWrite) as BlockTableRecord; idBtrMs = ms.Id; idBtrSec = bt["Test"]; btrPanel = new BlockTableRecord(); btrPanel.Name = "Panel"; idBtrPanel = bt.Add(btrPanel); t.AddNewlyCreatedDBObject(btrPanel, true); btrDim = new BlockTableRecord(); btrDim.Name = "Dim"; bt.Add(btrDim); t.AddNewlyCreatedDBObject(btrDim, true); } BlockReference blRefDim = new BlockReference(Point3d.Origin, btrDim.Id); btrPanel.AppendEntity(blRefDim); t.AddNewlyCreatedDBObject(blRefDim, true); BlockReference blRef = new BlockReference(Point3d.Origin, idBtrSec); btrDim.AppendEntity(blRef); t.AddNewlyCreatedDBObject(blRef, true); setDynParam(blRef); t.Commit(); } using (var t = db.TransactionManager.StartTransaction()) { var ms = idBtrMs.GetObject(OpenMode.ForWrite) as BlockTableRecord; BlockReference blRefPanel = new BlockReference(Point3d.Origin, idBtrPanel); ms.AppendEntity(blRefPanel); t.AddNewlyCreatedDBObject(blRefPanel, true); t.Commit(); } } string saveFile = @"c:\temp\test\АКР\Base\Tests\TestDynBlSec-TestSaved.dwg"; db.SaveAs(saveFile, DwgVersion.Current); } }