找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1962|回复: 5

[原创] 练习 批量插图(2015)

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-6-13 22:08:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1.         [CommandMethod("fod")]
  2.         public void testOpenFileDial()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Editor ed = doc.Editor;
  6.             Transaction tr = db.TransactionManager.StartTransaction();

  7.             OpenFileDialog.OpenFileDialogFlags flags = OpenFileDialog.OpenFileDialogFlags.AllowMultiple
  8.                 | OpenFileDialog.OpenFileDialogFlags.DefaultIsFolder;

  9.             Autodesk.AutoCAD.Windows.OpenFileDialog dlg = new OpenFileDialog(
  10.                 "选择DWG文件", null, "dwg", "MyTestSeletct",
  11.                 flags);

  12.             System.Windows.Forms.DialogResult dr = dlg.ShowDialog();

  13.             if (dr == DialogResult.OK)
  14.             {
  15.                 string[] fls = dlg.GetFilenames();
  16.                 using (tr)
  17.                 {
  18.                     try
  19.                     {
  20.                         for (int i = 0; i < fls.Length; i++)
  21.                         {
  22.                             ed.Command(".INSERT", fls[i], "0,0,0", 1, 1, 0);
  23.                         }
  24.                         ed.Command(".ZOOM", "E");
  25.                         tr.Commit();
  26.                     }
  27.                     catch (Exception)
  28.                     {
  29.                         throw;
  30.                     }
  31.                 }
  32.             }
  33.         }

有重复块定义时也许出错,不过用 Editor.Command 的确代码简单多了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

 楼主| 发表于 2014-6-13 22:17:54 | 显示全部楼层
本帖最后由 csharp 于 2014-6-13 22:22 编辑

Kerry BlockTesting2011
http://www.theswamp.org/index.php?topic=37686.0

  1.         [CommandMethod("BI_3")]
  2.         public void BlockInsert_3()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Editor ed = doc.Editor;
  6.             Database db = doc.Database;
  7.             string blockQualifiedFileName = "d:\\test\\drawing.dwg";
  8.             double scale = 2.5;
  9.             Database tmpDb = new Database(false, true);
  10.             tmpDb.ReadDwgFile(blockQualifiedFileName, System.IO.FileShare.Read, true, "");
  11.             Matrix3d Transform = ed.CurrentUserCoordinateSystem;
  12.             Transform = Transform *
  13.                 Matrix3d.Scaling(scale, Point3d.Origin);

  14.             db.Insert(Transform, tmpDb, true);
  15.         }
  16.         //=======================================================================

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

 楼主| 发表于 2014-6-13 23:38:23 | 显示全部楼层
http://www.theswamp.org/index.php?topic=31886.new#new
  1.         [System.Security.SuppressUnmanagedCodeSecurity]
  2.         [DllImport("acad.exe", EntryPoint = "acedCmd",
  3.         CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
  4.         extern static private int acedCmd(IntPtr resbuf);

  5.         /// <summary>
  6.         /// Call an AutoCAD command (works synchronously).
  7.         /// </summary>
  8.         /// <param name="args">A ResultBuffer containing the command name followed by command inputs.</param>
  9.         public static void Command(ResultBuffer args)
  10.         {
  11.             acedCmd(args.UnmanagedObject);
  12.         }

  13.         /// <summary>
  14.         /// Call an AutoCAD command (works synchronously).
  15.         /// </summary>
  16.         /// <param name="args">The command name followed by command inputs.</param>

  17.         public static void Command(params object[] args)
  18.         {
  19.             ResultBuffer resbuf = new ResultBuffer();
  20.             foreach (object obj in args)
  21.             {
  22.                 switch (obj.GetType().Name)
  23.                 {
  24.                     case "String":
  25.                         resbuf.Add(new TypedValue((int)LispDataType.Text, obj)); break;
  26.                     case "Int16":
  27.                         resbuf.Add(new TypedValue((int)LispDataType.Int16, obj)); break;
  28.                     case "Int32":
  29.                         resbuf.Add(new TypedValue((int)LispDataType.Int32, obj)); break;
  30.                     case "Double":
  31.                         resbuf.Add(new TypedValue((int)LispDataType.Double, obj)); break;
  32.                     case "Point2d":
  33.                         resbuf.Add(new TypedValue((int)LispDataType.Point2d, obj)); break;
  34.                     case "Point3d":
  35.                         resbuf.Add(new TypedValue((int)LispDataType.Point3d, obj)); break;
  36.                     case "ObjectId":
  37.                         resbuf.Add(new TypedValue((int)LispDataType.ObjectId, obj)); break;
  38.                     case "ObjectId[]":
  39.                         foreach (ObjectId id in (ObjectId[])obj)
  40.                             resbuf.Add(new TypedValue((int)LispDataType.ObjectId, id));
  41.                         break;
  42.                     case "ObjectIdCollection":
  43.                         foreach (ObjectId id in (ObjectIdCollection)obj)
  44.                             resbuf.Add(new TypedValue((int)LispDataType.ObjectId, id));
  45.                         break;
  46.                     case "SelectionSetDelayMarshalled":
  47.                     case "SelectionSetFullyMarshalled":
  48.                         resbuf.Add(new TypedValue((int)LispDataType.SelectionSet, obj)); break;
  49.                     default:
  50.                         throw new InvalidOperationException("Unsupported type in Command() method");
  51.                 }
  52.             }
  53.             acedCmd(resbuf.UnmanagedObject);
  54.         }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2014-6-23 20:29:13 | 显示全部楼层
Editor.Command,这个是哪个类里面的方法

点评

2015 Autodesk.AutoCAD.EditorInput Namespace > Editor Class > Editor Methods > Editor.Command Method 其它版本用引入 ARX acedCmd  详情 回复 发表于 2014-6-23 21:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

 楼主| 发表于 2014-6-23 21:06:46 | 显示全部楼层
jwj0805 发表于 2014-6-23 20:29
Editor.Command,这个是哪个类里面的方法

2015

Autodesk.AutoCAD.EditorInput Namespace > Editor Class > Editor Methods > Editor.Command Method

其它版本用引入 ARX acedCmd

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2014-6-24 19:28:27 | 显示全部楼层
哦,谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-19 01:37 , Processed in 0.498791 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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