Aspose.CAD .Net设置导出视图导出pdf时,导出的pdf出现视图外的内容

您好,我在使用Aspose.CAD 在将dwg导出pdf时,使用的方式是设置导出窗口,导出导出pdf时,导出的pdf出现视图外的内容。
我使用的版本是 24.3.0

导出窗口设定的长宽比是1.7669441141498217
导出的图纸大小是A0的,长宽比是1.41
导出的图纸相比我们设定的导出窗口更宽,所以在上方有导出窗口外的内容出现
下面是我们的代码,是不是我们这边使用的方法不对

代码

CadImage cadImage;//导入的dwg图纸

PdfOptions pdfOptions = new PdfOptions();
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.ExportAllLayoutContent = false;
rasterizationOptions.NoScaling = true;

CadVportTableObject newView = new CadVportTableObject();
newView.Name = "*Active";
newView.CenterPoint.X = 1317603;
newView.CenterPoint.Y = 607300;
newView.ViewHeight = 168200;
newView.UseAspectRatio = true;
newView.ViewAspectRatio = 1.7669441141498217;

for (int i = 0; i < cadImage.ViewPorts.Count; i++)
                  {
                     CadVportTableObject currentView = (CadVportTableObject)(cadImage.ViewPorts[i]);
                     if ((currentView.Name == null && cadImage.ViewPorts.Count == 1) ||
                        string.Equals(currentView.Name.ToLowerInvariant(), "*active"))
                     {
                        cadImage.ViewPorts[i] = newView;
                        break;
                     }
                  }

rasterizationOptions.PageWidth = 1189;
rasterizationOptions.PageHeight = 840;
rasterizationOptions.DrawType = CadDrawTypeMode.UseObjectColor;
rasterizationOptions.VisibilityMode = VisibilityMode.AsPrint;
rasterizationOptions.Zoom = 1f;

rasterizationOptions.Layouts = new string[] { “Model” };

pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save(outputFilePath, pdfOptions);

图纸.7z (375.3 KB)

@jqxie,
你好。

是的,由于绘图部分的比例与输出尺寸的比例不符,因此似乎悄悄地出现了额外的重新缩放。

重新调整输出的缩放比例似乎适合解决这个问题:

...
rasterizationOptions.PageWidth = 1189;
rasterizationOptions.PageHeight = 1189 / 1.77f;
...

或者,您可以考虑在不触及视图的情况下删除不需要的块:

CadImage cadImage = (CadImage)Aspose.CAD.Image.Load("图纸.dwg");

PdfOptions pdfOptions = new PdfOptions();
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();

List<CadEntityBase> entitiesToRemove = new List<CadEntityBase> ();

foreach (CadEntityBase ceb in cadImage.Entities)
{
	if (ceb.TypeName == CadEntityTypeName.INSERT)
	{
		CadInsertObject cadInsert = (CadInsertObject)ceb;
		if (cadInsert.OriginalBlockName == "A0+1/2图框")
		{
			entitiesToRemove.Add(cadInsert);
		}
	}
}

foreach (CadEntityBase ceb in entitiesToRemove)
{
	cadImage.TryRemoveEntity(ceb);
}

cadImage.UpdateSize();

rasterizationOptions.PageWidth = 1189;
rasterizationOptions.PageHeight = 840;
rasterizationOptions.DrawType = CadDrawTypeMode.UseObjectColor;
rasterizationOptions.VisibilityMode = VisibilityMode.AsPrint;
rasterizationOptions.Zoom = 1f;

rasterizationOptions.Layouts = new string[] { "Model" };

pdfOptions.VectorRasterizationOptions = rasterizationOptions;
cadImage.Save("图纸.dwg.pdf", pdfOptions);

删除的部分可以恢复吗,被删除的部分也需要导出成PDF,删除了就导出不了

@jqxie,
不幸的是,与移除相比,添加实体的过程稍微复杂一些,目前还无法使用。但初始 DWG 文件没有改变,可以再次加载,初始实体将出现在那里。

我们现在的要求是导出的格式是标准的A0、A1…格式,但是图纸的尺寸是不固定的,可以不要导出窗口外的图形吗,你们可以在下个版本增加一下吗

@jqxie,
我们创建了 CADNET-9816 来更好地调查该问题。请注意,我们无法保证任何版本都能提供修复,这取决于我们当前的任务和问题的复杂性。