zoukankan      html  css  js  c++  java
  • AutoCAD .net开发之三-图形绘制

      1using System ;
      2using Autodesk.AutoCAD.Runtime ;
      3using Autodesk.AutoCAD.Geometry;
      4using Autodesk.AutoCAD.DatabaseServices;
      5using Autodesk.AutoCAD.Colors;
      6
      7[assembly: CommandClass(typeof(ClassLibrary.Class))]
      8
      9namespace ClassLibrary
     10{
     11    /// <summary>
     12    /// Summary description for Class.
     13    /// </summary>

     14    public class Class
     15    {
     16        public Class()
     17        {
     18    
     19        }

     20
     21
     22
     23        [CommandMethod("test1")]
     24        public void createCircle()
     25
     26        {
     27            //首先声明我们要使用的对象
     28
     29            Circle circle; //这个是我们要加入到模型空间的圆
     30
     31            BlockTableRecord btr;//要加入圆,我们必须打开模型空间
     32            BlockTable bt; //要打开模型空间,我们必须通过块表(BlockTable)来访问它
     33            //我们使用一个名为‘Transaction’的对象,把函数中有关数据库的操作封装起来
     34            Transaction trans;
     35
     36            //使用TransactionManager的StartTransaction()成员来开始事务处理
     37            
     38            trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();
     39            //现在创建圆……请仔细看这些参数——注意创建Point3d对象的‘New’和Vector3d的静态成员ZAxis
     40            
     41            circle = new Circle(new Point3d(10100), Vector3d.ZAxis, 2);
     42            bt = (BlockTable)trans.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId, OpenMode.ForRead);
     43            //使用当前的空间Id来获取块表记录——注意我们是打开它用来写入
     44            btr = (BlockTableRecord)trans.GetObject(HostApplicationServices.WorkingDatabase.CurrentSpaceId,OpenMode.ForWrite );
     45            //现在使用btr对象来加入圆
     46            btr.AppendEntity(circle);
     47            trans.AddNewlyCreatedDBObject(circle, true); //并确定事务处理知道要加入圆!
     48            //一旦完成以上操作,我们就提交事务处理,这样以上所做的改变就被保存了……
     49            trans.Commit();
     50            //…然后销毁事务处理,因为我们已经完成了相关的操作(事务处理不是数据库驻留对象,可以销毁)
     51
     52            
     53
     54
     55
     56            trans.Dispose();
     57
     58            
     59
     60        }

     61        [CommandMethod("test2")]
     62        public void f()
     63        {
     64            Transaction trans1 = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();
     65            Ellipse e = new Ellipse(new Point3d(10,10,0),Vector3d.ZAxis,new Vector3d(3,0,0),0.5,0,0);
     66            BlockTable bt1 = (BlockTable)trans1.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId,OpenMode.ForRead);
     67            BlockTableRecord btr1 = (BlockTableRecord)trans1.GetObject(HostApplicationServices.WorkingDatabase.CurrentSpaceId,OpenMode.ForWrite);
     68            btr1.AppendEntity(e);
     69            trans1.AddNewlyCreatedDBObject(e,true);
     70            trans1.Commit();
     71
     72            
     73        }

     74
     75
     76        public ObjectId CreateLayer()
     77        {
     78            ObjectId layerId; //它返回函数的值
     79        
     80            Database db = HostApplicationServices.WorkingDatabase;
     81            Transaction trans = db.TransactionManager.StartTransaction();
     82            //首先取得层表……
     83            LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForWrite);
     84            //检查EmployeeLayer层是否存在……
     85            if (lt.Has("EmployeeLayer"))
     86            {
     87                layerId = lt["EmployeeLayer"];
     88            }

     89            else
     90            {
     91                //如果EmployeeLayer层不存在,就创建它
     92
     93                LayerTableRecord ltr = new LayerTableRecord();
     94                ltr.Name = "EmployeeLayer"//设置层的名字
     95                ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, 2);
     96                layerId = lt.Add(ltr);
     97                trans.AddNewlyCreatedDBObject(ltr, true);
     98
     99            }

    100
    101            trans.Commit();
    102
    103            trans.Dispose();
    104
    105            return layerId;
    106
    107        }

    108
    109
    110
    111    }

    112}
  • 相关阅读:
    Spring Boot 3.日志
    Inspection info: Checks Spring Boot Application Setup. @SpringBootApplication used in default package Redundant @ComponentScan declaration Redundant @EnableAutoConfiguration declaration New in 2018.2
    mac下编译安装pcntl扩展
    php的if判断出现的问题思考
    php判断类的方法是否存在
    mac下phpstorm快捷键
    php关于always_populate_raw_post_data报错的解决方案
    如何使用mac快捷键打开终端
    linux文件权限管理(超详细)
    linux常用命令合集
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/208609.html
Copyright © 2011-2022 走看看