Kerry 发表于 2005-2-17 18:06:59

看起来它会起作用
我真的很感激。
让我去试一试。
我会让您知道它是如何工作的
谢谢

Kerry 发表于 2005-2-18 08:24:29

干得好,凯瑞,我很忙,直到今天早上才发帖,你比我快。

Anonymous 发表于 2005-2-18 08:55:36

嘿,伙计们,
到目前为止,我真的很感谢你们的帮助。
上面的代码工作得很好,但要么我没有完全按照我需要的方式使用它,要么可能是你们中的一个会有另一个建议。
下面是我正在开发的模块的一个例子
,我正在插入一个块,它是Intercomm符号的图例。
我的菜单宏允许您选择要将块插入到绘图中的比例(在7个左右)。
菜单宏暂停插入,在用户插入块后,Vba模块被触发。
下面的代码(对于每个循环)
对于用户可以选择的每个比例重复,粘贴到
第一个插入的块上太多了,一切都很好。
所以,如果你看下面的对于每个循环,我是说如果块互连的xscale因子为48,那么将层Co-I-SYMB重命名为Co-I-SYMB-48
现在,如果我以不同的比例插入第二个Intercomm(例如96)
它似乎正在经历模块中所有可能的比例因子, 再次看到48,然后我得到重复的记录错误,并且该层保留在Co-I-SYMB
中,我需要以某种方式看到它有一个48,忽略它然后继续到96并创建Co-I-SYMB-96层,依此类推。
因此,我试图按图层名称进行过滤。
如果那一层存在,那就继续前进,但我仍然没有运气
,我希望这有意义吗?
任何帮助将不胜感激
感谢
Mark


Dim Co_Layers As AcadLayers
Dim Intercomm As AcadBlockReference
Dim BlockXScaleFactor As Double
Set Co_Layers = ThisDrawing.Layers
Set Intercomm = ThisDrawing.ModelSpace.Item(Intercomm1)
BlockXScaleFactor = Intercomm.XScaleFactor
If Intercomm.XScaleFactor = 48 Then
For Each Layer In Co_Layers
If Layer.Name = ("Co-I-SYMB") Then
   Layer.Name = ("Co-I-SYMB-48")
End If
Next
End If
Exit Sub

Kerry 发表于 2005-2-18 11:36:32

我认为你的问题可能在于你拉比例因子的方式。有没有可能你回到第一块,得到它的比例因子,而不是新的块因子?因此它又看到了48
页: 1 [2]
查看完整版本: 如果图层存在,则: