专业的编程技术博客社区

网站首页 > 博客文章 正文

表格的基本操作、表格插入块参照、设置公式-C#二次开发CAD(四)

baijin 2024-10-15 08:31:45 博客文章 10 ℃ 0 评论

表格的基本方法、操作在教材案例、C#的元数据代码中写得很清晰了,但在实际动手操作时,光理解理论是不够的,还需要不断实践和熟悉。这两天把表格的这些操作进行了梳理,可以满足后期自动生成材料表、从EXCEL复制数据的需求了。把成果写在这里,分享给读者诸君。

打开数据库、提交保存相关的代码不再重复,可以参考直线章节的的内容。

1,建立表格对象

Table table = new Table();

2,设置表格行、列数量

table.SetSize(5, 10); // 5行10列

3,设置行高

table.SetRowHeight(10); // 设置行高为10个单位
table.Rows[1].Height = 20;//设置第2行高为20个单位
table.Height = 100;//设置总行高为100个单位

如果设置了总行高,程序自动按比例均分单行行高。

4,设置列宽

table.SetColumnWidth(50); // 设置列宽为50个单位
table.Columns[0].Width = 20; // 设置第1列宽度为20个单位
table.Width = 300;//设置总宽度为300个单位;

5,设置插入点

table.Position = new Point3d(0, 0, 0); // 设置插入点为原点

6,设置单元格显示内容

table.Cells[0, 0].TextString = "这是标题行";
//设置第一行的内容,默认第1行为标题行,是合并的单元格

7,左对齐、正中对齐、右对齐

table.Cells[1, 0].Alignment = CellAlignment.MiddleLeft; 
table.Cells[1, 0].TextString = "左对齐";
table.Cells[1, 1].Alignment = CellAlignment.MiddleCenter;
table.Cells[1, 1].TextString = "正中对齐";
table.Cells[1, 2].Alignment = CellAlignment.MiddleRight;
table.Cells[1, 2].TextString = "右对齐";

8,清除单元格内容

table.Cells[1, 1].Contents.Clear();

9,获取指定单元格的ID

ObjectId objectId =  table.Cells[1, 1].FieldId;

10,合并单元格

table.MergeCells(CellRange.Create(table, 1, 1, 1, 2));
//四个参数分别为int topRow, int leftColumn, int bottomRow, int rightColumn,本式中为合并第2行第2、3列的单元格

11,取消合并单元格

table.UnmergeCells(CellRange.Create(table, 1, 1, 1, 2));

12,设置单元格字体样式

TextStyleTable st = (TextStyleTable)acCurDb.TextStyleTableId.GetObject(OpenMode.ForWrite);
ObjectId textObjectId = st["STANDARD"];=右侧输入字体样式的ID号,或在【】内的字符串输入文字样式名。
table.Cells[1, 1].TextStyleId = textObjectId;

13,设置单元格字号

table.Cells[1, 1].TextHeight = 350;

14,将单元格内容设置为块参照

14.1,自适应比例

BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
table.Cells[2, 5].BlockTableRecordId = acBlkTbl["SXJ1"];
//=右侧输入块参照的ID号,或者在【】内输入块参照的名字。

14.2,设置为固定比例

如果不设置比例值,将是自动比例,块参照会充满单元格,观感较差。因此应根据块参照的尺寸,将其修改为固定比例。

BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
table.Cells[2, 4].BlockTableRecordId = acBlkTbl["SXJ1"];
CellContent newCellContent;
newCellContent = table.Cells[2, 4].Contents[0];
newCellContent.IsAutoScale = false;//取消自动缩放
newCellContent.Scale = 1.2;//缩放倍数
table.Cells[2, 4].Alignment = CellAlignment.MiddleCenter;//正中对齐

两种方式的差别,显然设置为固定比例更美观。

15,在表格中输入公式

Cell cell;
cell = table.Cells[3, 0];//A4
cell.Contents.Add();
newCellContent = cell.Contents[0];
newCellContent.Formula = "=A3*A2*A3";//直接在单元格内输入公式
cell.TextHeight = 350;//设置字号
cell.Alignment = CellAlignment.MiddleCenter;//居中对齐

输入完成后,在CAD中生成表格,然后在A3和A2中输入数值,在A4中自动运行输入结果

友情提醒:添加完表格,记得提交保存acTrans.Commit();。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表