明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3175|回复: 3

[讨论] 请问高手:lsp能在cad视口中截图吗?

[复制链接]
发表于 2012-6-28 19:12:28 | 显示全部楼层 |阅读模式
本帖最后由 jack093 于 2013-6-23 20:27 编辑

请问高手:lsp能在cad视口中截图吗?
就是像qq截图一样在cad窗口中截图到文件(bmp jpg)或剪切板
没有找到相应的方法
发表于 2012-6-28 19:52:38 | 显示全部楼层
Try Bmpout / Jpgout
 楼主| 发表于 2012-6-28 20:07:47 | 显示全部楼层
希望用鼠标指点区域,直接到剪切板
否则还不如用外部程序截图,就是要麻烦些
 楼主| 发表于 2013-5-4 10:45:27 | 显示全部楼层
本帖最后由 jack093 于 2013-6-13 09:24 编辑

这个功能如果autodesk公司做的话应该是小菜一碟。me.support@autodesk.com 期待...
http://through-the-interface.typepad.com/through_the_interface/2007/04/taking_a_snapsh_1.html
1 using Autodesk.AutoCAD.ApplicationServices;

    2 using Autodesk.AutoCAD.DatabaseServices;

    3 using Autodesk.AutoCAD.EditorInput;

    4 using Autodesk.AutoCAD.GraphicsInterface;

    5 using Autodesk.AutoCAD.GraphicsSystem;

    6 using Autodesk.AutoCAD.Runtime;

    7 using Autodesk.AutoCAD.Interop;

    8 using System.Drawing;

    9

   10 namespace OffscreenImageCreation

   11 {

   12   public class Commands

   13   {

   14     [CommandMethod("OSS")]

   15     static public void OffscreenSnapshot()

   16     {

   17       CreateSphere();

   18       SnapshotToFile(

   19         "c:\\sphere-Wireframe2D.png",

   20         VisualStyleType.Wireframe2D

   21       );

   22       SnapshotToFile(

   23         "c:\\sphere-Hidden.png",

   24         VisualStyleType.Hidden

   25       );

   26       SnapshotToFile(

   27         "c:\\sphere-Basic.png",

   28         VisualStyleType.Basic

   29       );

   30       SnapshotToFile(

   31         "c:\\sphere-ColorChange.png",

   32         VisualStyleType.ColorChange

   33       );

   34       SnapshotToFile(

   35         "c:\\sphere-Conceptual.png",

   36         VisualStyleType.Conceptual

   37       );

   38       SnapshotToFile(

   39         "c:\\sphere-Flat.png",

   40         VisualStyleType.Flat

   41       );

   42       SnapshotToFile(

   43         "c:\\sphere-Gouraud.png",

   44         VisualStyleType.Gouraud

   45       );

   46       SnapshotToFile(

   47         "c:\\sphere-Realistic.png",

   48         VisualStyleType.Realistic

   49       );

   50     }

   51

   52     static public void CreateSphere()

   53     {

   54       Document doc =

   55         Application.DocumentManager.MdiActiveDocument;

   56       Database db = doc.Database;

   57       Editor ed = doc.Editor;

   58

   59       Transaction tr =

   60         doc.TransactionManager.StartTransaction();

   61       using (tr)

   62       {

   63         BlockTable bt =

   64           (BlockTable)tr.GetObject(

   65             db.BlockTableId,

   66             OpenMode.ForRead

   67           );

   68         BlockTableRecord btr =

   69           (BlockTableRecord)tr.GetObject(

   70             bt[BlockTableRecord.ModelSpace],

   71             OpenMode.ForWrite

   72           );

   73         Solid3d sol = new Solid3d();

   74         sol.CreateSphere(10.0);

   75

   76         const string matname =

   77           "Sitework.Paving - Surfacing.Riverstone.Mortared";

   78         DBDictionary matdict =

   79           (DBDictionary)tr.GetObject(

   80             db.MaterialDictionaryId,

   81             OpenMode.ForRead

   82           );

   83         if (matdict.Contains(matname))

   84         {

   85           sol.Material = matname;

   86         }

   87         else

   88         {

   89           ed.WriteMessage(

   90             "\nMaterial (" + matname + ") not found" +

   91             " - sphere will be rendered without it.",

   92             matname

   93           );

   94         }

   95         btr.AppendEntity(sol);

   96

   97         tr.AddNewlyCreatedDBObject(sol, true);

   98         tr.Commit();

   99       }

  100       AcadApplication acadApp =

  101         (AcadApplication)Application.AcadApplication;

  102       acadApp.ZoomExtents();

  103     }

  104

  105     static public void SnapshotToFile(

  106       string filename,

  107       VisualStyleType vst

  108     )

  109     {

  110       Document doc =

  111         Application.DocumentManager.MdiActiveDocument;

  112       Editor ed = doc.Editor;

  113       Database db = doc.Database;

  114       Manager gsm = doc.GraphicsManager;

  115

  116       // Get some AutoCAD system variables

  117       int vpn =

  118         System.Convert.ToInt32(

  119           Application.GetSystemVariable("CVPORT")

  120         );

  121

  122       using (View view = new View())

  123       {

  124         gsm.SetViewFromViewport(view, vpn);

  125

  126         // Set the visual style to the one passed in

  127         view.VisualStyle = new VisualStyle(vst);

  128

  129         Device dev =

  130           gsm.CreateAutoCADOffScreenDevice();

  131         using (dev)

  132         {

  133           dev.OnSize(gsm.DisplaySize);

  134

  135           // Set the render type and the background color

  136           dev.DeviceRenderType = RendererType.Default;

  137           dev.BackgroundColor = Color.White;

  138

  139           // Add the view to the device and update it

  140           dev.Add(view);

  141           dev.Update();

  142

  143           using (Model model = gsm.CreateAutoCADModel())

  144           {

  145             Transaction tr =

  146               db.TransactionManager.StartTransaction();

  147             using (tr)

  148             {

  149               // Add the modelspace to the view

  150               // It's a container but also a drawable

  151               BlockTable bt =

  152                 (BlockTable)tr.GetObject(

  153                   db.BlockTableId,

  154                   OpenMode.ForRead

  155                 );

  156               BlockTableRecord btr =

  157                 (BlockTableRecord)tr.GetObject(

  158                   bt[BlockTableRecord.ModelSpace],

  159                   OpenMode.ForRead

  160                 );

  161               view.Add(btr, model);

  162               tr.Commit();

  163             }

  164             // Take the snapshot

  165             Rectangle rect = view.Viewport;

  166             using (Bitmap bitmap = view.GetSnapshot(rect))

  167             {

  168               bitmap.Save(filename);

  169               ed.WriteMessage(

  170                 "\nSnapshot image saved to: " +

  171                 filename

  172               );

  173               // Clean up

  174               view.EraseAll();

  175               dev.Erase(view);

  176             }

  177           }

  178         }

  179       }

  180     }

  181   }

  182 }

在国外网站KEAN WALMSLEY用c#写的,哪位用c#帮忙编译一下


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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-11 12:55 , Processed in 0.220518 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表