選択状態で終了とし、ENTERで再度コマンドを実行させたいです。
(必要最小部分について、AIに作らせました)
1. LISPからVBAの"SelectOnlyLines"を呼び出します。
2. 線分が選択された状態で終了します
3. ENTERで再度"SelectOnlyLines"で実行しようとする。 →→→「SELECT」コマンドが実行されてしまう。
という状況です。
SELECTコマンドを送信してるのだから当然なのですが。
AIに、「SendCommandを使用せずに選択状態としてくれ」と指示しても、
ハイライトしているだけで選択状態とならないコードを提示されたり…
巡り巡って元のSendCommand使用を案内されてしまい解決に至りません。
ENTERで、VBAコードを再度実行するための方法があれば教えて下さい。
問題としているのは「全線分を取得するコマンドを繰り返し実行したい」(LISPのみ完結等の別手法を求めている)ではなく、
「現状SendCommandを用いているVBAコードを繰り返し実行したい」
ということであることをご承知おき下さい。
# LISPコード(VBA呼び出し用)
(defun c:SelectOnlyLines ()
(vl-vbarun "SelectOnlyLines")
(princ)
)
# VBAコード
Sub SelectOnlyLines()
Dim sset As AcadSelectionSet
On Error Resume Next
ThisDrawing.SelectionSets("LineSelectionSet").Delete
On Error GoTo 0
Set sset = ThisDrawing.SelectionSets.Add("LineSelectionSet")
sset.Select acSelectionSetAll, , , Array(0), Array("LINE")
If sset.Count > 0 Then
ThisDrawing.SendCommand ("_SELECT P" & vbCr & vbCr)
End If
sset.Delete
End Sub
VBA: 選択状態で終了としたいけど
- Lispかじり
- 2025/09/27 (Sat) 20:11:46