2016-08-26 7 views
-1

こんにちはこれは私のコードなので、このコードを実行して出力する方法はわかりません。私にこの答えを提案してください。そして、このコードを使ってオートキャドのコマンドを作成したいので、この要件に従って私に提案してください。次のコードをautocadで実行していますか?

using System; 
using System.IO; 
using System.Globalization; 
using UDC; 
using AutoCAD = Autodesk.AutoCAD.Interop; 

namespace AutoCADtoPDF 
{ 
class Program 
{ 
    static void PrintAutoCADtoPDF(string AutoCADFilePath) 
    { 
     //Create a UDC object and get its interfaces 
     IUDC objUDC = new APIWrapper(); 
     IUDCPrinter Printer = objUDC.get_Printers("Universal Document Converter"); 
     IProfile Profile = Printer.Profile; 

     //Use Universal Document Converter API to change settings of converterd drawing 

     //Load profile located in folder "%APPDATA%\UDC Profiles". 
     //Value of %APPDATA% variable should be received using Environment.GetFolderPath method. 
     //Or you can move default profiles into a folder you prefer.   
     string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
     string ProfilePath = Path.Combine(AppDataPath, @"UDC Profiles\Drawing to PDF.xml"); 
     Profile.Load(ProfilePath); 

     Profile.OutputLocation.Mode = LocationModeID.LM_PREDEFINED; 
     Profile.OutputLocation.FolderPath = @"c:\UDC Output Files"; 

     Profile.PostProcessing.Mode = PostProcessingModeID.PP_OPEN_FOLDER; 

     AutoCAD.AcadApplication App = new AutoCAD.AcadApplicationClass(); 

     double Version = double.Parse(App.Version.Substring(0, 4), new CultureInfo("en-US")); 

     //Open drawing from file 
     Object ReadOnly = false; 
     Object Password = Type.Missing; 
     AutoCAD.AcadDocument Doc = App.Documents.Open(AutoCADFilePath, ReadOnly, Password); 

     //AutoCAD.Common.AcadPaperSpace ActiveSpace; 
     AutoCAD.Common.AcadLayout Layout; 

     //Change AutoCAD preferences for scaling the drawing to page 
     if (Doc.ActiveSpace == 0) 
      Layout = Doc.PaperSpace.Layout; 
     else 
      Layout = Doc.ModelSpace.Layout; 

     Layout.PlotType = AutoCAD.Common.AcPlotType.acExtents; 
     Layout.UseStandardScale = true; 
     Layout.StandardScale = AutoCAD.Common.AcPlotScale.acScaleToFit; 
     Layout.CenterPlot = true; 

     Object nBACKGROUNDPLOT = 0, nFILEDIA = 0, nCMDDIA = 0; 
     if (Version >= 16.1f) 
     { 
      nBACKGROUNDPLOT = Doc.GetVariable("BACKGROUNDPLOT"); 
      nFILEDIA = Doc.GetVariable("FILEDIA"); 
      nCMDDIA = Doc.GetVariable("CMDDIA"); 

      Object xNull = 0; 
      Doc.SetVariable("BACKGROUNDPLOT", xNull); 
      Doc.SetVariable("FILEDIA", xNull); 
      Doc.SetVariable("CMDDIA", xNull); 
     } 

     Doc.Plot.QuietErrorMode = true; 

     //Plot the drawing 
     Doc.Plot.PlotToDevice("Universal Document Converter"); 

     if (Version >= 16.1f) 
     { 
      //Restore AutoCAD default preferences 
      Doc.SetVariable("BACKGROUNDPLOT", nBACKGROUNDPLOT); 
      Doc.SetVariable("FILEDIA", nFILEDIA); 
      Doc.SetVariable("CMDDIA", nCMDDIA); 
     } 

     //Close drawing 
     Object SaveChanges = false; 
     Doc.Close(SaveChanges, Type.Missing); 

     //Close Autodesk AutoCAD 
     App.Quit(); 
    } 

    static void Main(string[] args) 
    { 
     string TestFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestFile.dwg"); 
     PrintAutoCADtoPDF(TestFilePath); 
    } 
} 
} 
+1

次のコードはどのように実行されますか? StackOverflowのは、私はそれにcommandmethodを追加することができると言うことを意味 – karan

+0

...自分で試してみてください..あなたに言うつもりはないですか? – jackson

答えて

3

original sourceのコメントは読んでいますか?

このコードは、dwgファイルのアクティブなスペースをpdfファイルに出力するスタンドアロンアプリケーション(exe)をビルドするために、3番目のアプリケーション名Universal Document Converter(UDC)を使用する例です。 UDCソフトウェアをインストールする必要があります。 AutoCADプラグイン(CommandMethodのあるdll)に変換することはできません。 あなたは確かにUDC Supportでこれに関するより多くの情報を得ることができます。

あなたは理解していないウェブ上で発見のコードをコピーし、あなたのニーズに合わせてそれらを変更するには、ここや他の場所で誰かを尋ねることによって、.NETとAutoCAD APIを学ぶことはありません。

+0

ああ...私は全体のコードを読んでいない。 2番目のステートメントについて:本当に:-) – Alain

0

最初に:aをランタイムに追加します。

using Autodesk.AutoCAD.Runtime; 

次へ:メソッドに属性を追加します。

[CommandMethod("YOURCOMMANDNAMEINAUTOCAD")] 

最後:AutoCADで表示するには、クラスとメソッドをパブリックにする必要があります。

更新:(非常に最後):あなたのメソッドはパラメータを取ることができません。

+0

これはうまくいきません、私の返事を見てください。 – gileCAD

関連する問題