乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 92|回复: 3

多个图到pdf

[复制链接]

14

主题

28

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2020-9-26 07:31:06 | 显示全部楼层 |阅读模式
我已尝试更改此链接的代码https://www.keanw.com/2007/10/plotting-a-wind.html
我想通过选择块参照作为边界来绘制多个pdf<br>这是我的代码<br>和<pre>
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4. using Autodesk.AutoCAD.EditorInput;
  5. using Autodesk.AutoCAD.PlottingServices;
  6. using Autodesk.AutoCAD.Geometry;
  7. using System.Runtime.InteropServices;
  8. using System;
  9. using System.Collections.Generic;
  10. namespace PlottingApplication
  11. {
  12.     public class SimplePlottingCommands
  13.     {
  14.         [DllImport("accore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "acedTrans")]
  15.         static extern int acedTrans(double[] point, IntPtr fromRb, IntPtr toRb, int disp, double[] result);
  16.         [CommandMethod("winplot")]
  17.         static public void WindowPlot()
  18.         {
  19.             Document doc = Application.DocumentManager.MdiActiveDocument;
  20.             Editor ed = doc.Editor;
  21.             Database db = doc.Database;
  22.             //PromptPointOptions ppo = new PromptPointOptions("\nSelect first corner of plot area: ");
  23.             //ppo.AllowNone = false;
  24.             //PromptPointResult ppr = ed.GetPoint(ppo);
  25.             //if (ppr.Status != PromptStatus.OK) return;
  26.             //PromptCornerOptions pco =new PromptCornerOptions("\nSelect second corner of plot area: ",first);
  27.             //ppr = ed.GetCorner(pco);
  28.             //if (ppr.Status != PromptStatus.OK) return;
  29.             int n = 1;
  30.             var pso = new PromptSelectionOptions();
  31.             pso.MessageForAdding = "\nsilahkan select All :";
  32.             var psr = ed.GetSelection(pso);
  33.             if (psr.Status != PromptStatus.OK) return;
  34.             var dic = new Dictionary();
  35.             using (var tr = db.TransactionManager.StartTransaction())
  36.             {
  37.                 short bgPlot = (short)Application.GetSystemVariable("BACKGROUNDPLOT");
  38.                 //set the BACKGROUNDPLOT = 0 temporarily.
  39.                 Application.SetSystemVariable("BACKGROUNDPLOT", 0);
  40.                 foreach (SelectedObject ss in psr.Value)
  41.                 {
  42.                     var br = ss.ObjectId.GetObject(OpenMode.ForRead) as BlockReference;
  43.                     if (br.Bounds.HasValue)
  44.                     {
  45.                         var extents = br.Bounds;
  46.                         var ext1 = extents.Value.MinPoint;
  47.                         var ext2 = extents.Value.MaxPoint;
  48.                         dic.Add(ext1, ext2);
  49.                     }
  50.                 }
  51.                 if (dic.Count == 0) return;
  52.                 // Transform from UCS to DCS
  53.                 Point3d first; Point3d second;
  54.                 foreach (var item in dic)
  55.                 {
  56.                     first = item.Key;
  57.                     second = item.Value;
  58.                     ResultBuffer rbFrom = new ResultBuffer(new TypedValue(5003, 1)), rbTo = new ResultBuffer(new TypedValue(5003, 2));
  59.                     double[] firres = new double[] { 0, 0, 0 };
  60.                     double[] secres = new double[] { 0, 0, 0 };
  61.                     // Transform the first point...
  62.                     acedTrans(first.ToArray(), rbFrom.UnmanagedObject, rbTo.UnmanagedObject, 0, firres);
  63.                     // ... and the second
  64.                     acedTrans(second.ToArray(), rbFrom.UnmanagedObject, rbTo.UnmanagedObject, 0, secres);
  65.                     // We can safely drop the Z-coord at this stage
  66.                     Extents2d window = new Extents2d(firres[0], firres[1], secres[0], secres[1]);
  67.                     // We'll be plotting the current layout
  68.                     BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead);
  69.                     Layout lo = (Layout)tr.GetObject(btr.LayoutId, OpenMode.ForRead);
  70.                     // We need a PlotInfo object
  71.                     // linked to the layout
  72.                     PlotInfo pi = new PlotInfo();
  73.                     pi.Layout = btr.LayoutId;
  74.                     // We need a PlotSettings object
  75.                     // based on the layout settings
  76.                     // which we then customize
  77.                     PlotSettings ps = new PlotSettings(lo.ModelType);
  78.                     ps.CopyFrom(lo);
  79.                     // The PlotSettingsValidator helps
  80.                     // create a valid PlotSettings object
  81.                     PlotSettingsValidator psv = PlotSettingsValidator.Current;
  82.                     // We'll plot the extents, centered and
  83.                     // scaled to fit
  84.                     psv.SetPlotWindowArea(ps, window); psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
  85.                     psv.SetUseStandardScale(ps, true);
  86.                     psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
  87.                     psv.SetPlotCentered(ps, true);
  88.                     // We'll use the standard DWF PC3, as
  89.                     // for today we're just plotting to file
  90.                     psv.SetPlotConfigurationName(ps, "DWG To PDF.pc3", "ISO_full_bleed_A3_(420.00_x_297.00_MM)");
  91.                   //  psv.SetPlotConfigurationName(ps,"DWF6 ePlot.pc3", "ANSI_A_(8.50_x_11.00_Inches)");
  92.                     // We need to link the PlotInfo to the
  93.                     // PlotSettings and then validate it
  94.                     pi.OverrideSettings = ps;
  95.                     PlotInfoValidator piv = new PlotInfoValidator();
  96.                     piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
  97.                     piv.Validate(pi);
  98.                     // A PlotEngine does the actual plotting
  99.                     // (can also create one for Preview)
  100.                     if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
  101.                     {
  102.                         PlotEngine pe = PlotFactory.CreatePublishEngine();
  103.                         using (pe)
  104.                         {
  105.                             // and allow thej user to cancel
  106.                             PlotProgressDialog ppd = new PlotProgressDialog(false, 1, true);
  107.                             using (ppd)
  108.                             {
  109.                                 ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "Custom Plot Progress");
  110.                                 ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job");
  111.                                 ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet");
  112.                                 ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress");
  113.                                 ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress");
  114.                                 ppd.LowerPlotProgressRange = 0;
  115.                                 ppd.UpperPlotProgressRange = 100;
  116.                                 ppd.PlotProgressPos = 0;
  117.                                 // Let's start the plot, at last
  118.                                 ppd.OnBeginPlot();
  119.                                 ppd.IsVisible = true;
  120.                                 pe.BeginPlot(ppd, null);
  121.                                 // We'll be plotting a single document
  122.                                 pe.BeginDocument(pi, doc.Name, null, 1, true, "c:\\test-output" + n.ToString());
  123.                                 // Which contains a single sheet
  124.                                 ppd.OnBeginSheet();
  125.                                 ppd.LowerSheetProgressRange = 0;
  126.                                 ppd.UpperSheetProgressRange = 100;
  127.                                 ppd.SheetProgressPos = 0;
  128.                                 PlotPageInfo ppi = new PlotPageInfo();
  129.                                 pe.BeginPage(ppi, pi, true, null);
  130.                                 [color=red][b]pe.BeginGenerateGraphics(null);[/b][/color] // [color=red]problem in this part [/color]
  131.                                 pe.EndGenerateGraphics(null);
  132.                                 // Finish the sheet
  133.                                 pe.EndPage(null);
  134.                                 ppd.SheetProgressPos = 100;
  135.                                 ppd.OnEndSheet();
  136.                                 // Finish the document
  137.                                 pe.EndDocument(null);
  138.                                 // And finish the plot
  139.                                 ppd.PlotProgressPos = 100;
  140.                                 ppd.OnEndPlot();
  141.                                 pe.EndPlot(null);
  142.                                 n++;
  143.                             }
  144.                         }
  145.                     }
  146.                     else
  147.                     {
  148.                         ed.WriteMessage("\nAnother plot is in progress.");
  149.                     }
  150.                 }
  151.                 Application.SetSystemVariable("BACKGROUNDPLOT", bgPlot);
  152.                 tr.Commit();
  153.             }
  154.         }
  155.     }
  156. }

vum2ytbya5q.png

vum2ytbya5q.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

14

主题

28

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2020-10-3 16:34:09 | 显示全部楼层
任何机构都可以帮助我
回复

使用道具 举报

47

主题

221

帖子

17

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
394
发表于 2020-11-15 12:48:01 | 显示全部楼层
你可以网上搜索。净编译器吗?我需要从
回复

使用道具 举报

2

主题

14

帖子

3

银币

初来乍到

Rank: 1

铜币
22
发表于 2021-1-8 07:43:50 | 显示全部楼层
绘图文件夹存在吗?
https://forums . Autodesk . com/t5/net/epage cancelled-error/TD-p/9012395
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:36 , Processed in 0.150374 second(s), 63 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表