krampaul82 发表于 2011-2-24 16:46:58

向布局选项卡添加更多文本

大家好,
我有一个有12个布局选项卡的绘图模板,每个选项卡都写着acm-sht1,acm-sht2等
,问题是当分配了作业编号时,我需要重新标记选项卡以说acm-10-xxx sht1,acm-10-xxxx等,
有没有办法在vb(a)或Lisp中执行此操作? 任何帮助赞赏...
马克
**** Hidden Message *****

fixo 发表于 2011-2-24 18:08:49

试试这个代码
Option Explicit
'===============================================================
'require reference to Microsoft VBScript Regular Expressions 5.5
'===============================================================
Sub ahha()
Dim s As String
Dim i As Long
Dim cnt As Integer
Dim newstr As String
Dim num As Double
Dim regex As RegExp
Set regex = New RegExp
regex.IgnoreCase = False
regex.Global = False
newstr = "Boo"
regex.Pattern = "(acm-)(.*?)(-sht)(\d+)"
' Where:
' (acm-)- constant part
' (.*?) -any charachters you need to replace with 'newstr'
' (-sht)- constant part
' (\d+) - any digits
Dim olayout As AcadLayout
For Each olayout In ThisDrawing.Layouts
If Not olayout.ModelType Then
ThisDrawing.ActiveLayout = olayout
olayout.Name = regex.Replace(olayout.Name, "$1" & newstr & "$3" & "$4")
Debug.Print olayout.Name 'debug only
End If
Next
Set regex = Nothing
ThisDrawing.SetVariable "tilemode", 1
End Sub

krampaul82 发表于 2011-2-25 09:29:16


Fixo,
这就是我试图从模块中运行的内容,请参阅红色注释,其中挂起。 我这样做对吗?
任何帮助赞赏,在你的方便下......
Mark
'---------------------------------------------------------------------------------------
' 模块 : Module1
' 日期时间 : 2/25/2011 07:43
' 作者 :
' 目的 :
'---------------------------------------------------------------------------------------
选项显式
子gtc_tab_rename()
Dim tabrename as String
Dim s As String
Dim i As Long
Dim cnt As Integer
Dim newstr as String
Dim num As Double
Dim regex As RegExp [程序在这里停止。编译错误未定义用户定义类型]
设置正则表达式 = 新的正则表达式
正则表达式。忽略大小写 = 假
正则表达式。Global = False
tabrename = InputBox$(“输入项目编号 : ”) '设置选项卡的项目编号。
如果 tabrename = “” 则结束 '如果用户从输入框中点击取消,则结束 '退出干净
'确认项目编号
Msg = “您已输入 ” & tabrename & “ 这是正确的吗?”定义消息。
Style = vbYesNo + vbInformation + vbDefaultButton1 ' Define buttons.
标题 = “gtc 确认项目编号” ' 定义标题。
Ctxt = 1000 ' 定义主题
响应 = MsgBox(Msg, Style, Title, Help, Ctxt)
如果 Response = vbYes 则 ' 用户选择 Yes。
      
其他:gtc_tab_rename“用户”选择了“否”。重新启动程序以进行另一个选择
End ' Leave The Program
End If
newstr = “ & tabrename & ”
regex.Pattern = “(acm-)(.*?)(-sht)(\d+)“
' Where:
' (acm-)- 常量部分
' (.*?) - 您需要替换为'newstr'
' (-sht)- 常量部分
' (\d+) - 任何数字
Dim olayout As AcadLayout
For Each olayout In ThisDrawing.Layouts
If Not olayout.ModelType then
ThisDrawing.ActiveLayout = olayout
olayout.名称 = 正则表达式。替换(olayout.Name, “$1” & newstr & “$3” & “$4”)
Debug.Print olayout.名称 '调试仅
结束,如果
下一
个集正则表达式 = Nothing
ThisDrawing.Set可变的“tilemode”, 1
End Sub

Matt__W 发表于 2011-2-25 09:35:21

玩得开心点。

krampaul82 发表于 2011-2-25 10:53:06

嘘!感谢您分享马特!我确实修改了一些,我改变了Ucase T Lcase。

Matt__W 发表于 2011-2-25 11:20:47

Suh-Wheet!感谢您分享Matt!我确实对其进行了一些修改,我更改了Ucase T Lcase...

krampaul82 发表于 2011-2-25 15:10:15

那是SNL的IT人员吗?我喜欢那个小品...让开。

fixo 发表于 2011-2-25 17:49:17

添加对Microsoft VBScript正则表达式5.5的引用

krampaul82 发表于 2011-3-1 10:21:12

添加对Microsoft VBScript Reguar Expressions 5.5的引用
i添加了该引用,该程序不会挂起,但不会对选项卡执行任何操作。。。。
页: [1]
查看完整版本: 向布局选项卡添加更多文本