Cmd.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.Colors;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4. using Autodesk.AutoCAD.EditorInput;
  5. using Autodesk.AutoCAD.Runtime;
  6. using Autodesk.AutoCAD.Windows;
  7. using Autodesk.AutoCAD.Geometry;
  8. using DotNetARX2014;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Security.Cryptography.X509Certificates;
  14. using System.Text;
  15. using System.Threading;
  16. using System.Threading.Tasks;
  17. namespace AutoNum
  18. {
  19. public class Cmd
  20. {
  21. //Demo1:CmdWIN
  22. [CommandMethod("CmdWIN")]
  23. public void CmdWIN()
  24. {
  25. AutoNumForm form = new AutoNumForm();
  26. //将窗体以模态对话框的形式显示
  27. form.ShowDialog();
  28. //System.Windows.Forms.MessageBox.Show("Hello WinForm", "Info(Tips)");
  29. }
  30. public void ChangeNum(string strPre,int numLength,int startNum)
  31. {
  32. //获取当前文档
  33. Document doc = Application.DocumentManager.MdiActiveDocument;
  34. //从当前文档获取Database
  35. Database db = doc.Database;
  36. using (Transaction trans = db.TransactionManager.StartTransaction())
  37. {
  38. //获取单行文字
  39. var dbDBText = db.GetEntsInModelSpace<DBText>();
  40. var drawingNums = (from t in dbDBText
  41. //获取图号图层上的单行文字
  42. where t.Layer.Equals("图号")
  43. //进行排序,竖向降序,横向升序
  44. orderby t.Position.Y descending,t.Position.X ascending
  45. select t);
  46. //循环更改文字
  47. int count = startNum;
  48. foreach(var item in drawingNums)
  49. {
  50. DBText text = trans.GetObject(item.ObjectId,OpenMode.ForWrite) as DBText;
  51. text.TextString = strPre + count.ToString("D" + numLength);
  52. //text.Color = Color.FromColorIndex(ColorMethod.ByColor,3);
  53. count++;
  54. }
  55. trans.Commit();
  56. }
  57. }
  58. }
  59. }