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读取CAD的常用功能模块的更多相关文章

  1. KeilC51常用功能模块使用说明

    本文档包括单片机系统中常用到的时钟中断.通讯及键盘扫描等模块(见所附源程序)的说明.这些模块使用前后台系统模型.为达到最大的灵活性, 需要在用户工程中定义config.h文件, 在其中定义各模块可选参 ...

  2. PHP常用功能模块

    错误异常模块 错误处理 1. 系统定义了一些二进制码,用来表示错误报告的级别:     在 /etc/php5/apache2/php.ini中修改php配置文件,其中display_errors默认 ...

  3. Biopython常用功能模块

    Biopython项目是旨在减少计算生物学中代码重复的开源项目之一,由国际开发人员协会创建. 它包含表示生物序列和序列注释的类,并且能够读取和写入各种文件格式(FASTA,FASTQ,GenBank和 ...

  4. python常用功能模块

    路径相关:os.pathlib Windows注册表相关:winreg 系统cpu.内存.线程相关:psutil 文件.文件夹处理:shutil 解析和生成ini文件:ConfigParser:(co ...

  5. IOS开发-OC学习-常用功能代码片段整理

    IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...

  6. Linux系统Bash的常用功能(9)

    了解了基本的Linux文件文件系统的概念后,我们将更深入的了解一下Linux的其他方面的内容,那就是我们所使用的用户接口,也就是大家常听到的 『Shell』 ,『这个shell并不是黑客反弹的shel ...

  7. Python常用功能函数

    Python常用功能函数汇总 1.按行写字符串到文件中 import sys, os, time, json def saveContext(filename,*name): format = '^' ...

  8. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  9. js实现第一次打开网页弹出指定窗口(常用功能封装很好用)

    js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...

随机推荐

  1. Chrome浏览器所有页面全部崩溃解决办法。

    今晚写代码的时候更新了一下Chrome,结果打开所有网页都提示 喔唷 崩溃了,而且找到c盘内没有bd0001.sys文件,电脑内也无任何百度系的软件,此解决办法pass. 折腾了半天从google中找 ...

  2. Dynamics CRM Package Deployer 部署工具

    CRM 部署工具非常有用 我们可以用部署工具来做迁移,部署 等等.  Package Deployer可以同时部署多个solutions. 并且也可以勾选solution的plugin也同时部署. 三 ...

  3. Kivy 自定义控件之(一)

    lableSlider1.kv文件 <LabelSlider>: orientation:'vertical' BoxLayout: MyLabelSlider: name: 'Slide ...

  4. 贪心+huffman编码+模拟退火+分治(一)

    (一)贪心 1.A - 今年暑假不AC “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很 ...

  5. 使用dlib基于CNN(卷积神经网络)的人脸检测器来检测人脸

    基于机器学习CNN方法来检测人脸比之前介绍的效率要慢很多 需要先下载一个训练好的模型数据: 地址点击下载 // dlib_cnn_facedetect.cpp: 定义控制台应用程序的入口点. // # ...

  6. 2016 CCPC-Final-Wash(优先队列+贪心)

                  Wash Mr.Panda is about to engage in his favourite activity doing laundry! He’s brought ...

  7. svg微信公众号推文实现点击显示答案

    svg微信公众号推文实现点击显示答案 大家都知道微信公众号推文不能写js 所以不能加点击事件 其实是对的 确实不能写js 但是点击事件可以用svg写  svg代码可不会隐蔽 下面我直接贴代码 < ...

  8. learn more ,study less(二):整体性学习技术(下)

    随意信息的处理 随意信息,或者内容太多.太复杂的信息,都不容易理解,它们需要不同的技术.假 如你发现联想法不能帮助你理解材料,或者需要花费的时间太长,这时候处理随意信息的方 法就很适合了. 这些处理随 ...

  9. 九 Shell中的数组

    数组:用一个变量存储一组数据,并能够对这组数据中的某一个数据单独操作. 数组的类型:一维数组.二维数组.多维数组 变量的类型 Shell中默认无类型 变量的值默认均视为文本 用在数字运算中时,自动将其 ...

  10. 如何利用开源解码项目开发js视频解码的web应用 系列

    介绍web上开发视频业务相关程序的技术演变历程 https://www.cnblogs.com/maoliangwu/articles/12046495.html 介绍ffmpeg asm.js we ...