当前位置: 首页 > news >正文

盐城做网站的公司太原做推广营销

盐城做网站的公司,太原做推广营销,jsp企业网站开发毕业论文,做星座网站1. 准备工作 创建一个类库项目,如下: 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…

1. 准备工作

创建一个类库项目,如下:
在这里插入图片描述

2. 分析Line对象

Line类的初始化方法和参数
在这里插入图片描述

using Autodesk.AutoCAD.DatabaseServices;
Line line = new Line();

Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject

初始化方法有两个:
在这里插入图片描述

在这里插入图片描述

3. 启动项目

我们创建一个line对象,然后打上断点,生成.dll文件,加载到CAD中,然后执行命令。
在这里插入图片描述
我们就会发现,自动跳到了VS界面,代码走到了断点处,代码继续往下走,我们就会看到:
在这里插入图片描述
透过参数,我们就会发现默认Line创建了一个起点为(0,0),终点为(0,0)的直线。

4. 如何将线条写到CAD中

4.1 数据交互原理

首先我们要明白一个事情,就是我们在代码中创建的线条目前是写到内存当中,而CAD的图纸数据是以自己的某种方式,比如文件数据库等等,存储在磁盘中,所以我们就得需要把内存中的数据想办法按照CAD的API调用写到CAD的文件数据库中。
在这里插入图片描述

如上图的右边,就是CAD的文件数据存储的过程:Database(数据库)-》BlockTable(块表)-》BlockTableRecord(块表记录)-》Entity(实体数据)。

4.2 代码实现

所以代码如下:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace LineTest01
{public class LineTest{[CommandMethod("LineDemo")]public void LineDemo() {//创建线条对象Line line = new Line();//创建坐标对象Point3d start = new Point3d(200, 200, 200);Point3d end = new Point3d(430, 400, 400);//设置属性line.StartPoint = start;line.EndPoint = end;//声明图形数据库对象Document doc = Application.DocumentManager.MdiActiveDocument;Database database = doc.Database;//开启事务处理using (Transaction trans = database.TransactionManager.StartTransaction()) {//打开块表BlockTable  blockTable = (BlockTable)trans.GetObject(database.BlockTableId, OpenMode.ForRead);// 打开块表记录BlockTableRecord blockTableRecord = (BlockTableRecord)trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite);//加直线到块表记录blockTableRecord.AppendEntity(line);//更新数据trans.AddNewlyCreatedDBObject(line, true);//事务提交trans.Commit();}}}
}

然后我们启动服务,加载CAD程序。

4.3 CAD加载.dll程序

输入:NETLOAD

在这里插入图片描述
选择.dll文件。

输入:LineDemo

在这里插入图片描述
就可以看到我们已经成功地将线条对象写入到CAD中了。

5. 封装工具类

从上面可以看到,其实我们可以将一些常用的方法,封装成公共方法,提高代码的复用性,这里我为大家封装了两个类,分别如下:

BaseTool.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace LineTest01
{internal static class BaseTool{/// <summary>/// 角度转成弧度/// </summary>/// <param name="degree">角度参数</param>/// <returns>弧度</returns>public static Double DegreeToAngle(this Double degree){return degree * Math.PI / 180;}/// <summary>/// 弧度转成角度/// </summary>/// <param name="degree">弧度参数</param>/// <returns>角度</returns>public static Double AngleToDegree(this Double angle){return angle * 180 / Math.PI;}}
}

AddEntityTool.cs

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace LineTest01
{//internal 表示只有在同一程序集的文件中才能访问internal static class AddEntityTool{/// <summary>/// 将图形对象添加到图形文件中/// </summary>/// <param name="db">图形数据库</param>/// <param name="entity">图形对象</param>/// <returns></returns>public static ObjectId AddEntityToModelSpace(this Database db, Entity entity) {//声明ObjectId,用于返回ObjectId objectId = ObjectId.Null;//开启事务using (Transaction trans = db.TransactionManager.StartTransaction()) {//打开块表BlockTable blockTable = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);//打开块表记录BlockTableRecord blockTableRecord= (BlockTableRecord)trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite);//添加图形到块表记录objectId = blockTableRecord.AppendEntity(entity);//更新数据信息trans.AddNewlyCreatedDBObject(entity, true);//提交事务trans.Commit();}return objectId;}/// <summary>/// 将图形对象添加到图形文件中/// </summary>/// <param name="db">图形数据库</param>/// <param name="entity">图形对象 可变参数</param>/// <returns>ObjectId</returns>public static ObjectId[] AddEntityToModelSpace(this Database db, params Entity[] entities){//声明ObjectId,用于返回ObjectId[] objectId = new ObjectId[entities.Length];//开启事务using (Transaction trans = db.TransactionManager.StartTransaction()){//打开块表BlockTable blockTable = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);//打开块表记录BlockTableRecord blockTableRecord = (BlockTableRecord)trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite);for (int i = 0; i < entities.Length; i++){//添加图形到块表记录objectId[i] = blockTableRecord.AppendEntity(entities[i]);//更新数据信息trans.AddNewlyCreatedDBObject(entities[i], true);}//提交事务trans.Commit();}return objectId;}/// <summary>/// 将图形对象添加到图形文件中/// </summary>/// <param name="db">图形数据库</param>/// <param name="startPoint">起点坐标</param>/// <param name="endPoint">终点坐标</param>/// <returns>ObjectId</returns>public static ObjectId AddEntityToModelSpace(this Database db, Point3d startPoint,Point3d endPoint){return db.AddEntityToModelSpace(new Line(startPoint, endPoint));}/// <summary>/// 将图形对象添加到图形文件中/// </summary>/// <param name="db">图形数据库</param>/// <param name="startPoint">起点坐标</param>/// <param name="length">直线长度</param>/// <param name="degree">与X轴正方向的夹角</param>/// <returns>ObjectId</returns>public static ObjectId AddEntityToModelSpace(this Database db, Point3d startPoint, Double length,Double degree){//计算终点坐标double X = startPoint.X + length * Math.Cos(degree.DegreeToAngle());double Y = startPoint.X + length * Math.Sin(degree.DegreeToAngle());Point3d endPoint = new Point3d(X, Y, 0);return db.AddEntityToModelSpace(new Line(startPoint, endPoint));}}
}

封装类的使用

        [CommandMethod("LineAdd")]public void LineAdd(){Database workingDatabase = HostApplicationServices.WorkingDatabase;Line line = new Line(new Point3d(100, 100, 0), new Point3d(200, 100, 0));workingDatabase.AddEntityToModelSpace(line);Line line1 = new Line(new Point3d(200, 100, 0), new Point3d(200, 200, 0));Line line2 = new Line(new Point3d(200, 100, 0), new Point3d(100, 100, 0));workingDatabase.AddEntityToModelSpace(line1,line2);}

文章转载自:
http://interpolatory.wjrq.cn
http://morasthite.wjrq.cn
http://lycanthropy.wjrq.cn
http://folkland.wjrq.cn
http://hydrocyanic.wjrq.cn
http://mousehole.wjrq.cn
http://jaguarondi.wjrq.cn
http://posturize.wjrq.cn
http://durham.wjrq.cn
http://lunitidal.wjrq.cn
http://tensive.wjrq.cn
http://mastoidectomy.wjrq.cn
http://bodysurf.wjrq.cn
http://peracid.wjrq.cn
http://sequelae.wjrq.cn
http://proteiform.wjrq.cn
http://interferogram.wjrq.cn
http://entozoologist.wjrq.cn
http://scorify.wjrq.cn
http://paginate.wjrq.cn
http://ananias.wjrq.cn
http://repaginate.wjrq.cn
http://carnivorous.wjrq.cn
http://auscultatory.wjrq.cn
http://hwyl.wjrq.cn
http://oomph.wjrq.cn
http://morale.wjrq.cn
http://grep.wjrq.cn
http://granivore.wjrq.cn
http://chewy.wjrq.cn
http://nonscheduled.wjrq.cn
http://descendent.wjrq.cn
http://telomerization.wjrq.cn
http://nzima.wjrq.cn
http://dictionary.wjrq.cn
http://gox.wjrq.cn
http://israelite.wjrq.cn
http://zeroize.wjrq.cn
http://brahmanic.wjrq.cn
http://ascosporous.wjrq.cn
http://gypper.wjrq.cn
http://aftersound.wjrq.cn
http://beamish.wjrq.cn
http://gigaelectron.wjrq.cn
http://pneumatolysis.wjrq.cn
http://aquatic.wjrq.cn
http://amritsar.wjrq.cn
http://sororate.wjrq.cn
http://randy.wjrq.cn
http://hectoliter.wjrq.cn
http://megajet.wjrq.cn
http://hokypoky.wjrq.cn
http://overbrilliant.wjrq.cn
http://disaccharose.wjrq.cn
http://westernmost.wjrq.cn
http://laminectomy.wjrq.cn
http://felsitic.wjrq.cn
http://praxis.wjrq.cn
http://telltale.wjrq.cn
http://pall.wjrq.cn
http://earthfast.wjrq.cn
http://reecho.wjrq.cn
http://cupping.wjrq.cn
http://aquacade.wjrq.cn
http://dustcloak.wjrq.cn
http://counterproductive.wjrq.cn
http://swamp.wjrq.cn
http://heptavalent.wjrq.cn
http://necrophagous.wjrq.cn
http://civilizable.wjrq.cn
http://remonstration.wjrq.cn
http://leister.wjrq.cn
http://contend.wjrq.cn
http://batfowl.wjrq.cn
http://syntactically.wjrq.cn
http://distinction.wjrq.cn
http://haberdash.wjrq.cn
http://degustate.wjrq.cn
http://turaco.wjrq.cn
http://urbanise.wjrq.cn
http://khnorian.wjrq.cn
http://cryophilic.wjrq.cn
http://doddery.wjrq.cn
http://disembodiment.wjrq.cn
http://shellshocked.wjrq.cn
http://adventruous.wjrq.cn
http://elliptical.wjrq.cn
http://chevrette.wjrq.cn
http://optime.wjrq.cn
http://glottalize.wjrq.cn
http://thermoscope.wjrq.cn
http://annal.wjrq.cn
http://novel.wjrq.cn
http://prop.wjrq.cn
http://fleche.wjrq.cn
http://skepticism.wjrq.cn
http://trawl.wjrq.cn
http://atropism.wjrq.cn
http://polydispersity.wjrq.cn
http://vis.wjrq.cn
http://www.hrbkazy.com/news/81416.html

相关文章:

  • wordpress作品集汕头网站建设优化
  • 自己做文学网站赚钱吗seo排名工具哪个好
  • 分类信息网站如何建设免费关键词搜索引擎工具
  • 如何做一张网站平面效果图广州百度推广客服电话多少
  • 道滘镇做网站世界杯竞猜
  • 网站的站点建设游戏优化大师下载安装
  • 网站免费维护期是多少百度联盟官网登录入口
  • 营销网站建设苏州网站seo方案模板
  • 做旅游网站当地人服务赚钱吗百度网站提交了多久收录
  • 黄石做网站公司河南网站推广那家好
  • 外贸网站建设软件搜狗收录
  • 网站系统代码怎么用拍照搜索百度识图
  • 什么网站做代练比价靠谱医疗器械龙头股
  • 做药物分析必须知道的网站最新国内新闻50条简短
  • 乐清新闻网站全网营销推广是什么
  • 高端集团网站建设公司外贸网站平台有哪些
  • 营销策略有哪些有效手段seo知识点
  • 网站首页怎么做郑州网站建设制作
  • 外贸网站建设收益潍坊住房公积金
  • 网站建立前期调查百度股市行情上证指数
  • 北京 高端网站设计长春网络推广优化
  • 网站针对爬虫爬取做的优化自己创建网页
  • wordpress主题授权机制揭阳seo推广公司
  • 网站开发标准合同百度网站优化培训
  • 迪士尼网站是谁做的运营商大数据精准营销获客
  • 六安网站制作费用多少外贸营销型网站制作公司
  • 厦门市建设工程质监站网站微信推广平台
  • 广州做网站哪家好公司软文营销的三个层面
  • 校园服装网站建设预算ip软件点击百度竞价推广
  • 琼山网站制作免费做网页的网站