明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5860|回复: 17

[基础] Teigha简单实例

[复制链接]
发表于 2016-1-22 21:51 | 显示全部楼层 |阅读模式
本帖最后由 雪山飞狐_lzh 于 2016-2-2 15:19 编辑

Teigha,雪山飞狐_lzh 版主有过介绍,并有实例程序,但我觉得那太复杂了,不适合新手,所以发一个基于Teigha4.0,C#,.NET4.0的最基本应用的例子。附件为源码。
 楼主| 发表于 2016-1-22 21:53 | 显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. using Teigha.DatabaseServices;
  11. using Teigha.Runtime;
  12. using Teigha.Geometry;
  13. using Teigha.GraphicsInterface;
  14. using Teigha.GraphicsSystem;

  15. namespace RepText
  16. {
  17.     public partial class Form1 : Form
  18.     {
  19.         public Form1()
  20.         {
  21.             InitializeComponent();
  22.         }

  23.         private void button1_Click(object sender, EventArgs e)
  24.         {
  25.             using (Services ser = new Services())
  26.             {
  27.                 string fname = "D:\\aaa.dwg";
  28.                 Database db = new Database(false,false);
  29.                 db.ReadDwgFile(fname,System.IO.FileShare.Read,false,null);
  30.                 using (var trans = db.TransactionManager.StartTransaction())
  31.                 {
  32.                     BlockTableRecord btrec = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
  33.                     foreach (ObjectId objid in btrec)
  34.                     {
  35.                         Entity ent = trans.GetObject(objid,OpenMode.ForWrite) as Entity;
  36.                         if (ent.GetType().Name == "DBText")
  37.                         {
  38.                             DBText txt = (DBText)ent;
  39.                             if (txt.TextString == "aaa")
  40.                             {
  41.                                 txt.TextString = "bbb";
  42.                             }
  43.                         }
  44.                     }
  45.                     trans.Commit();
  46.                 }
  47.                 db.Save();
  48.                 db.Dispose();
  49.             }

  50.         }

  51.         private void button2_Click(object sender, EventArgs e)
  52.         {
  53.             using (Services svc = new Services())
  54.             {
  55.                 string fname = "D:\\aaa.dwg";
  56.                 Database db = new Database();
  57.                 using (var tr = db.TransactionManager.StartTransaction())
  58.                 {
  59.                     Point3d pt1 = new Point3d(0, 0, 0);
  60.                     string str = "aaa";
  61.                     DBText txt = new DBText();
  62.                     txt.Position = pt1;
  63.                     txt.TextString= str;
  64.                     BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
  65.                     btr.AppendEntity(txt);
  66.                     tr.AddNewlyCreatedDBObject(txt, true);
  67.                     tr.Commit();
  68.                     db.SaveAs(fname,DwgVersion.AC1800);
  69.                     db.Dispose();
  70.                 }
  71.             }

  72.         }

  73.         private void button3_Click(object sender, EventArgs e)
  74.         {
  75.             using (Services svc = new Services())
  76.             {
  77.                 string fname = "D:\\aaa.dwg";
  78.                 Database db = new Database(false,false);
  79.                 db.ReadDwgFile(fname, System.IO.FileShare.Read,false , null);
  80.                 using (var tr = db.TransactionManager.StartTransaction())
  81.                 {
  82.                     Point3d pt1 = new Point3d(0, 0, 0);
  83.                     double rad = 1000;
  84.                     Circle cir = new Circle();
  85.                     cir.Center = pt1;
  86.                     cir.Radius = rad;
  87.                     BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
  88.                     btr.AppendEntity(cir);
  89.                     tr.AddNewlyCreatedDBObject(cir, true);
  90.                     tr.Commit();
  91.                     db.Save();
  92.                     db.Dispose();
  93.                 }
  94.             }

  95.         }
  96.     }
  97. }
 楼主| 发表于 2016-1-22 21:56 | 显示全部楼层
例子包括新建DWG文件并写入文字,后台打开DWG文件画圆,后台文字替换

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-1-22 22:02 | 显示全部楼层
不好意思,发成要钱的了,重发·。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-1-22 22:59 | 显示全部楼层
很好~...      好像飞诗说官方的例子有一个能实现选择图形的 用鼠标  不知道在哪里-.-
发表于 2016-1-23 09:40 | 显示全部楼层
谢谢………………
发表于 2016-1-23 20:17 | 显示全部楼层
请问下,是不是用这个,不受版本限制?
 楼主| 发表于 2016-1-23 20:26 | 显示全部楼层
用这个直接就脱离CAD操作DWG文件
发表于 2016-1-26 10:41 | 显示全部楼层
本帖最后由 paciguard 于 2016-1-26 10:53 编辑

楼主好,请问使用Teigha 4.0,都需要应用哪些库文件,除了TD_Mgd_4.00_10.dll。VS2012。
多谢!!!
发表于 2016-1-26 11:33 | 显示全部楼层
谢谢楼主!看了你的程序,我的是用VB编的,目标平台X86,Teigha的2个库文件都引用了,但运行提示:创建窗体出错,未能加载文件或"TD_Mgd_4.00_10.dll"或它的某一个依赖项。
麻烦帮忙看看。多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-24 04:43 , Processed in 0.165969 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表