明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: sailorcwx

[打印] 使用NetAPI进行CAD打印,有兴趣的交流交流

    [复制链接]
发表于 2013-6-1 13:38:52 | 显示全部楼层
这个有空学习一下。
发表于 2014-5-6 23:16:21 | 显示全部楼层
路过并表示强烈支持!
发表于 2015-10-8 09:35:52 | 显示全部楼层
雪山飞狐_lzh 发表于 2010-12-17 15:56
打印这部分因为自己不需要所以一直懒得看,呵呵
欢迎水手多发相关的文章和代码

请问lisp如何调用.net的命令?如果有参数如何调用?
发表于 2015-10-8 11:32:34 | 显示全部楼层
革天明 发表于 2015-10-8 09:35
请问lisp如何调用.net的命令?如果有参数如何调用?

CommandMethod 定义的还有参数?
发表于 2015-10-12 10:37:10 | 显示全部楼层
学习学习再学习
发表于 2017-12-3 10:38:29 | 显示全部楼层
怎么自定义的图幅打不出来?
发表于 2017-12-14 15:09:41 | 显示全部楼层
本帖最后由 Leo1980 于 2017-12-14 15:11 编辑

很不错的文章,受益匪浅
论坛是否把【i】(英文中括号中间i)吃了
resultPline.AddVertexAt(i, new Point2d(plinePoints.X, plinePoints.Y)
plinePoints.X是不是应该为plinePoints【i】.X
发表于 2017-12-17 19:36:01 | 显示全部楼层
后面打印的代码呢?
发表于 2017-12-28 16:27:36 | 显示全部楼层
有意思吗,标题上的内容就不放,与题不合。
回复 支持 0 反对 3

使用道具 举报

发表于 2018-1-18 07:06:05 | 显示全部楼层
本帖最后由 TiStars 于 2018-1-18 10:12 编辑

我狗尾续貂一下:

  • 如果在模型空间打印,且需要选定范围,根据我自己的经验,选定的坐标不能直接设置给SetPlotWindowArea ,否则打印出来的都是空白,需要按照这里说的作一下转换。

----------------------------------------------------------------
  1. // Gets the current view
  2. ViewTableRecord acView = acDoc.Editor.GetCurrentView();
  3. Extents3d eExtents = new Extents3d(new Point3d(0, 0, 0), new Point3d(630, 445.5, 0));

  4. // Translates WCS coordinates to DCS
  5. Matrix3d matWCS2DCS;
  6. matWCS2DCS = Matrix3d.PlaneToWorld(acView.ViewDirection);
  7. matWCS2DCS = Matrix3d.Displacement(acView.Target - Point3d.Origin) * matWCS2DCS;
  8. matWCS2DCS = Matrix3d.Rotation(-acView.ViewTwist,
  9.                                acView.ViewDirection,
  10.                                acView.Target) * matWCS2DCS;

  11. // Tranforms the extents to DCS
  12. matWCS2DCS = matWCS2DCS.Inverse();
  13. eExtents.TransformBy(matWCS2DCS);

  14. // Defines the area to output
  15. acPlSetVdr.SetPlotType(acPlSet, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
  16. acPlSetVdr.SetPlotWindowArea(acPlSet, new Extents2d(eExtents.MinPoint.X, eExtents.MinPoint.Y,
  17.                                                     eExtents.MaxPoint.X, eExtents.MaxPoint.Y));

------------------------------------------------


而且,按照上述操作进行Extents3d转换时,要注意第一个参数的坐标值要小于第二个参数的坐标值。

不过我只知其然而不知其所以然,请高手帮忙解释一下,谢谢。

  • 另外还想起来一个,如果把后台打印设为前台,则会大大提高打印速度。

  1. //保存App的原参数
  2. short bgPlot =(short)Application.GetSystemVariable("BACKGROUNDPLOT");
  3. //设定为前台打印,加快打印速度
  4. Application.SetSystemVariable("BACKGROUNDPLOT", 0);



  • 刚刚又遇到一个问题,看了楼主的这一条解决了,不过我没有RefreshLists就可以获取到图纸列表。


2)GetCanonicalMediaNameList 读取打印机的图纸列表。一般在读取图纸列表之前,我们先使用SetPlotConfigurationName设置打印机,图纸大小设置为null,然后调用RefreshLists刷新图纸列表,然后再进行读取。



回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 04:56 , Processed in 0.145004 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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