(完整版)Teigha使用说明_第1页
(完整版)Teigha使用说明_第2页
(完整版)Teigha使用说明_第3页
(完整版)Teigha使用说明_第4页
(完整版)Teigha使用说明_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、Teigha中DWG数据库结构:3.02及以下版本命名空间应将Teigha换为DWGdirect。O.nD no.nq. n| u_nV ewporl ISbK RotoidUC3R&c ortiRocotdEHork r劉 RftCOrtlCEiGCt经 常用到 的有 TextStyleTable、LayerTable、LinetypeTable、BlockTable 及其对应的TextStyleTableRecord、LayerTableRecord、LinetypeTableRecord、BlockTableRecord 及 Entity。2、具体使用2.1添加引用使用前应该添加 T

2、D_Mgd_3.03_9.dll或是其他版本类库,类库分为64位与32位,32位类库在64位系统上运行效果可能不太好。3.02版本及一下版本可能没有64位的类库。命名空间有:Teigha.DatabaseServices;Teigha.Geometry;Teigha.Colors;Teigha.Export_Import;Teigha.GraphicsI nterface;Teigha.GraphicsSystem;Teigha.Ru ntime;2.2 打开、新建、保存数据库使用之前应加上这个:using ( Services ser = new Services ()/ 一个应用程序加上一

3、个就行了,否则出错1、打开数据库( dwg 文件)using ( Database pDb = new Database( false , false )/ 不加参数会出错 pDb.ReadDwgFile( Application .StartupPath + TABMENU.dwg, FileOpenMode.OpenForReadAndWriteNoShare, false , );2、新建数据库using ( Database pDb = new Database()/ 加参数出错3、保存(1) 保存格式SaveType pSavetype = SaveTypeSave12; Save1

4、2 为.dwg Save13 为dxf 默认保存为 dwg ,可以不用指定。(2) 保存版本类型DwgVersion dwgver = DwgVersion.vAC18; /ACAD2010为 vAC24; ACAD200为 vAC21; ACAD200为 vAC18;很重要,保存时要用,版本过高时低版本 AutoCAD 不能打开。(3) 保存pDb.SaveAs(filename, dwgver);pDb 为数据库( Database), filename 为 dwg 文件名, dwgver 为版本。2.3 写数据2.3.1 添加文本样式ObjectId styleId = ObjectId

5、 .Null;using ( TextStyleTable pStyles =( TextStyleTable )pDb.TextStyleTableId.GetObject( OpenMod.eForWrite)/ 文本样式记录using ( TextStyleTableRecord pStyle = new TextStyleTableRecord ()/ 表对象(记录)添加到表之前必须命名/ isShapeFile flag must also be set (if true) before adding the object/ to the database.pStyle.Name =

6、 styleName;/ 必须设定pStyle.IsShapeFile = isShapeFile;/ 添加(记录)到数据库之前必须设定(如果为 true )/ Add the object to the table. 添加对象(记录)到表 styleId = pStyles.Add(pStyle);/ 设置剩下的属性。 (可以添加后设置也可以添加之前设置) pStyle.TextSize = textSize;pStyle.XScale = xScale; pStyle.PriorSize = priorSize; pStyle.ObliquingAngle = obliquing; pSt

7、yle.FileName = fileName;if (isShapeFile) pStyle.PriorSize = 22.45;if (! string .IsNullOrEmpty(ttFaceName) pStyle.Font = newFontDescriptor (ttFaceName, bold, italic, charset, pitchAndFamily);return styleId;注: pDb 为 Database2.3.2 添加线型using ( LinetypeTable pLinetypes =( LinetypeTable )pDb.LinetypeTable

8、Id.GetObject( OpenMod.eForWrite)/ 线表记录using ( LinetypeTableRecord pLinetype = new LinetypeTableRecord () pLinetype.Name = name;/ 必须命名ObjectId linetypeId = pLinetypes.Add(pLinetype);/ 添加记录return linetypeId;注:线型要有相应的线型文件,且不一定能够加成功,线型可以在使用之前手动加在 dwg 模板中,从其他文件向 dwg 文件复制线型,可能不成功。2.3.3 添加块例:using ( BlockT

9、able blockTable = ( BlockTable )pDb.BlockTableId.GetObject( OpenMod.eForWrite)ObjectId annoBlockId;using ( BlockTableRecord btr = new BlockTableRecord ()btr.Name = AnnoBlock ;annoBlockId = blockTable.Add(btr);using ( Circle pCircle = new Circle ()pCircle.SetDatabaseDefaults(pDb);btr.AppendEntity(pCi

10、rcle);Point3d center = new Point3d (0, 0, 0);pCircle.Center = center;pCircle.Radius = 0.5;向块表中加入块之前, 块一定要有名字。 同时可以从其他文件中提取块, 加入到目标数据库 中 例:using ( Database db = new Database( false , false )if (! File .Exists( Application .StartupPath + BLOCKS + blockname +.dwg )MessageBoxShow(没找到 CAS块文件);return Obje

11、ctId .Null;db.ReadDwgFile(Application .StartupPath + BLOCKS + blockname + .dwg ,FileOpenMode.OpenForReadAndAllShare, false , );using ( BlockTable pTable =( BlockTable )db.BlockTableId.Open( OpenMode.ForRead)using ( BlockTable bt =( BlockTable )pDb.BlockTableId.Open( OpenMod.eForWrite)using ( BlockTa

12、bleRecord btr = new BlockTableRecord ()foreach ( ObjectId id in pTable)using ( BlockTableRecord pBlock =( BlockTableRecord )id.Open( OpenMod.eForRead)foreach ( ObjectId entid in pBlock) using ( Entity pEnt =( Entity )entid.Open( OpenMod.eForRead, false , true )btr.AppendEntity( Entity )pEnt.Clone();

13、btr.Name = blockname;ObjectId blockid = bt.Add(btr);return blockid;234向模型(model)空间画实体(线、面等)加入线,例:using ( BlockTable blockTable = ( BlockTable )pDb.BlockTableId.GetObject( OpenMod.eForWrite) ObjectId modelSpaceID = blockTable BlockTableRecord .ModelSpace; using ( BlockTableRecord btr =( BlockTableRec

14、ord )modelSpaceID.GetObject( OpenMod.eForWrite)using ( Polyline2d pline = new Polyline2d () btr.AppendEntity(pline);/向块记录中添加线Vertex2d pVertex = new Vertex2d ();/ 顶点 Point3d pos = start;/ 起点pVertex = new Vertex2d (); pline.AppendVertex(pVertex);pos = start;/ pVertex.Position = pos; pVertex.Dispose();

15、起点pVertex = new Vertex2d (); pline.AppendVertex(pVertex); pos = end;/顶点,终点pVertex.Position = pos;if (linewidth = 0.0)pVertex.StartWidth = linewidth; / 线宽pVertex.EndWidth = linewidth;pVertex.Dispose();/pline.Closed = false;/ if (linestyle != null ) pline.Linetype = linestyle;/pline.Layer = LayerName;

16、/加入面的操作与上面加入线类似,但最后线的此属性在画线时不加, 但在成面时将属性变为 true线型图层名Closed 属性应设置成 true。插入文字:using ( BlockTableRecord bBTR =( BlockTableRecord )modelSpaceID.GetObject( OpenMod.eForWrite)using ( DBText pText = new DBText()/ 开始时插入文字以左上点为准插入using ( Database pDb = bBTR.Database) pText.SetDatabaseDefaults(pDb);ObjectId t

17、extId = bBTR.AppendEntity(pText);/ 注释pText.Annotative = AnnotativeStates .True;/ 加入到特殊群if (pGroup != null )pGroup.Append(textId);pText.Position = position; / 位置(应该是左上方) pText.AlignmentPoint = alignmentPoint;/ 校准点什么东西pText.Height = height;/ 高度pText.WidthFactor = 1.0; / 什么东西 pText.TextString = text;pT

18、ext.HorizontalMode = hMode;/ 文字模式pText.VerticalMode = vMode; / 垂直模式 pText.Oblique = OdaToRadian(oblique); / 倾斜 pText.Rotation = OdaToRadian(rotation);/ 旋转/ 文字样式if (!textstyleID.IsNull)pText.TextStyleId = textstyleID;/ 层名if (!layerId.IsNull)pText.SetLayerId(layerId, false );if (widthfactor != 0.0)pTe

19、xt.WidthFactor = widthfactor;/宽度因子插入块:using ( BlockTableRecord btr =( BlockTableRecord )modelSpaceID.GetObject( OpenMod.eForWrite)块在数据库中的 idBlockReference pBlkRef = new BlockReference (point, btr.ObjectId);/point 为插入的位置new Scale3d (scale, scale, scale);/图层id插入块比例pBlkRef.BlockTableRecord = BlockRefID

20、;/ pBlkRef.ScaleFactors = pBlkRef.LayerId = layerID;/ btr.AppendEntity(pBlkRef);/2.3.5 图层加入图层:using ( LayerTable pLayers = ( LayerTable )pDb.LayerTableId.GetObject( OpenMod.eForWrite) / 图层using ( LayerTableRecord pLayer = new LayerTableRecord () pLayer.Name = name; / 图层名必须有 pLayer.Color = Color .Fro

21、mColorIndex( ColorMethod .ByAci, color); / 颜色/ 图层线型 using ( LinetypeTable pLinetypes =( LinetypeTable )pDb.LinetypeTableId.GetObject( OpenMod.eForWrite)ObjectId linetypeId = pLinetypeslinetype; pLayer.LinetypeObjectId = linetypeId;return pLayers.Add(pLayer);/ObjectID2.4 关于视图在写完 dwg 文件之后, 打开 dwg 有时会找不到所画的实体, 因此在保存前应先定义好视图: 方法一:using ( ViewportTable vt =( ViewportTable )pDb.ViewportTableId.GetObject( OpenMod.eForWr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论