cad.net 讀寫pc3,pmp打印機文件 20191229更新任意紙張大小


更新的任意紙張批量打印預覽

 

 

 

首先是e大給了我這個英文工程:  https://github.com/phusband/PiaNO

然后我做了大量中文函數翻譯的工程和幾個函數的增設調改....

因為這個歪果仁更新已經過了很久了,而且中文也不宜和純英文工程合並..

所以我另建了一個工程,上傳了這個項目到github,

請去此下載:   https://github.com/jingjingbox/-_PianoCN

利用pianoCN現在可以讀改 PC3,STB,CTB三種格式的文件.

 

注意引用了相關的NuGet

  

2008的pc3翻譯....

meta{
 關聯到PMP的位置     user_defined_model_pathname="
 用戶定義的模型庫名稱user_defined_model_basename="
 驅動程序路徑名      driver_pathname="C:\Program Files (x86)\AutoCAD 2008\drv\gdiplot9.hdi
 驅動程序版本        driver_version="1.1-9.1.51.0
 驅動標簽線          driver_tag_line ="Windows 系統驅動程序 - 由 Autodesk 提供
 工具包版本          toolkit_version=1
 驅動程序類型        driver_type=1
 規范家庭名稱        canonical_family_name="System
 先顯示自定義        show_custom_first=TRUE
 類型是文本          truetype_as_text=TRUE
 規范模型名稱        canonical_model_name="System
 本地家庭名稱        localized_family_name="系統
 本地模型名稱        localized_model_name="系統
 只有文件            file_only=FALSE
 模型能力            model_abilities="555555555055
 UDM描述             udm_description="
 視窗系統設備名稱    win_device_name="pdfFactory Pro
 視窗系統設備名稱    win_driver_name= "pdfFactory 6
 短的網絡名稱        short_net_name="pdfFactory Pro
 友好的網絡名稱      friendly_net_name="FPP6:
 dm驅動程序版本      dm_driver_version=1555
 默認系統配置(猜測是從系統繼承打印機)        default_system_cfg=FALSE
 平台 platform ="2,6,1
 地區 locale="4B00409
}
mod{
 media{
  能力                abilities="100004455400144444000005005005000400000000000005000
  狀態                caps_state caps="00000
  擁有人              ui_owner="22212222121111212112221
  紙張最大的規格的x   size_max_x=914.40002441 (    0#.3C$ &E@)
  紙張最大的規格的y   size_max_y=1219.2000732 (    X,P,DT 5'@)
  description{
   0{
    caps_type=1
    name="ISO_A4_Portrait_210.00W_x_297.00H_-_(5,_17)_x_(205,_280)_=52600_MM
    media_bounds_urx=210.0
    media_bounds_ury=297.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=210.0
    printable_bounds_ury=297.0
    printable_area=62370.0
    dimensional=TRUE
   }
   //其他的都是每個紙張的信息

   1{
    caps_type=1
    name="ISO_A4_Landscape_297.00W_x_210.00H_-_(5,_17)_x_(292,_193)_=50512_MM
    media_bounds_urx=297.0
    media_bounds_ury=210.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=297.0
    printable_bounds_ury=210.0
    printable_area=62370.0
    dimensional=TRUE
   }
   2{
    caps_type=1
    name="ISO_A3_Portrait_297.00W_x_420.00H_-_(5,_17)_x_(292,_403)_=110782_MM
    media_bounds_urx=297.0
    media_bounds_ury=420.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=297.0
    printable_bounds_ury=420.0
    printable_area=124740.0
    dimensional=TRUE
   }
   3{
    caps_type=1
    name="ISO_A3_Landscape_420.00W_x_297.00H_-_(5,_17)_x_(415,_280)_=107830_MM
    media_bounds_urx=420.0
    media_bounds_ury=297.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=420.0
    printable_bounds_ury=297.0
    printable_area=124740.0
    dimensional=TRUE
   }
   4{
    caps_type=1
    name="ISO_A2_Portrait_420.00W_x_594.00H_-_(5,_17)_x_(415,_577)_=229600_MM
    media_bounds_urx=420.0
    media_bounds_ury=594.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=420.0
    printable_bounds_ury=594.0
    printable_area=249480.00000 (     $!T#D$:G )
    dimensional=TRUE
   }
   5{
    caps_type=1
    name="ISO_A2_Landscape_594.00W_x_420.00H_-_(5,_17)_x_(589,_403)_=225424_MM
    media_bounds_urx=594.0
    media_bounds_ury=420.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=594.0
    printable_bounds_ury=420.0
    printable_area=249480.00000 (     $!T#D$:G )
    dimensional=TRUE
   }
   6{
    caps_type=1
    name="ISO_A1_Portrait_594.00W_x_841.00H_-_(5,_17)_x_(589,_824)_=471288_MM
    media_bounds_urx=594.0
    media_bounds_ury=841.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=594.0
    printable_bounds_ury=841.0
    printable_area=499554.00000 (     (A]'D&X?P)
    dimensional=TRUE
   }
   7{
    caps_type=1
    name="ISO_A1_Landscape_841.00W_x_594.00H_-_(5,_17)_x_(836,_577)_=465360_MM
    media_bounds_urx=841.0
    media_bounds_ury=594.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=841.0
    printable_bounds_ury=594.0
    printable_area=499554.00000 (     (A]'D&X?P)
    dimensional=TRUE
   }
   8{
    caps_type=1
    name="ISO_expand_A1_Portrait_594.00W_x_841.00H_-_(5,_10)_x_(589,_831)_=479464_MM
    media_bounds_urx=594.0
    media_bounds_ury=841.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=594.0
    printable_bounds_ury=841.0
    printable_area=499554.00000 (     (A]'D&X?P)
    dimensional=TRUE
   }
   9{
    caps_type=1
    name="ISO_expand_A1_Landscape_841.00W_x_594.00H_-_(5,_10)_x_(836,_584)_=476994_MM
    media_bounds_urx=841.0
    media_bounds_ury=594.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=841.0
    printable_bounds_ury=594.0
    printable_area=499554.00000 (     (A]'D&X?P)
    dimensional=TRUE
   }
   10{
    caps_type=1
    name="ISO_A0_Portrait_841.00W_x_1189.00H_-_(5,_17)_x_(836,_1172)_=959805_MM
    media_bounds_urx=841.0
    media_bounds_ury=1189.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=841.0
    printable_bounds_ury=1189.0
    printable_area=999949.00000 (     !J$+D$QEP)
    dimensional=TRUE
   }
   11{
    caps_type=1
    name="ISO_expand_A0_Portrait_841.00W_x_1189.00H_-_(5,_10)_x_(836,_1179)_=971439_MM
    media_bounds_urx=841.0
    media_bounds_ury=1189.0
    printable_bounds_llx=0.0
    printable_bounds_lly=0.0
    printable_bounds_urx=841.0
    printable_bounds_ury=1189.0
    printable_area=999949.00000 (     !J$+D$QEP)
    dimensional=TRUE
   }
  }
 }
}
del{
 media{
  abilities="100004455400144444000005005005000400000000000005000
  caps_state ="00000
  ui_owner="22212222121111212112221
  size_max_x =914.40002441 (    0#.3C$ &E@)
  size_max_y=1219.2000732 (    X,P,DT 5'@)
 }
}
udm{
 calibration{
  _x=1.0
  _y=1.0
 }
 media{
  abilities="100004455400144444000005005005000400000000000005000
  caps_state="00000
  ui_owner="22212222121111212112221
  size_max_x=914.40002441 (    0#.3C$ &E@)
  size_max_y=1219.2000732 (    X,P,DT 5'@)
 }
}
hidden{
 media{
  abilities="04455400144444000005005005000400000000000005000
  caps_state="00000
  ui_owner="22212222121111212112221
  size_max_x=914.40002441 (    0#.3C$ &E@)
  size_max_y=1219.2000732 (    X,P,DT 5'@)
 }
}
View Code

 

2019的pc3翻譯...

meta{
 關聯到PMP的位置     user_defined_model_pathname="G:\K01.驚驚連盒\04.工作小工具\2019dwgToPdf打印機\DWG To PDF.pmp
 用戶定義的模型庫名稱user_defined_model_basename="
 驅動程序路徑名      driver_pathname="C:\Program Files\Autodesk\AutoCAD 2019\drv\pdfplot15.hdi
 驅動程序版本        driver_version="1.1-15.0.61.0 [v018-1] [v018-1]
 驅動標簽線          driver_tag_line="PDF ePlot - by Autodesk
 工具包版本          toolkit_version=1
 驅動類型            driver_type=3
 規范家庭名稱        canonical_family_name="Autodesk ePlot
 先顯示自定義        show_custom_first=FALSE
 以文本形式輸入      truetype_as_text=TRUE
 規范模型名稱        canonical_model_name="pdf
 本地家庭名稱        localized_family_name="Autodesk ePlot (PDF)
 本地模型名稱        localized_model_name="DWG To PDF
 是否打印到文件(false就是后台打印?)      file_only=TRUE
 模型能力            model_abilities="000550055000
 udm描述             udm_description="
 短的網絡名稱        short_net_name="
 友好的網絡名稱      friendly_net_name="
 dm驅動程序版本      dm_driver_version=0
 默認系統配置(猜測是從系統繼承打印機)   default_system_cfg=FALSE
 平台                platform="2,10,0
 地區                locale="4B0040
 配置說明            config_description="
 配置自動線軸        config_autospool=FALSE
}                
  
media{             
 選擇方法            selection_method=2
 類型                type="
 dm方向              dm_orientation=1
 實際打印x邊界偏移   actual_printable_bounds_llx=0.0
 實際打印y邊界偏移   actual_printable_bounds_lly=0.0
 實際打印x邊界范圍   actual_printable_bounds_urx=210.0
 實際打印y邊界范圍   actual_printable_bounds_ury=297.0
 份數副本            number_of_copies=1
 
 size{
  name="ISO_A4_(210.00_x_297.00_MM)
  group=4
  情景模式           landscape_mode=FALSE
  長打印_減少        longplot_reduction=1.0
  媒介描述           media_description{
  實際打印x邊界偏移  printable_bounds_llx=5.0
  實際打印y邊界偏移  printable_bounds_lly=17.0
  實際打印x邊界范圍  printable_bounds_urx=205.0
  實際打印y邊界范圍  printable_bounds_ury=280.0
  實際打印面積       printable_area=52600.0
  尺寸的             dimensional=TRUE
  媒介界限           media_bounds{
  紙張范圍           urx=210.0
  紙張范圍           ury=297.0
   }
  }
 }
}
io{
 type=2
 pathname="
 allsysvalid=FALSE
 plot_to_file=TRUE
}
res_color_mem{
 name="RGB
 num_colors=16777216
 color_depth=24
 num_undithered_colors=16777216
 color_system=1
 dm_color=1
 lines_overwrite=TRUE
 resolution{
  name="Default
  phys_resolution_x=600.0
  phys_resolution_y=600.0
  addr_resolution_x=1.0
  addr_resolution_y=1.0
  effective_resolution_x=600.0
  effective_resolution_y=600.0
 }
}
custom{
 0{
  name="Create_Bookmarks
  value=TRUE
 }
 1{
  name="Thumbnail_Title
  value=TRUE
 }
 2{
  name="Sheet_Links
  value=TRUE
 }
 3{
  name="Rasterize_Geometry
  value=FALSE
 }
 4{
  name="View_New_File
  value=TRUE
 }
 5{
  name="Custom_Raster_Resolution
  value=FALSE
 }
 6{
  name="Custom_DWF_Resolution
  value=FALSE
 }
 7{
  name="Custom_Monochrome_Resolution
  value=FALSE
 }
 8{
  name="Custom_Gradient_Resolution
  value=FALSE
 }
 9{
  name="Gradient_Limit
  value=600
 }
 10{
  name="Monochrome_Raster_Limit
  value=400
 }
 11{
  name="Raster_Limit
  value=400
 }
 12{
  name="All_As_Geometry
  value=FALSE
 }
 13{
  name="Capture
  value=2
 }
 14{
  name="Font_Capture
  value=TRUE
 }
 15{
  name="Hardcopy_Resolution
  value=600
 }
 16{
  name="Include_Layer
  value=TRUE
 }
 17{
  name="Resolution
  value=14
 }
}
View Code

 

20191229更新:

我做的批量打印都是基於Acad2019的,因為2019的<dwg to pdf>打印機打印出來的東西比PdfFactory和低版本的要清晰和文件小.

之前挖的坑是沒有修改pmp的方法,現在給工程出來了,而且這次更新主要的目的是提供任意紙張大小的方法:修改pmp文件..

但是還是有很多東西需要說明一下.

 

批量打印不可以用模態對話框,打印預覽的時候會卡死.所以要用非模態的.

(這個是我實現成功的方式,但是不一定要非模態,或許有其他方法處理就可以了....)

 

打開pmp文件之后的修改注意事項

[pmp]注意事項:
        不能改:
        系統紙張數量
        系統紙張的名稱
        只能改:
        系統紙張邊界范圍,在 mod:description下
        用戶紙張的大小  ,在 udm:添加size,添加description

[pmp]解析: 
    mod:media:size:        本地中文名稱和英文名稱對照表
    mod:media:description: 是紙張大小和紙張邊界的描述--這里就是修改紙張大小
    del:   估計是刪除紙張的..
    udm:   用戶定義的紙張
    hidden:隱藏紙張,主要作用是手選打印的時候可以不顯示那么多紙張. 

[pmp]用戶表解析: 
    udm{                     這里就是用戶定義的
            size{            中英對換表
            0{
            caps_type=2
            name="UserDefinedMetric (2222.00 x 2222.00毫米)
            localized_name="用戶 1 (2222.00 x 2222.00 毫米)  這里文字可以隨便寫的
            media_description_name="UserDefinedMetric 橫向 2222.00W x 2222.00H - (5, 4) x (2215, 2218) =4896479 毫米
            media_group=15
            landscape_mode=TRUE
            }
            }
            description{     紙張信息表,注意所有的小數點存在
            0{
            caps_type=2
            name="UserDefinedMetric 橫向 2222.00W x 2222.00H - (5, 4) x (2215, 2218) =4896479 毫米
            media_bounds_urx=2222.0
            media_bounds_ury=2222.0
            printable_bounds_llx=5.0999999046   //注意所有的小數點必須存在
            printable_bounds_lly=4.0999999046   //注意所有的小數點必須存在
            printable_bounds_urx=2215.8999023   //注意所有的小數點必須存在
            printable_bounds_ury=2218.8999023   //注意所有的小數點必須存在
            printable_area=4896479.8408  
            dimensional=TRUE
            }
    } 

[我的pmp設置]
    我在2019 dwgToPdf打印機先
    恢復了-默認值,再-過濾圖紙尺寸,
    然后剩下A0 A1 A2 A3 A4 去掉邊界值,這一步就可以手動打印無邊了.
    ISO A0 (841.00 x 1189.00 毫米)       建議用
    ISO_expand_A0_(841.00_x_1189.00_MM) 這種cad2008用這種紙張會有邊界靠左的問題,2019就沒有問題. 

修改紙張的邊界偏移的時候,
左推到右:圖形會以右邊中點進行等比縮放,
下推到上:圖形會以上邊中點進行等比縮放,
然后此時要重設圖形原點.否則圖紙是偏的. 

 

可以用pc3生成pmp文件,這樣pmp是臨時的,你在上面加(用戶)圖紙和減(用戶)圖紙,就可以打不定邊長的圖紙辣~~~~~~~~~~~~~~

修改pc3和pmp上面的路徑.這里就是提供一個方法給大家修改節點屬性的方法

#if AC2019
using PiaNO;
#endif 
using System.IO;

namespace JoinBox.批量打印
{
    public static class Pc3PmpChange
    { 
        public const string DTP = "DWG TO PDF.PC3";

        /// <summary>
        /// 附着pmp路徑到pc3內
        /// </summary>
        /// <param name="plotDevice">當前調用的打印機</param>
        /// <param name="dwgtopdfpmp">pmp路徑</param>
        public static void ChangUserDefinedModel(string plotDevice, string dwgtopdfpmp)
        {
#if AC2019
            //獲取這個打印機的完整路徑
            string printerConfigDir = CadSystem.Getvar("PrinterConfigDir") + "\\" + DTP;
            var ns = new string[] { printerConfigDir, dwgtopdfpmp };

            foreach (var path in ns)
            {
                if (!File.Exists(path))
                {
                    continue;
                } 
                var PdfConfig = new PlotterConfiguration(path);
                //解壓了打印機信息之后,遍歷打印機節點
                foreach (var nodeA in PdfConfig)
                {
                    if (nodeA.NodeName == "meta")
                    {
                        nodeA.ValueChang("user_defined_model_pathname" + "_str", dwgtopdfpmp);
                        break;
                    }
                }
                PdfConfig.Saves();
            }
#endif 
        }
    }
}
View Code

 

添加紙張

        /// <summary>
        /// 根據范圍帶下生成紙張,返回紙張名稱
        /// </summary>
        /// <param name="ext">打印范圍</param>
        /// <param name="dwgtopdfpmp">打印機pmp紙張文件路徑</param> 
        /// <returns></returns>
        public PlotterConfiguration AddPrinter(string dwgtopdfpmp)
        {
            Name = $"JBS_PDF_({PaperY.ToString("#0.00")}_x_{PaperX.ToString("#0.00")}_MM)";

            // JoinBoxStandard 嘻嘻
            //                                                              (5,_17)這個是默認偏移量
            // media_description_name="ISO_A0_Portrait_841.00W_x_1189.00H_-_(5,_17)_x_(836,_1172)_=959805_MM 
            //實際打印面積(雖然因為偏移值是0,等於長乘寬就可以,但是為了日后我忘記這里怎么算的,還是求一下吧)
            double area = (PaperY - (Offset_Left * 2)) * (PaperX - (Offset_Down * 2));

            //如果沒有小數點保留,可能cad閃退!
            StringBuilder description_name = new StringBuilder();
            description_name.Append($"JBS_PDF_Portrait_{PaperY.ToString("#0.00")}W_x_{PaperX.ToString("#0.00")}H");
            description_name.Append("_-_");
            description_name.Append($"({Offset_Left.ToString("#0.00")},_{Offset_Down.ToString("#0.00")})");//偏移量
            description_name.Append("_x_");
            description_name.Append($"({(PaperY - Offset_Left).ToString("#0.00")},_{(PaperX - Offset_Down).ToString("#0.00")})_");
            description_name.Append($"={area.ToString("#0.00")}_MM");
            Media_description_name = description_name.ToString();

            PdfConfig = new PlotterConfiguration(dwgtopdfpmp)
            {
                TruetypeAsText = true
            };

            //解壓了打印機信息之后,遍歷打印機節點  
            foreach (var nodeA in PdfConfig)
            {
                if (nodeA.NodeName == "udm")
                {
                    foreach (var nodeB in nodeA)
                    {
                        if (nodeB.NodeName == "media")
                        {
                            PiaNode piaNode_size = null;
                            PiaNode piaNode_description = null;

                            //遍歷是否有節點
                            foreach (PiaNode nodeC in nodeB)
                            {
                                string nden = nodeC.NodeName;
                                switch (nden)
                                {
                                    case str_size:
                                        piaNode_size = nodeC;
                                        break;
                                    case str_description:
                                        piaNode_description = nodeC;
                                        break;
                                }
                            }
                            //找不到就添加節點
                            if (piaNode_size == null)
                            {
                                piaNode_size = nodeB.Add(str_size);
                            }
                            if (piaNode_description == null)
                            {
                                piaNode_description = nodeB.Add(str_description);
                            }
                            //在節點中添加/修改信息
                            AddPaperEnAndCn(piaNode_size);
                            AddPaperDescription(piaNode_description);
                            break;
                        }
                    }
                    break;
                }
            }
            PdfConfig.Saves();
            return PdfConfig;
        }

        /// <summary>
        /// 添加pmp紙張-中英對換表
        /// </summary>
        /// <param name="nodeC"></param>
        private void AddPaperEnAndCn(PiaNode nodeC)
        {
            //圖紙數量+1就是新建一張圖   
            var spl = '\n';
            int count = nodeC.Count();
            string name = count.ToString();
            string[] paper = new string[] {
                                name+ "{",
                                $"caps_type=2",             //1是系統的,2是用戶的.這里嚴格,可不可以在打印紙看見就是這里了
                                $"name=\"{Name}",
                                $"localized_name=\"{Localized_name}",
                                $"media_description_name=\"{Media_description_name}",
                                $"media_group=15",          //4是系統的,15是用戶的.
                                "landscape_mode=TRUE\n}",   //false是系統的,true是用戶的
                                };
            string paperAll = string.Join(spl + " ", paper) + spl;
            PlusNode(nodeC, name, paperAll);
        }

        /// <summary>
        /// 判斷是否已有同名節點,有就不加入
        /// </summary>
        /// <param name="nodeC"></param>
        /// <param name="name"></param>
        /// <param name="paperAll"></param>
        private void PlusNode(PiaNode nodeC, string name, string paperAll)
        {
            bool yiyou = true;
            foreach (var nodeD in nodeC)
            {
                foreach (var pair in nodeD.Values)
                {
                    if (pair.Key == "media_description_name_str" &&
                        pair.Value == Media_description_name)
                    {
                        yiyou = false;
                        break;
                    }
                }
                if (!yiyou)
                {
                    break;
                }
            }
            if (yiyou)
            {
                nodeC.Add(name, paperAll);
            }
        }

        /// <summary>
        /// 添加pmp紙張-信息
        /// </summary>
        /// <param name="nodeC"></param>
        private void AddPaperDescription(PiaNode nodeC)
        {
            var spl = '\n';
            int count = nodeC.Count();
            string name = count.ToString();
            string[] paper = new string[] {
                               name + "{",
                               $"caps_type=2",  //1是系統的,2是用戶的.這里嚴格,可不可以在打印紙看見就是這里了
                               $"name=\"{Media_description_name}",
                               $"media_bounds_urx={ChangDouble(PaperX)}",
                               $"media_bounds_ury={ChangDouble(PaperY)}",
                               $"printable_bounds_llx={ChangDouble(Offset_Left)}",
                               $"printable_bounds_lly={ChangDouble(Offset_Down)}",
                               $"printable_bounds_urx={ChangDouble(PaperX)}",
                               $"printable_bounds_ury={ChangDouble(PaperY)}",
                               $"printable_area={ChangDouble(PaperX * PaperY)}",
                               "dimensional=TRUE\n}",
                                };
            string paperAll = string.Join(spl + " ", paper) + spl;
            PlusNode(nodeC, name, paperAll);
        }

        /// <summary>
        /// 保證數字在12位內
        /// </summary>
        /// <param name="dos"></param>
        /// <returns></returns>
        string ChangDouble(double dos)
        {
            var str = string.Format("{0:0.0#########}", dos);
            if (str.Length >= 12)
            {
                return str.Substring(0, 12);
            }
            return str;
        }
View Code

 

刪除紙張的方法

    public static class PrinterTool
    {
        /// <summary>
        /// 移除圖紙 
        /// </summary> 
        /// <param name="dwgtopdfpmp">pmp名稱</param>
        /// <param name="printerNames">要移除的紙張名稱</param>
        public static void RemovePrinters(this Plot plot, string dwgtopdfpmp, string[] printerNames, Database db, Transaction tr)
        {
            var pdfConfig = new PlotterConfiguration(dwgtopdfpmp)
            {
                TruetypeAsText = true
            };
            pdfConfig.RemovePrinters(printerNames);
            pdfConfig.Saves();

            //然后需要刷新一次打印機設備紙張,不然會有殘留顯示
            var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead, false) as BlockTable;
            foreach (ObjectId btrId in bt)
            {
                var btr = tr.GetObject(btrId, OpenMode.ForRead, false) as BlockTableRecord;
                if (btr.IsLayout)//是布局才進入
                {
                    Layout layout = tr.GetObject(btr.LayoutId, OpenMode.ForRead) as Layout;
                    var ps = new PlotSettings(layout.ModelType);
                    plot.RefreshLists(ps);
                }
            }
        }

        /// <summary>
        /// 移除圖紙 
        /// </summary> 
        /// <param name="pdfConfig">pmp的解析</param>
        /// <param name="printerNames">要移除的紙張名稱</param>
        static void RemovePrinters(this PlotterConfiguration pdfConfig, string[] printerNames)
        {
            //解壓了打印機信息之后,遍歷打印機節點  
            foreach (var nodeA in pdfConfig)
            {
                if (nodeA.NodeName == "udm")
                {
                    foreach (var nodeB in nodeA)
                    {
                        if (nodeB.NodeName == "media")
                        {
                            //遍歷是否有節點
                            foreach (PiaNode nodeC in nodeB)
                            {
                                switch (nodeC.NodeName)
                                {
                                    case Printer.str_size:
                                    case Printer.str_description:
                                        {
                                            nodeC.RemoveChildNodes(printerNames);
                                        }
                                        break;
                                }
                            }
                            break;
                        }
                    }
                    break;
                }
            }
        }
    }
View Code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM