お世話になります
長文ですみません
1ヶブロック名変更のVBSを開いて 下記に表示しました。
LT2014でお世話になりました AutoCAD2023で使用できないかと思いまして。
連続回転複写については すみません動作いたしました。
Dim Acad
'このステートメントは必ずCreateObjectよりも
'前の位置に挿入する。
'========== ***** ↓↓↓↓↓ ***** ==========
If MustRun Then WScript.Quit '二重起動しているか?
'========== ***** ↑↑↑↑↑ ***** ==========
'Set Acad = CreateObject("AcadRemocon.Body")
'以下何らかの処理をするコード
Call Main
Sub Main()
Set Acad = CreateObject("AcadRemocon.Body") 'AcadRemoconオブジェクト作成
If Not Acad.acSelect("ブロックを選択", Cnt) Then Er: Exit Sub
If Cnt = 0 Then Exit Sub
If Not Acad.acDxfOut("", "PREV", , , "2000") Then Er: Exit Sub
If Not Acad.DxfExtract(Cnt, Arr, "ENTITIES", "", "INSERT", "2") Then Er: Exit Sub
If Cnt = 0 Then Exit Sub
ReDim Aft(Cnt)
For i = 1 To Cnt
Nashi = True
If i > 1 Then
For j = 1 To i - 1
If Arr(1, j) = Arr(1, i) Then Nashi = False: Exit For
Next
End If
If Nashi Then
If Not Acad.GetString("変更後のブロック名を入力してください" & vbCrLf & "変更前の名前 = [ " & Arr(1, i) & " ]", Aft(i), Arr(1, i)) Then Er: Exit Sub
End If
Next
If Not Acad.acPostCommand("undo be ") Then Er: Exit Sub
If Not Acad.acPostCommand("-LAYER a d BAKUBAKU^M ^C^C^C") Then Er: Exit Sub
If Not Acad.acPostCommand("-LAYER a s BAKUBAKU^M ^C^C^C") Then Er: Exit Sub
If Not Acad.acPostCommand("-LAYER U *^MT *^MON *^M ") Then Er: Exit Sub
If Not Acad.acPostCommand("GRAPHSCR ") Then Er: Exit Sub
If Not Acad.acPostCommand("zoom e ") Then Er: Exit Sub
If Not Acad.acPostCommand("copybase non 0,0 all r p ") Then Er: Exit Sub
If Not Acad.acPostCommand("erase p ") Then Er: Exit Sub
Mukou = False
For i = 1 To Cnt
If Not Arr(1, i) = Aft(i) Then
Nashi = True
If i > 1 Then
For j = 1 To i - 1
If Arr(1, j) = Arr(1, i) Then Nashi = False: Exit For
Next
End If
If Nashi Then
If Not Acad.acPostCommand("-rename b " & Arr(1, i) & "^M" & Aft(i) & "^M") Then Er: Exit Sub
If Not Acad.acGetHistory(His, "-rename") Then Er: Exit Sub
If InStr(His, "無効") > 0 Then Mukou = True
End If
End If
Next
If Not Acad.acPostCommand("pasteclip non 0,0 ") Then Er: Exit Sub
If Not Acad.acPostCommand("-LAYER a r BAKUBAKU^M ^C^C^C") Then Er: Exit Sub
If Not Acad.acPostCommand("-LAYER a d BAKUBAKU^M ^C^C^C") Then Er: Exit Sub
If Not Acad.acPostCommand("zoom p undo e ") Then Er: Exit Sub
If Mukou Then Acad.acShowMessage "幾つかのブロック名を変更できませんでした。" & vbCrLf & "コマンドラインで確認して下さい", vbExclamation
End Sub
'エラー処理
Sub Er()
'ユーザーによるキャンセル
If Acad.ErrNumber = vbObjectError + 1000 Then
'ここにキャンセル時の処理を追加
Else
'エラー内容表示
Acad.ShowError
End If
End Sub
Public Function MustRun()
'実行している環境が64ビット環境か、32ビット環境か判断し、
'64ビット環境であれば、32ビット環境で自身の再起動を試みる。
'そして、Trueを返す。32ビット環境であれば、Falseを返す。
Const WSHOST = "wscript.exe"
Dim objWshShell 'WshShell オブジェクト
Dim ExecCmd '実行するコマンドライン
Set objWshShell = WScript.CreateObject("WScript.Shell")
If objWshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "AMD64" Then
ExecCmd = objWshShell.ExpandEnvironmentStrings("%WINDIR%") & _
"\SysWOW64\" & WSHOST & " " & _
WScript.ScriptFullName
objWshShell.Exec(ExecCmd)
MustRun = True
Else 'x86
MustRun = False
End If
Set objWshShell = Nothing
Set ExecCmd = Nothing
End Function
- THIG
- 2026/07/01 (Wed) 10:36:42