首页 >> 管封口机

怎样利用VBA访问图块和图块参照数据0软启动器

飞舞五金网 2022-07-07 14:13:05

怎样利用VBA访问图块和图块参照数据

怎样利用VBA访问图块和图块参照数据 2011年12月10日 来源: 你可使用VBA来管理图块和图块参照。图块就是关联在一起形成一个单一对象形式的对象集合,它称为图块定义。当你在图形中插入图块时,你就创建了图块参照。也就是说,图块参照引用了图块定义。区分图块定义和图块对照之间的不同是非常重要的,因为它可以帮助你明白怎样在VBA中操作这些对象。这里将通过对一个短程序的评解来解释它的操作方法。以下内容通过注释代码来示范怎样通过VBA访问图块(图块定义)和图块参照数据。 创建应用界面 假定你已经在VBA中定义了主表单,表单中有以下控件: ListBox(列表框):名称为 lstBlockObjectListBox(列表框):名称为 lstBlockReferenceCommand Button(命令按钮):名称为 cmdCreateBlockCommand Button(命令按钮):名称为 cmdListerCommand Button(命令按钮):名称为 cmdChangeColor 创建一个模块并添加以下声明: '图块集合 Public blkColl As AcadBlocks '图块对象 Public BlkObj As AcadBlock '图块参照对象 Public BlkRefrence As AcadBlockReference '模型空间集合 Public mspace As AcadModelSpace '图纸空间集合 Public pspace As AcadPaperSpace Public count As Integer Public I As Integer Public elem As Object Public subelem As Object '图块插入点 Public blkInsPnt (0 To 2) As Double Public circleObj As AcadCircle '圆的圆心 Public center(0 To 2) As Double '圆的半径 Public radius As Double Public lineObj as AcadLine '直线起点 Public startPnt (0 To 2) As Double '直线终点 Public endPnt (0 To 2) As Double 添加以下声明到表单的初始化(Initialize)事件中: '返回模型空间集合 Set mspace = ThisDrawing.ModelSpace '返回图纸空间集合 Set pspace = ThisDrawing.PaperSpace '返回图块集合 Set blkColl = ThisDrawing.Blocks 创建图块 要创建图块参照,首先你必须创建图块定义(图块)。你可以用Add方法来建立图块。建立了图块后你可以使用InsertBlock方法插入一个实例到图形中。在本例中,我们在模型空间中创建一个由一个圆和一条直线所组成的图块。添加以下代码到cmdCreateBlock按钮的Click事件过程中: blkInsPnt(0) = 0#: blkInsPnt(1) = 0#: blkInsPnt(2) = 0# '添加图块到图块集合中 Set BlkObj = blkColl.Add(blkInsPnt, "NewBlock") 添加图元到图块中 以下程序段提供了添加图元到图块中的代码实例。 添加圆: center(0) = 0#: center(1) = 0#: center(2) = 0# radius = 1 '添加圆到图块中 Set circleObj = BlkObj.AddCircle(center, radius) 添加直线: startPnt(0) = 1#: startPnt(1) = 1#: startPnt(2) = 0# endPnt(0) = 5#: endPnt(1) = 5#: endPnt(2) = 0# '添加直线到图块中 Set lineObj = BlkObj.AddLine(startPnt, endPnt) 插入图块到模型空间中以下代码示范了在模型空间中插入图块: Set BlkRefrence = mspace.InsertBlock(blkInsPnt, "NewBlock", 1#, 1#, 1#, 0) '缩放到图块大小 ZoomExtents 访问图块和图块参照对象 VBA通过ThisDrawing对象可链接到在当前AutoCAD进程中的当前图形。通过使用ThisDrawing,你可以立刻获取访问到当前文档对象以及所有有关它的方法和属性,还有所有同一层次的其它对象。要访问图块,你可引用ThisDrawing对象;要访问图块对照,你可引用ModelSpace和PaperSpace集合。 访问图块对象 你现在必须扫描图块集合,找到图块的名称并将其放到列表框lstBlockObject中。这里有两种方法可扫描图块集合。你可使用索引来扫描图块集合。当你知道集合中包含有多少项目时,你可使用For.Next条件语句。要这样做,可添加以下代码到cmdLister按钮的Click事件过程中: '返回图块集合中的图块数量 count = blkColl.count '清除列表框 lstBlockObject.Clear '创建图块列表 For I = 0 To count - 1 lstBlockObject.AddItem blkColl.Item(I).Name Next lstBlockObject.ListIndex = 0 注意:如果集合中有N项,则索引应该从0到N-1。 然而,一个更好的方法是使用For Each.In.Next条件语句。例如,以下语句可在集合中每一对象或阵列中的每一元素重复一组语句。VBA自动设置循环运行中每次的变量。因此你可使用以下示例重新编写先前的代码: '清除列表框 lstBlockObject.Clear '创建图块列表 For Each elem in ThisDrawing.Blocks lstBlockObject.AddItem elem.Name Next lstBlockObject.ListIndex = 0 通过使用以上

深圳仁爱医院

南昌泌尿感染

专业治疗白癜风的医院哪里好

乌兰察布妇科哪家医院看妇科好

半月板变性的症状和表现有哪些

友情链接