نقشه‌های DWG

صادرات نقشه‌های DWG به PDF

Aspose.CAD برای API .NET می‌تواند نقشه‌های AutoCAD را در فرمت DWG بارگذاری کند و آن را به PDF تبدیل کند. این موضوع نحوه استفاده از API Aspose.CAD را برای تبدیل DWG به فرمت PDF از طریق مراحل ساده که در ادامه تعریف شده است، توضیح می‌دهد.

فرمت فایل DWG

یک DWG یک فایل باینری است که داده‌های تصویر وکتور و اطلاعات متادیتا را شامل می‌شود. داده‌های تصویر وکتور دستورالعمل‌هایی را به نرم‌افزار CAD ارائه می‌دهند که چگونه DWG را نمایش دهد؛ متادیتا ممکن است شامل اطلاعات متنوعی درباره فایل از جمله داده‌های محلی و همچنین داده‌های کاربر باشد. مشخصات باز برای فرمت فایل DWG را می‌توان در این PDF یافت.

تبدیل فایل‌های DWG به PDF

مراحل زیر برای تبدیل DWG به PDF لازم است.

  1. فایل DWG را به یک نمونه از Image بارگذاری کنید.
  2. یک شی از کلاس CadRasterizationOptions ایجاد کنید و ویژگی‌های PageHeight و PageWidth را تنظیم کنید.
  3. یک شی از کلاس PdfOptions ایجاد کنید و ویژگی VectorRasterizationOptions را تنظیم کنید.
  4. با عبور دادن یک شی از PdfOptions به عنوان پارامتر دوم، Image.Save را صدا بزنید.

کد نمونه زیر نحوه صادرات نقشه‌های 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 برای API .NET به شما امکان می‌دهد فایل DWG را به یک PDF واحد با اندازه‌های مختلف طرح تبدیل کنید. این روش به شرح زیر عمل می‌کند:

  1. یک فایل DWG را با استفاده از روش کارخانه Aspose.CAD.Image.Load بارگذاری کنید.
  2. یک نمونه از کلاس CadRasterizationOptions ایجاد کنید و ارتفاع و عرض صفحه نتیجه را تنظیم کنید.
  3. اندازه‌های صفحه لازم را به شی CadRasterizationOptions اضافه کنید.
  4. یک نمونه از کلاس PdfOptions ایجاد کرده و ویژگی VectorRasterizationOptions را تنظیم کنید.
  5. تصویر را با استفاده از روش Image.Save() به PDF صادر کنید.

کد نمونه زیر چگونگی ایجاد یک 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

این روش به شرح زیر عمل می‌کند:

  1. یک فایل DWG را با استفاده از روش کارخانه Aspose.CAD.Image.Load بارگذاری کنید.
  2. یک نمونه از کلاس CadRasterizationOptions ایجاد کنید و ارتفاع و عرض صفحه نتیجه را تنظیم کنید.
  3. ویژگی Layouts را برای شی CadRasterizationOptions تنظیم کنید.
  4. یک نمونه از کلاس PdfOptions ایجاد کرده و ویژگی VectorRasterizationOptions را تنظیم کنید.
  5. تصویر را با استفاده از روش Image.Save() به PDF صادر کنید.

کد نمونه زیر نحوه تبدیل یک طرح خاص 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 برای API .NET اکنون ویژگی رندر کردن اسناد 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 به Raster یا PDF با استفاده از اندازه ثابت

Aspose.CAD برای API .NET می‌تواند نقشه‌های AutoCAD را با فرمت DWG بارگذاری کرده و آن را با اندازه ثابت به PDF یا Raster تبدیل کند.

کد نمونه زیر نحوه پیاده‌سازی این ویژگی را نشان می‌دهد.

// 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

این روش به شرح زیر عمل می‌کند:

  1. یک فایل DWG را با استفاده از روش کارخانه Aspose.CAD.Image.Load بارگذاری کنید.
  2. یک نمونه از کلاس CadRasterizationOptions ایجاد کنید.
  3. یک نمونه از کلاس PdfOptions ایجاد کنید و ویژگی VectorRasterizationOptions را تنظیم کنید.
  4. ویژگی انطباق PDF را تنظیم کرده و آن را ذخیره کنید.
  5. تصویر را با استفاده از روش Image.Save() به PDF صادر کنید.

کد نمونه زیر نحوه تبدیل یک فایل 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

این روش به شرح زیر عمل می‌کند:

  1. یک فایل DWG را با استفاده از روش کارخانه Aspose.CAD.Image.Load بارگذاری کنید.
  2. یک نمونه از کلاس CadRasterizationOptions ایجاد کنید و ارتفاع و عرض صفحه نتیجه را تنظیم کنید.
  3. یک نمونه از کلاس PdfOptions ایجاد کنید و ویژگی VectorRasterizationOptions را تنظیم کنید.
  4. تصویر را با استفاده از روش Image.Save() به 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))
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageHeight = cadImage.Height;
rasterizationOptions.PageWidth = cadImage.Width;
rasterizationOptions.Layers = new string[] { "Print", "L1_RegMark", "L2_RegMark" };
PdfOptions pdfOptions = new PdfOptions();
rasterizationOptions.Layouts = new string[] { "Model" };
pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save(outPath, pdfOptions);
}
Console.WriteLine("\nThe DWG file exported successfully to PDF.\nFile saved at " + MyDir);
}

پشتیبانی از تنظیم منطقه چاپ برای تصویر DWG در PDF صادر شده

Aspose.CAD برای API .NET می‌تواند نقشه‌های AutoCAD را در فرمت DWG بارگذاری کرده و آن را به PDF تبدیل کند. این موضوع نحوه استفاده از API Aspose.CAD را برای دستیابی به پشتیبانی از تنظیم منطقه چاپ برای تصویر 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

  1. یک فایل DWG را با استفاده از روش کارخانه Aspose.CAD.Image.Load بارگذاری کنید.
  2. از طریق هر واحد تصویر عبور کنید.
  3. اگر یک واحد 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 برای API .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 برای API .NET می‌تواند نقشه‌های 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 برای API .NET می‌تواند نقشه‌های 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 برای API .NET می‌تواند نقشه‌های 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 برای API .NET اکنون می‌تواند به موجودیت‌هایی که از مش پشتیبانی می‌کنند دسترسی پیدا کند که شامل انواع 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 ویژگی بارگذاری فایل DWG AutoCAD و صادرات آن به فرمت DXF را ارائه می‌دهد. رویکرد تبدیل DWG به DXF به شرح زیر عمل می‌کند:

  1. فایل نقشه DWG را با استفاده از روش کارخانه Image.Load بارگذاری کنید.
  2. نقشه DWG را با استفاده از روش Image.Save() به DXF صادر کنید.

کد نمونه زیر نشان می‌دهد که چگونه یک فایل 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 برای API .NET می‌تواند نقشه‌های AutoCAD را در فرمت DWG بارگذاری کرده و آن را به SVG تبدیل کند. این موضوع نحوه استفاده از API Aspose.CAD را برای دستیابی به تبدیل DWG به فرمت SVG از طریق مراحل ساده‌ای که در زیر تعریف شده توضیح می‌دهد.

  1. فایل DWG را به یک نمونه از Image بارگذاری کنید.
  2. یک شی از کلاس SvgOptions ایجاد کرده و ویژگی مورد نیاز را تنظیم کنید.
  3. نقشه DWG را با استفاده از روش Image.Save() به SVG صادر کنید.

کد نمونه زیر نشان می‌دهد که چگونه یک فایل 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 برای API .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);
}