Eu tenho esse código para enviar comando para o Autocad. Funciona bem.
{
GetAcad() ;Creates global variable ACAD where Application Object is stored
CADdoc:= ACAD.activedocument
Layer:= "0"
CADdoc.SendCommand("_-LAYER _SET " %Layer% " `n`n") ;;Uses COM
CADdoc.SendCommand("_CHPROP _LA " %Layer% " `n`n") ;;Uses COM
sleep, 50
send, {Escape}
sleep, 50
send, {Escape}
return
}
Tentei criar função com o parâmetro Layer
ACADChangeLayer("Layer_Name") ;This is how is the function called
ACADChangeLayer(Layer)
{
GetAcad()
global ACAD ;because I global variable has given value outside this function
ACAD.activedocument.SendCommand("_-LAYER _SET " %Layer% " `n`n")
ACAD.activedocument.SendCommand("_CHPROP _LA " %Layer% " `n`n")
sleep, 50
send, {Escape}
sleep, 50
send, {Escape}
}
Não funciona como esperado, tentei descobrir o porquê...
ACADChangeLayer(Layer)
{
GetAcad()
global ACAD
msgbox, % acad.activedocument.name
msgbox, %Layer%
CommandSetActiveLayer:= ("_-LAYER _SET " %Layer% " `n`n")
msgbox, %CommandSetActiveLayer%
...
}
A primeira MsgBox mostra o DocumentName adequado (
drawing1.dwg
)O segundo MsgBoxu mostra o LayerName adequado (
Layer_Name
- veja o segundo bloco de código acima)Terceira MsgBox mostra apenas parte antes da variável (
"_-LAYER _SET "
) Por quê?
Agradecido por seu Conselho.
O problema é a linha de atribuição que deve ser escrita como uma das seguintes:
As duas primeiras linhas usam o método de expressão mais recente com o operador de concatenação (ponto
.
), enquanto a segunda linha usa o método tradicional.Referência: Variáveis e Expressões .