使用Teigha.net读取CAD的常用功能模块

使用Teigha.net读取CAD的常用功能模块

Teigha中实体旋转

代码:

using (var trans = database.TransactionManager.StartTransaction())

{

Entity ent = trans.GetObject(entityId, OpenMode.ForWrite) asEntity;

if (ent != null )

{

Extents3d exts = ent.GeometricExtents;

Point3d poCenter = newPoint3d((exts.MinPoint.X + exts.MaxPoint.X) / 2, (exts.MinPoint.Y + exts.MaxPoint.Y) / 2, 0);

Matrix3d Matr4 = Matrix3d.Rotation((30 * Math.PI / 180),Vector3d.ZAxis, poCenter);

ent.TransformBy(Matr4);

}

trans.Commit();

}

//以实体的外接矩形的中心点为圆心旋转30度。

Teigha中跳转至显示视图跳转到某点,并以此为圆心显示内容

代码:

using (var trans = database.TransactionManager.StartTransaction())

{

Point3d EndPoint=new Point3d(0,0,0);

using (Teigha.GraphicsSystem.View pView = helperDevice.ActiveView)

{

pView.Dolly(EndPoint.X - pView.Position.X, EndPoint.Y - pView.Position.Y, 0);

}

trans.Commit();

}

if (helperDevice != null)

helperDevice.Update();

Invalidate();

Teigha 窗体内容的旋转

代码:

if (helperDevice != null)

{

using (Teigha.GraphicsSystem.View pView = BaseF.helperDevice.ActiveView)

{

//2为指定的角度

pView.Roll(2 * Math.PI / 180);

Invalidate();

}

helperDevice.Update();

helperDevice.Invalidate();

}

Invalidate();

Teigha 直接将块中内容导入其他块中(适用于不同dwg文件的导入)

代码:

Database databa = newDatabase(false, false);

databa.ReadDwgFile(@"C:\Users\admin\Desktop\安装略图.dwg", FileOpenMode.OpenForReadAndAllShare, false, "");

using (var trans = database.TransactionManager.StartTransaction())

{

BlockTable block = database.BlockTableId.GetObject(OpenMode.ForWrite) asBlockTable;

using (var tran = databa.TransactionManager.StartTransaction())

{

BlockTable blockold = databa.BlockTableId.GetObject(OpenMode.ForWrite) asBlockTable;

database.Insert("需要导入的块名称", databa, false);

database.Insert( "需要导入的块名称",“重新创建一个新的名字”, databa, false);

}

trans.Commit();

}

Teigha 获取文档中包含的字体样式(主要用于计算机不包含CAD字体时)

//修改字体后需要刷新内容,最好是来回切换布局!

代码:

List<string> StrList = newList<string>();

using (var trans = BaseF.database.TransactionManager.StartTransaction())

{

using (TextStyleTable txtstyles = (TextStyleTable)trans.GetObject(BaseF.database.TextStyleTableId, OpenMode.ForRead))

{

string exCADlow = “.eot,.eot,.otf,.fon,.font,.ttf,.ttc,.woff,.woff2,.shx”;

foreach (ObjectId item in txtstyles)

{

using (TextStyleTableRecord txtse = (TextStyleTableRecord)trans.GetObject(item, OpenMode.ForRead))

{

if (exCADlow.Contains(Path.GetExtension(txtse.FileName).ToLower()) && Path.GetExtension(txtse.FileName).ToLower() != "")

{

StrList.Add(txtse.FileName);

}

}

}

}

Teigha 实现移动视图的效果

//根据按下和移动时的鼠标坐标移动窗体显示的CAD内容

代码:

///<summary>

///移动视图

///</summary>

///<param name="PoMove"></param>

privatevoid Viewer_UDLR(Point PoMove)

{

double dx = -(PoMove.X - MouseDowns.X);

double dy = -(PoMove.Y - MouseDowns.Y);

MouseDowns = PoMove;

using (DBObject pVpObj = Aux.active_viewport_id(database).GetObject(OpenMode.ForWrite))

{

AbstractViewportData pAVD = newAbstractViewportData(pVpObj);

Teigha.GraphicsSystem.View pView = pAVD.GsView;

Vector3d vec = newVector3d(dx, dy, 0.0);

vec = vec.TransformBy((pView.ScreenMatrix * pView.ProjectionMatrix).Inverse());

pView.Dolly(vec);

pAVD.SetView(pView);

pAVD.Dispose();

pVpObj.Dispose();

Invalidate();

}

}

Teigha 移动实体所在位置

代码:

///<summary>

///移动实体

///</summary>

///<param name="PoMove"></param>

privatevoid MoverEntity_view(Point PoMove)

{

Point3d Podown1 = toEyeToWorld(MouseDowns.X, MouseDowns.Y);

Point3d Pomove1= toEyeToWorld(PoMove.X, PoMove.Y);

double dx = Pomove1.X - Podown1.X;

double dy = Pomove1.Y - Podown1.Y;

MouseDowns = PoMove;

List<ObjectId> Listitem = newList<ObjectId>();

using (var trans = database.TransactionManager.StartTransaction())

{

foreach (ObjectId item in SelectID)

{

if (Listitem.FindIndex(s1 => s1 == item) == -1)

{

Listitem.Add(item);

using (Entity Ent = item.GetObject(OpenMode.ForWrite) asEntity)

{

PoDowns = newPoint3d(PoDowns.X + dx, PoDowns.Y + dy,0);

Point3d Pointnew = newPoint3d(dx, dy, 0);

Matrix3d mat = Matrix3d.Displacement(Pointnew.GetAsVector());

Ent.TransformBy(mat);

}

}

}

trans.Commit();

}

Listitem.Clear();

if (helperDevice != null)

helperDevice.Update();

分类: Teigha.Net

### 回答1: Teigha.net是一种用于开发和定制CAD应用程序的软件开发工具包(SDK)。该SDK是由一家名为Open Design Alliance(ODA)的非营利组织开发和维护的。 Teigha.net支持多种不同的CAD文件格式,包括DWG、DXF、DGN和DWF等,使开发人员可以在其应用程序中读取和编辑这些文件。它提供了丰富的API和功能,使开发人员能够创建强大而专业的CAD应用程序。 Teigha.net版本会定期发布,以提供新功能、修复错误和改进性能。开发人员可以通过许可证获取最新版本并访问ODA的开发者门户网站,以获得技术支持和资源。 使用Teigha.net进行CAD应用程序开发具有许多优势。首先,它提供了对多个CAD文件格式的全面支持。这使得开发人员能够开发适用于不同CAD软件的应用程序,为用户提供更广泛的选择。 其次,Teigha.net提供了丰富的API和功能,使开发人员能够轻松地集成CAD功能到自己的应用程序中。这有助于加速开发过程,节省时间和资源。 此外,Teigha.net的开发者社区非常活跃,开发人员可以通过这个社区获得支持和交流经验。他们可以与其他开发人员分享他们的问题和解决方案,并从中获得动力和灵感。 总之,Teigha.net是一个功能强大的CAD开发工具包,可以帮助开发人员创建出色的CAD应用程序。通过使用最新版本的Teigha.net,开发人员可以始终保持应用程序的最新状态,并享受来自开发者社区的支持和资源。 ### 回答2: Teigha.net是一种用于开发CAD软件的跨平台软件开发工具包(SDK)。它提供了一系列的API和库,使开发者能够在不同的操作系统(如Windows、Linux和Mac OS)上创建功能强大的CAD应用程序。 Teigha.net的版本是指其软件开发工具包的不同版本。随着时间的推移,Oda公司对Teigha.net进行了多次升级和更新,以提供更好的性能和功能。每个版本都带来了一些新的特性和修复了之前版本的缺陷。 在每个版本中,Teigha.net都会添加新的CAD文件格式支持,例如DWG、DXF、DGN等。同时,它也提供了用于创建和编辑CAD图形的API,包括绘制、编辑、修改实体和属性、导出等功能。此外,Teigha.net还支持3D渲染、打印、测量和标注等高级CAD功能。 随着技术的进步和用户需求的变化,Teigha.net的版本升级也会不断进行。每个版本都旨在提供更好的性能、更多的功能和更好的用户体验。因此,开发者可以根据自己的需求选择使用最新版本或适合自己项目的特定版本。 总之,Teigha.net是一个强大的CAD软件开发工具包,提供了丰富的API和库,可帮助开发者创建高度定制的CAD应用程序。版本升级和更新使其保持与技术发展和用户需求的同步,并为开发者提供更好的开发体验和更多的功能选项。 ### 回答3: "teigha.net" 是一个用于开发CAD应用程序的软件开发工具包(SDK)。它是由Open Design Alliance(ODA)开发并维护的。 teigha.net版本是指teigha.net SDK的不同发布版本。ODA定期发布新版本以提供更好的功能和性能,修复BUG,并与最新的CAD格式兼容。 每个teigha.net版本都具有一些特定的特性和改进。这些特性可能包括对新CAD格式的支持,性能优化,新的API功能,增强的图形渲染和处理能力等等。对于开发人员来说,选择正确的teigha.net版本非常重要,以确保他们的应用程序具有所需的功能,并与所用的CAD软件和版本兼容。 为了获取特定版本的teigha.net,开发人员需要与ODA合作,购买或订阅相应的许可证。一旦获得了许可证,开发人员就可以下载并使用相应版本的teigha.net SDK来构建他们的CAD应用程序。 总之,teigha.net版本是指teigha.net SDK的不同发布版本,每个版本具有独特的特性和改进。开发人员应该选择适合他们需求的版本,并获得相应的许可证,以构建与CAD软件兼容且具有所需功能的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值