打印本文 打印本文 关闭窗口 关闭窗口
Autodesk官方最新的.NET教程(三)(vb.net版)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2556  更新时间:2009/4/23 19:00:00  文章录入:mintao  责任编辑:mintao
 

12)   接下来,我们要在AutoCAD数据库中创建一个独立的块,然后把它插入到块表而不是模型空间中。

 

首先把CreateEmployee函数的名字改为CreateEmployeeDefinition()。

加入以下代码来创建一个独立的块:

 

Dim myBtr As BlockTableRecord = New BlockTableRecord()

myBtr.Name = "EmployeeBlock"

Dim myBtrId As ObjectId = bt.Add(myBtr)

trans.AddNewlyCreatedDBObject(myBtr, True)

 

13)   现在,请稍微改动一下加入实体到模型空间的代码(改为加入块到块表中,记得加入前要打开块表)。

 

现在运行代码,然后使用INSERT命令来检查是否可以正确插入这个块。

 

14)   最后,我们要创建一个位于模型空间的块索引,它表示上面创建的块的一个实例。这一步留给大家练习。

 

下面是你要遵循的最基本的步骤:

      

A)                  创建一个名为CreateEmployee新的函数

 

B)                  把命令属性“CREATE”移动到CreateEmployee()

 

C)                  修改CreateEmployeeDefintion()来返回新创建的块“EmployeeBlock”的ObjectId,操作的步骤请参考CreateLayer()的作法。

 

D)                  你需要修改CreateEmployeeDefintion()来查看块表中是否已包含“EmployeeBlock”块,如果包含这个块,则返回它的ObjectId(做法与CreateLayer()一样)。

提示:把‘bt’的声明语句移动到try块的顶部,使用BlockTable.Has()方法,把其它的代码移动到else语句:

Try

                ''''获取BlockTable 对象

                Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForWrite)

                If (bt.Has("EmployeeBlock")) Then

                newBtrId = bt("EmployeeBlock") ''''已经存在……没必要创建它!

Else

   …

 

E)                  在新创建的CreateEmployee()函数中创建一个新的BlockReference对象,并把它加入到模型空间。提

示:我们可以使用CreateEmployeeDefinition()中引用模型空间的代码,这些代码在这里不需要了

F)                  在CreateEmployee中调用CreateEmployeeDefinition()函数,使上面生成的BlockReference对象的BlockTableRecord()指向CreateEmployeeDefinition()函数。提示:请参考BlockReference的构造函数。

 

 

附加的问题:

让我们来看一下代码的运行情况,执行命令会生成一个EmployeeBlock的块索引,你会看到它被插入到20,20,0而不是10,10,0。为什么?

如果你知道原因,那么怎样才能使块索引插入到正确的点?

当你用List命令查看块索引时,它会告诉你它位于0层(或者当命令运行时位于当前层)。为什么?

怎样才能让块索引总是位于EmployeeLayer层?

 

 

 

 

 

 

 

 

 

 

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口