明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2879|回复: 6

为什么这段程序会报未找到主键?

[复制链接]
发表于 2009-3-24 17:28:00 | 显示全部楼层 |阅读模式

我想找到一个BlockReference 然后更改它的NAME ,可到了最后一句总报未找到主键,魏森么呢?

Dim InsPoint(0 To 2) As Double
Dim NewEnt As AcadBlockReference
For Each Ent In ThisDrawing.ModelSpace
        If Ent.ObjectName = "AcDbBlockReference" Then
         Select Case Ent.Name 'EffectiveName
            Case "Motor_Cable"
            Set NewEnt = Ent.Copy
 
    Dim point1(0 To 2) As Double
    point1(0) = 2: point1(1) = 1: point1(2) = 0

 
            NewEnt.InsertionPoint = point1
            
        End Select
        End If
        Next

NewEnt.Name = "MotorAAA"  '这里报错

End Sub
谢谢!!

 楼主| 发表于 2009-3-25 09:36:00 | 显示全部楼层

顶一下 期待回答

发表于 2009-3-25 15:45:00 | 显示全部楼层

貌似思路不对,建新块,只能用blocks.add方法

 楼主| 发表于 2009-3-26 09:41:00 | 显示全部楼层

建新块也行,怎么能建一个新的把以前的那个所有信息都拷贝过来呢?  这些块只有编号不一样 图形什么的都一样啊

发表于 2009-3-26 14:00:00 | 显示全部楼层

你修改的应该是AcadBlock的name,AcadBlockReference的name是只读的

ThisDrawing.Blocks.Item(NewEnt.Name).Name = "MotorAAA"

发表于 2009-3-26 14:03:00 | 显示全部楼层

BlockRef: A block reference can be assigned the name of only a valid block definition in the drawing. Assigning a block reference a unique name will not automatically create a new block definition. To create a new block definition, use the MSITStore:C:\Program%20Files\AutoCAD%202008\help\acadauto.chm::/idh_add.htm">Add method to add a new Block object to the Blocks collection.

 楼主| 发表于 2009-3-26 15:47:00 | 显示全部楼层
测试成功 太感谢了!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 05:52 , Processed in 0.156992 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表