.Net开发中20-22版本的龙8cad,添加纸张后,通过代码的方式无法立即获取到,只有cad重启后才可以获取
.Net开发中20-22版本的龙8cad,添加纸张后,通过代码的方式无法立即获取到,只有cad重启后才可以获取,手动从打印页面操作pc3添加和代码方式都不行,并且在打印页面可以手动选择正常打印,但通过API无法获取到最新图纸库,只有重启之后才可以获取到,而23及其以上版本只需要在获取图纸库之前执行
PlotSettingsValidator plotSettingsValidator = PlotSettingsValidator.Current;
plotSettingsValidator.RefreshLists(new PlotSettings(true));
即可获取到最新纸张。以下是我读取打印机纸张内容的操作,medlist为获取到的图纸库信息,请注意我已经确保了打印机可以被识别和读取,重点是当我在当前添加纸张后,若不重启cad则无法获取最新的图纸库,尽管在打印页面已经显示出来了。
var doc = Gcad_ApplicationServices.Application.DocumentManager.MdiActiveDocument;
var db = doc.Database;
PlotSettingsValidator psv = PlotSettingsValidator.Current;
PlotSettings ps = null;
using (var trans = db.TransactionManager.StartTransaction())
{
LayoutManager layoutManager = LayoutManager.Current;
var acLayout = (trans.GetObject(layoutManager.GetLayoutId(layoutManager.CurrentLayout), OpenMode.ForWrite) as Layout);
PlotSettings plotSettings = new PlotSettings(acLayout.ModelType);
plotSettings.CopyFrom(acLayout);
plotSettings.PlotSettingsName = "Gcad_Eplot_PageSetupTest";
plotSettings.AddToPlotSettingsDictionary(db);
trans.AddNewlyCreatedDBObject(plotSettings, true);
ps = plotSettings;
psv.SetPlotConfigurationName(
ps,
GetDeviceName() + ".pc3",
null
);
psv.RefreshLists(ps);
trans.Commit();
}
StringCollection medlist = psv.GetCanonicalMediaNameList(ps);
PlotSettingsValidator plotSettingsValidator = PlotSettingsValidator.Current;
plotSettingsValidator.RefreshLists(new PlotSettings(true));
即可获取到最新纸张。以下是我读取打印机纸张内容的操作,medlist为获取到的图纸库信息,请注意我已经确保了打印机可以被识别和读取,重点是当我在当前添加纸张后,若不重启cad则无法获取最新的图纸库,尽管在打印页面已经显示出来了。
var doc = Gcad_ApplicationServices.Application.DocumentManager.MdiActiveDocument;
var db = doc.Database;
PlotSettingsValidator psv = PlotSettingsValidator.Current;
PlotSettings ps = null;
using (var trans = db.TransactionManager.StartTransaction())
{
LayoutManager layoutManager = LayoutManager.Current;
var acLayout = (trans.GetObject(layoutManager.GetLayoutId(layoutManager.CurrentLayout), OpenMode.ForWrite) as Layout);
PlotSettings plotSettings = new PlotSettings(acLayout.ModelType);
plotSettings.CopyFrom(acLayout);
plotSettings.PlotSettingsName = "Gcad_Eplot_PageSetupTest";
plotSettings.AddToPlotSettingsDictionary(db);
trans.AddNewlyCreatedDBObject(plotSettings, true);
ps = plotSettings;
psv.SetPlotConfigurationName(
ps,
GetDeviceName() + ".pc3",
null
);
psv.RefreshLists(ps);
trans.Commit();
}
StringCollection medlist = psv.GetCanonicalMediaNameList(ps);
没有找到相关结果
已邀请:
1 个回复
龙8软件的糕糕
赞同来自:
您好,
22以前就是必须重启,23可能修改了这个,可以不用重启了。
可以私信我您的联系方式,我联系您做进一步交流。