本文整理汇总了C#中Database.SaveAs方法的典型用法代码示例。如果您正苦于以下问题:C# Database.SaveAs方法的具体用法?C# Database.SaveAs怎么用?C# Database.SaveAs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Database
的用法示例。
在下文中一共展示了Database.SaveAs方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DrawAndSaveAs
public void DrawAndSaveAs()
{
if (File.Exists(filePath))
{ throw new Exception("已经存在temp.dwg,请保证已经删除"); }
using (Database db = new Database())
using (Transaction acTrans = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)acTrans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)acTrans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
Solid3d solid = new Solid3d();
solid.CreateBox(width, depth, height);
//Move the block to the left-behind origin
solid.TransformBy(Matrix3d.Displacement(new Vector3d(width / 2, -depth / 2, height / 2)));
btr.AppendEntity(solid);
acTrans.AddNewlyCreatedDBObject(solid, true);
acTrans.Commit();
db.SaveAs(filePath, DwgVersion.Newest);
}
}
示例2: CloseAndDelete
public void CloseAndDelete(List<PanelAKR> panelsToDelete)
{
string file = dbLib.Filename;
try
{
dbLib.Dispose();
}
catch { }
File.Delete(file);
// Удаление блоков
if (panelsToDelete != null && panelsToDelete.Count > 0)
{
// Сделать копию библиотеки
PanelLibrarySaveService.BackUpLibPanelsFile();
using (ProgressMeter progress = new ProgressMeter())
{
progress.SetLimit(panelsToDelete.Count);
progress.Start($"Удаление {panelsToDelete.Count} панелей из библиотеки...");
using (var db = new Database(false, true))
{
db.ReadDwgFile(PanelLibrarySaveService.LibPanelsFilePath, FileShare.None, true, "");
db.CloseInput(true);
using (var t = db.TransactionManager.StartTransaction())
{
var bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
foreach (var item in panelsToDelete)
{
if (bt.Has(item.BlName))
{
var idPanelAkr = bt[item.BlName];
var dbo = idPanelAkr.GetObject(OpenMode.ForWrite);
try
{
dbo.Erase();
progress.MeterProgress();
}
catch { };
}
}
t.Commit();
}
db.SaveAs(PanelLibrarySaveService.LibPanelsFilePath, DwgVersion.Current);
}
Logger.Log.Error ($"Удалены панели АКР из библиотеки - {panelsToDelete.Count}шт.: {string.Join(", ",panelsToDelete)}");
progress.Stop();
}
}
}
示例3: CreateBtrPanelFromBase
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);
}
}
示例4: GetAllPlanesTest
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);
}
示例5: RedefineBlockInFile
private void RedefineBlockInFile(Editor ed, Database db, List<RedefineBlock> blocksRedefine,
List<RedefineBlock> renameBlocks, FileInfo file,
ref int countFilesRedefined, ref int countFilesWithoutBlock)
{
List<Error> errors = new List<Error>();
using (Database dbExt = new Database(false, true))
{
dbExt.ReadDwgFile(file.FullName, FileShare.ReadWrite, false, "");
dbExt.CloseInput(true);
countFilesRedefined = renameAndRedefBlocksInDb(blocksRedefine, renameBlocks, file, countFilesRedefined, errors, dbExt);
dbExt.SaveAs(file.FullName, DwgVersion.Current);
}
if (errors.Count != 0)
Inspector.Errors.AddRange(errors);
}
示例6: Contents
//.........这里部分代码省略.........
// Но на первом листе содержания первые 5 строк заняты (обложка, тит, общие данные, наруж стен панели, том1).
//_dbFacade = HostApplicationServices.WorkingDatabase;
using (_dbContent = new Database(false, true))
{
_dbContent.ReadDwgFile(fileContent, FileShare.ReadWrite, false, "");
_dbContent.CloseInput(true);
using (new AcadLib.WorkingDatabaseSwitcher(_dbContent))
{
// Замена блока рамки из чертежа фасада, если он есть
_album.AlbumInfo?.Frame?.ChangeBlockFrame(_dbContent, false);
_album?.AlbumInfo?.CoverTitle?.ChangeCoverAndTitle(_dbContent);
using (var t = _dbContent.TransactionManager.StartTransaction())
{
int curContentLayoutNum = _countSheetsBeforContent+1;
Table tableContent;
BlockReference blRefStamp;
CopyContentSheet(t, curContentLayoutNum, out tableContent, out blRefStamp);
// Определение кол-ва марок АР
int countMarkArs = CalcMarksArNumber(_sheetsMarkSB);
// Определение кол-ва листов содержания (только для панелей без учета лтстов обложек и тп.)
_countContentSheets = CalcSheetsContentNumber(tableContent.Rows.Count, countMarkArs) + _album.StartOptions.NumberAddSheetContent;
// Заполнение штампа на первом листе содержания
FillingStampContent(blRefStamp, curContentLayoutNum- _countSheetsBeforContent, t);
// текущая строка для записи листа
int row = _firstRowInTableForSheets;
// На первом листе содержания заполняем строки для Обложки, Тит, Общ дан, НСП, Том1.
tableContent.Cells[row, 2].TextString = 1.ToString();
tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
tableContent.Cells[row++, 1].TextString = "Обложка";
tableContent.Cells[row, 2].TextString = 2.ToString();
tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
tableContent.Cells[row++, 1].TextString = "Титульный лист";
tableContent.Cells[row, 1].TextString = "Общие данные. Ведомость комплекта чертежей";
tableContent.Cells[row, 2].TextString = _countContentSheets > 1 ? "3-" + (3 + _countContentSheets - 1).ToString() : "3";
tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
row++;
tableContent.Cells[row++, 1].TextString = "Наружные стеновые панели";
tableContent.Cells[row++, 1].TextString = "ТОМ";
int curSheetArNum;
if (_album.StartOptions.NumberFirstSheet == 0)
{
curSheetArNum = _countContentSheets + _countSheetsBeforContent;// номер для первого листа Марки АР
}
else
{
curSheetArNum = _album.StartOptions.NumberFirstSheet - 1;
}
ProgressMeter progressMeter = new ProgressMeter();
progressMeter.SetLimit(_sheetsMarkSB.Count);
progressMeter.Start("Создание содержания ");
foreach (var sheetMarkSB in _sheetsMarkSB)
{
progressMeter.MeterProgress();
foreach (var sheetMarkAR in sheetMarkSB.SheetsMarkAR)
{
tableContent.Cells[row, 1].TextString = sheetMarkAR.MarkArFullName + ". Раскладка плитки на фасаде";
sheetMarkAR.SheetNumber = ++curSheetArNum;
tableContent.Cells[row, 2].TextString = curSheetArNum.ToString();
tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
row++;
CheckEndOfTable(t, ref curContentLayoutNum, ref tableContent, ref blRefStamp, ref row);
tableContent.Cells[row, 1].TextString = sheetMarkAR.MarkArFullName + ". Раскладка плитки в форме";
tableContent.Cells[row, 2].TextString = curSheetArNum.ToString() + ".1";
sheetMarkAR.SheetNumberInForm = curSheetArNum.ToString() + ".1";
tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
row++;
CheckEndOfTable(t, ref curContentLayoutNum, ref tableContent, ref blRefStamp, ref row);
}
}
progressMeter.Stop();
//Удаление пустых строк в таблице содержания
if (tableContent.Rows.Count > row + 1)
{
tableContent.DeleteRows(row, tableContent.Rows.Count - row);
}
// Удаление последнего листа содержания (пустой копии)
HostApplicationServices.WorkingDatabase = _dbContent;
LayoutManager lm = LayoutManager.Current;
//lm.CurrentLayout = getLayoutContentName(_countSheetsBeforContent + 1);
//string layoutNameToDel = (_countSheetsBeforContent + (++_countContentSheets)).ToString("00") + "_" + Settings.Default.SheetTemplateLayoutNameForContent;
lm.DeleteLayout(Settings.Default.SheetTemplateLayoutNameForContent);
t.Commit();
}
//HostApplicationServices.WorkingDatabase = _dbFacade;
}
_dbContent.SaveAs(fileContent, DwgVersion.Current);
}
}
示例7: Export
/// <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);
}
}
示例8: TestDynBlSec
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);
}
}
示例9: DrawAndSaveAs2
public void DrawAndSaveAs2(Product product, IWorkbookSet bookSet)
{
if (File.Exists(filePath))
{ throw new Exception("已经存在temp.dwg,请保证已经删除"); }
//TODO:Not here
product.Parts.ForEach(it => it.CalculateLocationInfo(Point3d.Origin, 0));
using (Database db = new Database())
using (Transaction acTrans = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)acTrans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)acTrans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
foreach (var part in product.Parts)
{
Solid3d panel = new Solid3d();
panel.CreateBox(part.Length, part.Width, part.Thickness);
panel.TransformBy(Matrix3d.Rotation(part.XRotation * Math.PI / 180, Vector3d.XAxis, Point3d.Origin));
panel.TransformBy(Matrix3d.Rotation(part.YRotation * Math.PI / 180, Vector3d.YAxis, Point3d.Origin));
panel.TransformBy(Matrix3d.Rotation(part.ZRotation * Math.PI / 180, Vector3d.ZAxis, Point3d.Origin));
var moveVector = new Vector3d();
panel.TransformBy(Matrix3d.Displacement(part.CenterVector));
btr.AppendEntity(panel);
acTrans.AddNewlyCreatedDBObject(panel, true);
}
acTrans.Commit();
db.SaveAs(filePath, DwgVersion.Newest);
}
}