1 Attachment(s)
Problem having command repeat until escaped with VB.Net
I am converting over a menu to a palette. An example menu macro command being moved over is *^C^C(command "layer" "m" "LSYMLIN" "ltype" "continuous" "" "color" "30" "" "")(command "insert" "104" "S" msf "r" 0 (getpoint)); As I understand the * in front of the macro is what tells the command to continue to repeat until the user no longer wants it, this works perfectly in the menu. The users is asked to select and insertion point on the screen, it inserts the symbol, asks the user for an insertion point, inserts the symbol and so on. However when moving this over to .Net I can't get the repeat functionality to function the same. I am currently doing something along the lines of
Dim command As String = "(command ""layer"" ""m"" ""LSYMLIN"" ""ltype"" ""continuous"" """" ""color"" ""30"" """" """")(command ""insert"" ""104"" ""S"" msf ""r"" 0 (getpoint)) "
ThisDrawing.SendCommand(command)
I have tried using the Multiple command first with no luck (it asks for the first point, inserts it, asks for the next point but doesn't do anything when you select the point). There is a screenshot of this attached (the block name is different on the screenshot but the rest of the command is the same). It inserted the block once, and you can see it asking for the insertion point again, however when I click nothing happens!
Re: Problem having command repeat until escaped with VB.Net
SendCommand runs asynchronously.
Re: Problem having command repeat until escaped with VB.Net
Well personally i'd handle that with LISP, something simple along the lines of:
Code:
(defun c:yourcommandhere ()
(while (= 1 (getvar "cmdactive"))
(command yourcommandstringhere)
)
)
but then the looping may not work as intended, so for .NET, try enclosing your commands like this?
Code:
Dim LoopControl As Boolean = True
Do While LoopControl
Using tr As Transaction = db.TransactionManager.StartTransaction()
"your command strings here"
If pr.Status = PromptStatus.Cancel Then Exit Do
If pr.Status = PromptStatus.OK Then
End Using
Loop
Re: Problem having command repeat until escaped with VB.Net
It's been a while since this thread was started, but if I might ask, why use VB.NET to access COM, to send a Command string via SendCommand() in lieu of simply accessing the .NET API straight on?
Seems like an awful lot of work, when a simple LISP could do the same. Just saying.