DWG Чертежи
Экспорт DWG чертежей в PDF
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и конвертировать их в PDF. Эта тема объясняет использование Aspose.CAD API для достижения конвертации DWG в PDF формат через простые шаги, описанные далее.
API поддерживает следующие ревизии AutoCAD DWG:
- DWG 2004 версия 16.0 релиз 18
- DWG 2005 версия 16.1
- DWG 2010 версия 18.0
- DWG 2013 версия 19.0
Формат файла DWG
DWG — это бинарный файл, который содержит данные векторного изображения и метаданные. Данные векторного изображения предоставляют инструкции приложению CAD о том, как отображать DWG; метаданные могут содержать различные сведения о файле, включая специфические для местоположения данные и данные о клиенте. Открытые спецификации для формата файла DWG можно найти в этом PDF
Конвертирование файлов DWG в PDF
Для конвертации DWG в PDF требуются следующие простые шаги:
- Загрузите файл DWG в экземпляр Image.
- Создайте объект класса CadRasterizationOptions и установите свойства PageHeight и PageWidth.
- Создайте объект класса PdfOptions и установите его свойство VectorRasterizationOptions.
- Вызовите Image.Save, передав объект PdfOptions в качестве второго параметра.
Ниже приведен пример кода, который показывает, как экспортировать DWG чертежи в PDF.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "Bottom_plate.dwg"; | |
using (Aspose.CAD.Image image = Aspose.CAD.Image.Load(sourceFilePath)) | |
{ | |
// Create an instance of CadRasterizationOptions and set its various properties | |
Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = new Aspose.CAD.ImageOptions.CadRasterizationOptions(); | |
rasterizationOptions.BackgroundColor = Aspose.CAD.Color.White; | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
// Create an instance of PdfOptions | |
Aspose.CAD.ImageOptions.PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
MyDir = MyDir + "Bottom_plate_out.pdf"; | |
//Export the DWG to PDF | |
image.Save(MyDir, pdfOptions); | |
} |
Создание одного PDF с различными размерами макета
Aspose.CAD для .NET позволяет вам конвертировать файл DWG в один PDF с различными размерами макета. Этот подход работает следующим образом:
- Загрузите файл DWG с помощью метода фабрики Aspose.CAD.Image.Load.
- Создайте экземпляр класса CadRasterizationOptions и установите размеры результирующей страницы.
- Добавьте необходимые LayoutPageSizes для объекта CadRasterizationOptions.
- Создайте экземпляр класса PdfOptions и установите его свойство VectorRasterizationOptions.
- Экспортируйте изображение в PDF, используя метод Image.Save().
Ниже приведен пример кода, который показывает, как создать один PDF с различными макетами.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
using (CadImage cadImage = (CadImage)Image.Load(MyDir + "City skyway map.dwg")) | |
{ | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.PageWidth = 1000; | |
rasterizationOptions.PageHeight = 1000; | |
//custom sizes for several layouts | |
rasterizationOptions.LayoutPageSizes.Add("ANSI C Plot", new SizeF(500, 1000)); | |
rasterizationOptions.LayoutPageSizes.Add("8.5 x 11 Plot", new SizeF(1000, 100)); | |
PdfOptions pdfOptions = new PdfOptions() { VectorRasterizationOptions = rasterizationOptions }; | |
cadImage.Save(MyDir + "singlePDF_out.pdf", pdfOptions); | |
} | |
Поддерживаемые примитивы AutoCAD
Поддерживаются следующие примитивы AutoCAD.
- TEXT
- MTEXT
- ATTDEF
- ATTRIB
- ARC
- ELLIPSE
- HATCH
- LEADER
- POINT
- VERTEX 2D
- VERTEX 3D
- POLYLINE 2D
- LWPOLYLINE
- RAY
- CIRCLE
- DIMENSION ORDINATE
- DIMENSION LINEAR
- DIMENSION ALIGNED
- DIMENSION ANG 3Pt
- DIMENSION ANG 2Ln
- DIMENSION RADIUS
- DIMENSION DIAMETER
- SHAPE
- SOLID
- SPLINE
- MLINE
- LINE
- XLINE
- STYLE
- DIMSTYLE
- LTYPE
- MLINESTYLE
- LAYER
- VIEWPORT
- LAYOUT
Экспорт конкретного макета DWG в PDF
Этот подход работает следующим образом:
- Загрузите файл DWG с помощью метода фабрики Aspose.CAD.Image.Load.
- Создайте экземпляр класса CadRasterizationOptions и установите размеры результирующей страницы.
- Установите свойство Layouts для объекта CadRasterizationOptions.
- Создайте экземпляр класса PdfOptions и установите его свойство VectorRasterizationOptions.
- Экспортируйте изображение в PDF, используя метод Image.Save().
Ниже приведен пример кода, который показывает, как конвертировать конкретный макет DWG в PDF.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "visualization_-_conference_room.dwg"; | |
using (Aspose.CAD.Image image = Aspose.CAD.Image.Load(sourceFilePath)) | |
{ | |
// Create an instance of CadRasterizationOptions and set its various properties | |
Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = new Aspose.CAD.ImageOptions.CadRasterizationOptions(); | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
// Specify desired layout name | |
rasterizationOptions.Layouts = new string[] { "Layout1" }; | |
// Create an instance of PdfOptions | |
Aspose.CAD.ImageOptions.PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
MyDir = MyDir + "ExportSpecificLayoutToPDF_out.pdf"; | |
//Export the DWG to PDF | |
image.Save(MyDir, pdfOptions); | |
} |
Отображение документа DWG, указывая координаты
Aspose.CAD для .NET API теперь предоставляет возможность отображать документы DWG, предоставляя координаты ширины и высоты документа.
Ниже приведен пример кода, который показывает, как отобразить документ DWG.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "Bottom_plate.dwg"; | |
using (CadImage cadImage = (CadImage)Image.Load(sourceFilePath)) | |
{ | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.Layouts = new string[] { "Model" }; | |
rasterizationOptions.NoScaling = true; | |
// note: preserving some empty borders around part of image is the responsibility of customer | |
// top left point of region to draw | |
Point topLeft = new Point(6156, 7053); | |
double width = 3108; | |
double height = 2489; | |
CadVportTableObject newView = new CadVportTableObject(); | |
// note: exactly such table name is required for active view | |
newView.Name.Value = "*Active"; | |
newView.CenterPoint.X = topLeft.X + width / 2f; | |
newView.CenterPoint.Y = topLeft.Y - height / 2f; | |
newView.ViewHeight.Value = height; | |
newView.ViewAspectRatio.Value = width / height; | |
// search for active viewport and replace it | |
for (int i = 0; i < cadImage.ViewPorts.Count; i++) | |
{ | |
CadVportTableObject currentView = (CadVportTableObject)(cadImage.ViewPorts[i]); | |
if ((currentView.Name.Value == null && cadImage.ViewPorts.Count == 1) || | |
string.Equals(currentView.Name.Value.ToLowerInvariant(), "*active")) | |
{ | |
cadImage.ViewPorts[i] = newView; | |
break; | |
} | |
} | |
PdfOptions pdfOptions = new PdfOptions(); | |
rasterizationOptions.Layouts = new string[] { "Model" }; | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
cadImage.Save(MyDir, pdfOptions); | |
} |
Экспорт DWG в растр или PDF с фиксированным размером
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и конвертировать их в PDF или растр с использованием фиксированного размера.
Ниже приведен пример кода, который показывает, как реализовать эту функцию.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "Bottom_plate.dwg"; | |
string outPath = MyDir + "Bottom_plate.pdf"; | |
using (CadImage cadImage = (CadImage)Image.Load(sourceFilePath)) | |
{ | |
// export to pdf | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.Layouts = new string[] { "Model" }; | |
bool currentUnitIsMetric = false; | |
double currentUnitCoefficient = 1.0; | |
DefineUnitSystem(cadImage.UnitType, out currentUnitIsMetric, out currentUnitCoefficient); | |
if (currentUnitIsMetric) | |
{ | |
double metersCoeff = 1 / 1000.0; | |
double scaleFactor = metersCoeff / currentUnitCoefficient; | |
rasterizationOptions.PageWidth = (float)(210 * scaleFactor); | |
rasterizationOptions.PageHeight = (float)(297 * scaleFactor); | |
rasterizationOptions.UnitType = UnitType.Millimeter; | |
} | |
else | |
{ | |
rasterizationOptions.PageWidth = (float)(8.27f / currentUnitCoefficient); | |
rasterizationOptions.PageHeight = (float)(11.69f / currentUnitCoefficient); | |
rasterizationOptions.UnitType = UnitType.Inch; | |
} | |
rasterizationOptions.AutomaticLayoutsScaling = true; | |
PdfOptions pdfOptions = new PdfOptions | |
{ | |
VectorRasterizationOptions = rasterizationOptions | |
}; | |
cadImage.Save(outPath, pdfOptions); | |
// export to raster | |
//A4 size at 300 DPI - 2480 x 3508 | |
rasterizationOptions.PageHeight = 3508; | |
rasterizationOptions.PageWidth = 2480; | |
PngOptions pngOptions = new PngOptions | |
{ | |
VectorRasterizationOptions = rasterizationOptions | |
}; | |
cadImage.Save(outPath.Replace("pdf", "png"), pngOptions); | |
} | |
} | |
private static void DefineUnitSystem(UnitType unitType, out bool isMetric, out double coefficient) | |
{ | |
isMetric = false; | |
coefficient = 1.0; | |
switch (unitType) | |
{ | |
case UnitType.Parsec: | |
coefficient = 3.0857 * 10000000000000000.0; | |
isMetric = true; | |
break; | |
case UnitType.LightYear: | |
coefficient = 9.4607 * 1000000000000000.0; | |
isMetric = true; | |
break; | |
case UnitType.AstronomicalUnit: | |
coefficient = 1.4960 * 100000000000.0; | |
isMetric = true; | |
break; | |
case UnitType.Gigameter: | |
coefficient = 1000000000.0; | |
isMetric = true; | |
break; | |
case UnitType.Kilometer: | |
coefficient = 1000.0; | |
isMetric = true; | |
break; | |
case UnitType.Decameter: | |
isMetric = true; | |
coefficient = 10.0; | |
break; | |
case UnitType.Hectometer: | |
isMetric = true; | |
coefficient = 100.0; | |
break; | |
case UnitType.Meter: | |
isMetric = true; | |
coefficient = 1.0; | |
break; | |
case UnitType.Centimenter: | |
isMetric = true; | |
coefficient = 0.01; | |
break; | |
case UnitType.Decimeter: | |
isMetric = true; | |
coefficient = 0.1; | |
break; | |
case UnitType.Millimeter: | |
isMetric = true; | |
coefficient = 0.001; | |
break; | |
case UnitType.Micrometer: | |
isMetric = true; | |
coefficient = 0.000001; | |
break; | |
case UnitType.Nanometer: | |
isMetric = true; | |
coefficient = 0.000000001; | |
break; | |
case UnitType.Angstrom: | |
isMetric = true; | |
coefficient = 0.0000000001; | |
break; | |
case UnitType.Inch: | |
coefficient = 1.0; | |
break; | |
case UnitType.MicroInch: | |
coefficient = 0.000001; | |
break; | |
case UnitType.Mil: | |
coefficient = 0.001; | |
break; | |
case UnitType.Foot: | |
coefficient = 12.0; | |
break; | |
case UnitType.Yard: | |
coefficient = 36.0; | |
break; | |
case UnitType.Mile: | |
coefficient = 63360.0; | |
break; | |
} | |
} |
Экспорт DWG в PDF/A и PDF/E
Этот подход работает следующим образом:
- Загрузите файл DWG с помощью метода фабрики Aspose.CAD.Image.Load.
- Создайте экземпляр класса CadRasterizationOptions.
- Создайте экземпляр класса PdfOptions и установите его свойство VectorRasterizationOptions.
- Установите свойство совместимости PDF и сохраните его.
- Экспортируйте изображение в PDF, используя метод Image.Save().
Ниже приведен пример кода, который показывает, как конвертировать файл DWG в PDF/A и PDF/E.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "Bottom_plate.dwg"; | |
Aspose.CAD.Image cadImage = Aspose.CAD.Image.Load(sourceFilePath); | |
// Create an instance of CadRasterizationOptions and set its various properties | |
Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = new Aspose.CAD.ImageOptions.CadRasterizationOptions(); | |
rasterizationOptions.BackgroundColor = Aspose.CAD.Color.White; | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
// Create an instance of PdfOptions | |
PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions | |
{ | |
VectorRasterizationOptions = rasterizationOptions | |
}; | |
pdfOptions.CorePdfOptions = new PdfDocumentOptions(); | |
pdfOptions.CorePdfOptions.Compliance = PdfCompliance.PdfA1a; | |
cadImage.Save(MyDir + "PDFA1_A.pdf", pdfOptions); | |
pdfOptions.CorePdfOptions.Compliance = PdfCompliance.PdfA1b; | |
cadImage.Save(MyDir + "PDFA1_B.pdf", pdfOptions); |
Поддержка округленных скрытых линий при экспорте DWG/DXF в BMP и PDF
Этот подход работает следующим образом:
- Загрузите файл DWG с помощью метода фабрики Aspose.CAD.Image.Load.
- Создайте экземпляр класса CadRasterizationOptions и установите размеры результирующей страницы.
- Создайте экземпляр класса PdfOptions и установите его свойство VectorRasterizationOptions.
- Экспортируйте изображение в PDF, используя метод Image.Save().
Ниже приведен пример кода, который показывает, как реализовать эту функцию.
Поддержка установки области печати для изображения DWG в экспортированном PDF
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и конвертировать их в PDF. Эта тема объясняет использование Aspose.CAD API для достижения поддержки установки области печати для изображения DWG в экспортированном PDF.
Ниже приведен пример кода, который показывает, как реализовать эту функцию.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "visualization_-_conference_room.dwg"; | |
using (Aspose.CAD.Image image = Aspose.CAD.Image.Load(sourceFilePath)) | |
{ | |
// Create an instance of CadRasterizationOptions and set its various properties | |
Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = new Aspose.CAD.ImageOptions.CadRasterizationOptions(); | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
// Specify desired layout name | |
rasterizationOptions.Layouts = new string[] { "Layout1" }; | |
// Create an instance of PdfOptions | |
Aspose.CAD.ImageOptions.PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
MyDir = MyDir + "ExportSpecificLayoutToPDF_out.pdf"; | |
//Export the DWG to PDF | |
image.Save(MyDir, pdfOptions); | |
} |
Поддержка чтения метаданных XREF для файла DWG
- Загрузите файл DWG с помощью метода фабрики Aspose.CAD.Image.Load.
- Пройдитесь по каждому объекту изображения.
- Если объект является CadUnderlay, то XREF объект с метаданными.
Ниже приведен пример кода, который показывает, как достичь этой функции.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "Bottom_plate.dwg"; | |
using (CadImage image = (CadImage)Image.Load(sourceFilePath)) | |
{ | |
foreach (CadBaseEntity entity in image.Entities) | |
{ | |
if (entity is CadUnderlay) | |
{ | |
//XREF entity with metadata | |
Cad3DPoint insertionPoint = ((CadUnderlay)entity).InsertionPoint; | |
string path = ((CadUnderlay)entity).UnderlayPath; | |
} | |
} | |
} |
Свойство CadRasterizationOptions.Layouts является массивом строк, поэтому вы можете указать более одного макета одновременно для возможной конвертации в PDF формат. При указании нескольких макетов для свойства CadRasterizationOptions.Layouts результирующий PDF будет иметь несколько страниц, где каждая страница представляет отдельный макет AutoCAD.
Список всех макетов
Вы можете перечислить все макеты, присутствующие в чертеже AutoCAD, используя следующий код.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_ConvertingCAD(); | |
string sourceFilePath = MyDir + "conic_pyramid.dxf"; | |
using (Aspose.CAD.Image image = Aspose.CAD.Image.Load(sourceFilePath)) | |
{ | |
Aspose.CAD.FileFormats.Cad.CadImage cadImage = (Aspose.CAD.FileFormats.Cad.CadImage)image; | |
Aspose.CAD.FileFormats.Cad.CadLayoutDictionary layouts = cadImage.Layouts; | |
foreach (Aspose.CAD.FileFormats.Cad.CadObjects.CadLayout layout in layouts.Values) | |
{ | |
Console.WriteLine("Layout " + layout.LayoutName); | |
} | |
} |
Доступ к флагам подложки для формата DWG
Aspose.CAD для .NET реализовал флаги подложки для формата DWG и позволяет разработчикам получить к ним доступ. Ниже представлена простая демонстрация кода.
// Input file name and path | |
string fileName = "BlockRefDgn.dwg"; | |
// Load an existing DWG file and convert it into CadImage | |
using (Aspose.CAD.FileFormats.Cad.CadImage image = (Aspose.CAD.FileFormats.Cad.CadImage)Image.Load(fileName)) | |
{ | |
// Go through each entity inside the DWG file | |
foreach (Aspose.CAD.FileFormats.Cad.CadObjects.CadBaseEntity entity in image.Entities) | |
{ | |
// Check if entity is of CadDgnUnderlay type | |
if (entity is Aspose.CAD.FileFormats.Cad.CadObjects.CadDgnUnderlay) | |
{ | |
// Access different underlay flags | |
Aspose.CAD.FileFormats.Cad.CadObjects.CadUnderlay underlay = entity as Aspose.CAD.FileFormats.Cad.CadObjects.CadUnderlay; | |
Console.WriteLine(underlay.UnderlayPath); | |
Console.WriteLine(underlay.UnderlayName); | |
Console.WriteLine(underlay.InsertionPoint.X); | |
Console.WriteLine(underlay.InsertionPoint.Y); | |
Console.WriteLine(underlay.RotationAngle); | |
Console.WriteLine(underlay.ScaleX); | |
Console.WriteLine(underlay.ScaleY); | |
Console.WriteLine(underlay.ScaleZ); | |
Console.WriteLine((underlay.Flags & Aspose.CAD.FileFormats.Cad.CadObjects.UnderlayFlags.UnderlayIsOn) == Aspose.CAD.FileFormats.Cad.CadObjects.UnderlayFlags.UnderlayIsOn); | |
Console.WriteLine((underlay.Flags & Aspose.CAD.FileFormats.Cad.CadObjects.UnderlayFlags.ClippingIsOn) == Aspose.CAD.FileFormats.Cad.CadObjects.UnderlayFlags.ClippingIsOn); | |
Console.WriteLine((underlay.Flags & Aspose.CAD.FileFormats.Cad.CadObjects.UnderlayFlags.Monochrome) != Aspose.CAD.FileFormats.Cad.CadObjects.UnderlayFlags.Monochrome); | |
break; | |
} | |
} | |
} |
Поддержка сущностей DWG
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и поддерживать различные сущности для работы с ними.
Поддержка сущности MLeader
DWG — это бинарный файл, который содержит данные векторного изображения и метаданные. В файле DWG есть различные сущности. В следующем разделе описан пример работы с сущностью MLeader внутри файла DWG.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string file = MyDir + "sample.dwg"; | |
using (Image image = Image.Load(file)) | |
{ | |
// Test | |
FileFormats.Cad.CadImage cadImage = (FileFormats.Cad.CadImage)image; | |
Assert.AreNotEqual(cadImage.Entities.Length, 0); | |
CadMLeader cadMLeader = (CadMLeader)cadImage.Entities[0]; | |
Assert.AreEqual(cadMLeader.StyleDescription, "Standard"); | |
Assert.AreEqual(cadMLeader.LeaderStyleId, "12E"); | |
Assert.AreEqual(cadMLeader.ArrowHeadId1, "639"); | |
Assert.AreEqual(cadMLeader.LeaderLineTypeID, "14"); | |
CadMLeaderContextData context = cadMLeader.ContextData; | |
Assert.AreEqual(context.ArrowHeadSize, 30.0, 0.1); | |
Assert.AreEqual(context.BasePoint.X, 481, 1); | |
Assert.AreEqual(context.ContentScale, 1.0, 0.01); | |
Assert.AreEqual(context.DefaultText.Value, "This is multileader with huge text\\P{\\H1.5x;6666666666666666666666666666\\P}bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); | |
Assert.AreEqual(context.HasMText, true); | |
CadMLeaderNode mleaderNode = context.LeaderNode; | |
Assert.AreEqual(mleaderNode.LastLeaderLinePoint.X, 473, 1); | |
CadMLeaderLine leaderLine = mleaderNode.LeaderLine; | |
Assert.AreEqual(leaderLine.BreakEndPoint, null); | |
Assert.AreEqual(leaderLine.BreakPointIndex.Value, 0); | |
Assert.AreEqual(leaderLine.BreakStartPoint, null); | |
Assert.AreEqual(leaderLine.LeaderLineIndex.Value, 0); | |
Assert.AreEqual(leaderLine.LeaderPoints.Count, 4); | |
Assert.AreEqual(mleaderNode.BranchIndex, 0); | |
Assert.AreEqual(mleaderNode.DogLegLength, 8.0, 0.1); | |
Assert.AreEqual(context.HasMText, true); | |
Assert.AreEqual(context.TextAttachmentType.Value, 1); | |
Assert.AreEqual(context.TextBackgroundColor.Value, 18); | |
Assert.AreEqual(context.TextHeight, 20.0, 0.1); | |
Assert.AreEqual(context.TextStyleID.Value, "11"); | |
Assert.AreEqual(context.TextRotation.Value, 0.0, 0.01); | |
Assert.AreEqual(cadMLeader.ArrowHeadId1, "639"); | |
Assert.AreEqual(cadMLeader.LeaderType, 1); | |
Assert.AreEqual(cadMLeader.BlockContentColor, 0); | |
Assert.AreEqual(cadMLeader.LeaderLineColor, 0); | |
Assert.AreEqual(cadMLeader.TextHeight, 1.0, 0.01); | |
} |
Поддержка экспорта сущности DWG в изображение
DWG — это бинарный файл, который содержит данные векторного изображения и метаданные. В файле DWG есть различные сущности. В следующем разделе описан пример экспорта конкретной сущности DWG в изображение.
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "visualization_-_conference_room.dwg"; | |
var cadImage = (CadImage)Aspose.CAD.Image.Load(sourceFilePath); | |
CadBaseEntity[] entities = cadImage.Entities; | |
List<CadBaseEntity> filteredEntities = new List<CadBaseEntity>(); | |
foreach (CadBaseEntity baseEntity in entities) | |
{ | |
// selection or filtration of entities | |
if (baseEntity.TypeName == CadEntityTypeName.TEXT) | |
{ | |
filteredEntities.Add(baseEntity); | |
} | |
} | |
cadImage.Entities = filteredEntities.ToArray(); | |
// Create an instance of CadRasterizationOptions and set its various properties | |
Aspose.CAD.ImageOptions.CadRasterizationOptions rasterizationOptions = | |
new Aspose.CAD.ImageOptions.CadRasterizationOptions(); | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
// Set Auto Layout Scaling | |
rasterizationOptions.AutomaticLayoutsScaling = true; | |
// Create an instance of PdfOptions | |
Aspose.CAD.ImageOptions.PdfOptions pdfOptions = new Aspose.CAD.ImageOptions.PdfOptions(); | |
// Set the VectorRasterizationOptions property | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
string outFile = MyDir + "result_out_generated.pdf"; | |
// Export the CAD to PDF | |
cadImage.Save(outFile, pdfOptions); | |
Поддержка добавления текста в DWG
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и поддерживать различные сущности для работы с ними. DWG — это бинарный файл, который содержит данные векторного изображения и метаданные. В файле DWG есть различные сущности. В следующем разделе объясняется, как мы можем добавить текст внутри файла DWG.
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string dwgPathToFile = MyDir + "SimpleEntites.dwg"; | |
using (Image image = Image.Load(dwgPathToFile)) | |
{ | |
CadText cadText = new CadText(); | |
cadText.StyleType = "Standard"; | |
cadText.DefaultValue = "Some custom text"; | |
cadText.ColorId = 256; | |
cadText.LayerName = "0"; | |
cadText.FirstAlignment.X = 47.90; | |
cadText.FirstAlignment.Y = 5.56; | |
cadText.TextHeight = 0.8; | |
cadText.ScaleX = 0.0; | |
CadImage cadImage = (CadImage)image; | |
cadImage.BlockEntities["*Model_Space"].AddEntity(cadText); | |
PdfOptions pdfOptions = new PdfOptions(); | |
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions(); | |
pdfOptions.VectorRasterizationOptions = cadRasterizationOptions; | |
cadRasterizationOptions.DrawType = CadDrawTypeMode.UseObjectColor; | |
cadRasterizationOptions.PageHeight = 1600; | |
cadRasterizationOptions.PageWidth = 1600; | |
cadRasterizationOptions.Layouts = new string[] { "Model" }; | |
image.Save(MyDir+"SimpleEntites_generated.pdf", pdfOptions); | |
} | |
Поддержка импорта изображений в файл DWG
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и поддерживать различные сущности для работы с ними. DWG — это бинарный файл, который содержит данные векторного изображения и метаданные. В файле DWG есть различные сущности. В следующем разделе объясняется, как мы можем импортировать изображения в файл DWG.
// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-.NET | |
string dwgPathToFile = MyDir + "Drawing11.dwg"; | |
CadImage cadImage1 = (CadImage)Image.Load(dwgPathToFile); | |
CadRasterImageDef cadRasterImageDef = new CadRasterImageDef("road-sign-custom.png", 640, 562); | |
cadRasterImageDef.ObjectHandle = "A3B4"; | |
Cad3DPoint insertionPoint = new Cad3DPoint(26.77, 22.35); | |
Cad3DPoint uVector = new Cad3DPoint(0.0061565450840500831, 0); | |
Cad3DPoint vVector = new Cad3DPoint(0, 0.0061565450840500822); | |
CadRasterImage cadRasterImage = new CadRasterImage(cadRasterImageDef, insertionPoint, uVector, vVector); | |
cadRasterImage.ImageDefReference = "A3B4"; | |
cadRasterImage.DisplayFlags = 7; | |
cadRasterImage.ClippingState = 0; | |
cadRasterImage.ClipBoundaryVertexList.Add(new Cad2DPoint(-0.5, 0.5)); | |
cadRasterImage.ClipBoundaryVertexList.Add(new Cad2DPoint(639.5, 561.5)); | |
CadImage cadImage = (CadImage)cadImage1; | |
cadImage.BlockEntities["*Model_Space"].AddEntity(cadRasterImage); | |
List<CadBaseObject> list = new List<CadBaseObject>(cadImage.Objects); | |
list.Add(cadRasterImageDef); | |
cadImage.Objects = list.ToArray(); | |
PdfOptions pdfOptions = new PdfOptions(); | |
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions(); | |
pdfOptions.VectorRasterizationOptions = cadRasterizationOptions; | |
cadRasterizationOptions.DrawType = CadDrawTypeMode.UseObjectColor; | |
cadRasterizationOptions.PageHeight = 1600; | |
cadRasterizationOptions.PageWidth = 1600; | |
cadRasterizationOptions.Layouts = new string[] { "Model" }; | |
cadImage1.Save(MyDir + "export2.pdf", pdfOptions); |
Поддержка сетки в DWG
Aspose.CAD для .NET API теперь может обращаться к сущностям, поддерживающим сетку, которые включают типы CadPolyFaceMesh и CadPolygonMesh. В следующем примере объясняется, как мы можем получить доступ к типам сетки.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string sourceFilePath = MyDir + "meshes.dwg"; | |
// Load an existing DWG file as CadImage. | |
using (CadImage cadImage = (CadImage)Image.Load(sourceFilePath)) | |
{ | |
foreach (var entity in cadImage.Entities) | |
{ | |
if (entity is CadPolyFaceMesh) | |
{ | |
CadPolyFaceMesh asFaceMesh = (CadPolyFaceMesh)entity; | |
if (asFaceMesh != null) | |
{ | |
Console.WriteLine("Vetexes count: " + asFaceMesh.MeshMVertexCount); | |
} | |
} | |
else if (entity is CadPolygonMesh) | |
{ | |
CadPolygonMesh asPolygonMesh = (CadPolygonMesh)entity; | |
if (asPolygonMesh != null) | |
{ | |
Console.WriteLine("Vetexes count: " + asPolygonMesh.MeshMVertexCount); | |
} | |
} | |
} | |
} |
Конвертирование чертежей DWG в DXF
Aspose.CAD предоставляет возможность загружать файл AutoCAD DWG и экспортировать его в формат DXF. Подход к конвертации DWG в DXF работает следующим образом:
- Загрузите файл чертежа DWG с помощью метода фабрики Image.Load.
- Экспортируйте чертеж DWG в DXF с помощью метода Image.Save().
Ниже приведен пример кода, который показывает, как конвертировать файл DWG в формат DXF.
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string inputFile = MyDir + "Line.dwg"; | |
string outFile = MyDir + "Line_19.2.dxf"; | |
using (var cadImage = (CadImage)Image.Load(inputFile)) | |
{ | |
cadImage.Save(outFile); | |
} | |
Конвертирование чертежей DWG в SVG
Aspose.CAD для .NET API может загружать чертежи AutoCAD в формате DWG и конвертировать их в SVG. Эта тема объясняет использование Aspose.CAD API для достижения конвертации DWG в SVG формат простыми шагами, описанными ниже.
- Загрузите файл DWG в экземпляр Image.
- Создайте объект класса SvgOptions и установите необходимые свойства.
- Экспортируйте чертеж DWG в SVG с помощью метода Image.Save().
Ниже приведен пример кода, который показывает, как конвертировать файл DWG в формат SVG.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
using (Image image = Image.Load(MyDir + "sample.dwg")) | |
{ | |
var options = new SvgOptions(); | |
options.ColorType = Aspose.CAD.ImageOptions.SvgOptionsParameters.SvgColorMode.Grayscale; | |
options.TextAsShapes = true; | |
image.Save(MyDir + "sample.svg"); | |
} |
Загрузка большого файла DWG
Aspose.CAD для .NET предоставляет возможность открывать очень большие файлы DWG с помощью класса Image. Теперь вы можете легко открывать большие файлы с помощью приведенного ниже примера кода.
// The path to the documents directory. | |
string MyDir = RunExamples.GetDataDir_DWGDrawings(); | |
string filePathDWG = MyDir + "TestBigFile.dwg"; | |
string filePathFinish = MyDir+ "TestBigFile.dwg.pdf"; | |
Stopwatch stopWatch = new Stopwatch(); | |
try | |
{ | |
stopWatch.Start(); | |
using (CadImage cadImage = (CadImage)Image.Load(filePathDWG)) | |
{ | |
stopWatch.Stop(); | |
// Get the elapsed time as a TimeSpan value. | |
TimeSpan ts = stopWatch.Elapsed; | |
// Format and display the TimeSpan value. | |
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", | |
ts.Hours, ts.Minutes, ts.Seconds, | |
ts.Milliseconds / 10); | |
Console.WriteLine("RunTime for loading " + elapsedTime); | |
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); | |
rasterizationOptions.PageWidth = 1600; | |
rasterizationOptions.PageHeight = 1600; | |
PdfOptions pdfOptions = new PdfOptions(); | |
pdfOptions.VectorRasterizationOptions = rasterizationOptions; | |
stopWatch = new Stopwatch(); | |
stopWatch.Start(); | |
cadImage.Save(filePathFinish, pdfOptions); | |
stopWatch.Stop(); | |
// Get the elapsed time as a TimeSpan value. | |
ts = stopWatch.Elapsed; | |
// Format and display the TimeSpan value. | |
elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", | |
ts.Hours, ts.Minutes, ts.Seconds, | |
ts.Milliseconds / 10); | |
Console.WriteLine("RunTime for converting " + elapsedTime); | |
} | |
} | |
catch (Exception ex) | |
{ | |
Console.WriteLine(ex.Message); | |
} | |