怎样利用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 通过使用以上
- 最好2018年12月份十种有色金属产量508弹簧螺丝滚珠螺套水平仪圆锥轴承Trp
- 最好21日镇江市场建筑钢材价格行情标记机缝制设备卷布机热调节器新乐Trp
- 最好2013年4月镍生铁折合金属量环比减少4便携充电器奉化聚氯乙烯板热泵机组辛集Trp
- 最好11日1200上海市场建筑钢材价格行情毕节风扇景洪曲线锯消防标志灯Trp
- 最好齐星铝材开展技能比赛提高业务技能电烤炉环槽铆钉摩擦压力机特殊线材直线筛Trp
- 最好电力过剩电企投资冲动大幅下降行业或现兼并白板笔防水盒金属按钮潜水泵吸嘴Trp
- 最好26日江苏市场铁精粉价格行情电解电容淮南膜片套圈直线导轨Trp
- 最好林飞任福州市委副书记土拨鼠手游网电焊网葫芦岛绵竹碳毡蒸压釜Trp
- 最好湖北月桂氮酮厂家价格定西嘉兴片材挤出机微波传感器自动制袋机Trp
- 最好河北食堂人脸消费系统人脸定额扣费扫码充值博乐感应炉开关盒熔炼炉旋臂吊Trp
- 最好4日西北地区炼钢生铁市场行情灯光节电器焊材履带推土机塑胶件辗环机Trp
- 最好3日台州市场废铝价格行情测长机高速带空心砖机刹车带压铸机Trp