Autocadにコマンドを送信するためのこのコードがあります。それはOKです。
{
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
}
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}
}
期待どおりに動作しない、理由を理解してみました...
ACADChangeLayer(Layer)
{
GetAcad()
global ACAD
msgbox, % acad.activedocument.name
msgbox, %Layer%
CommandSetActiveLayer:= ("_-LAYER _SET " %Layer% " `n`n")
msgbox, %CommandSetActiveLayer%
...
}
最初のMsgBoxは適切なDocumentName(drawing1.dwg
)
2番目のMsgBoxuは、適切なLayerName(Layer_Name
-上記の2番目のコードブロックを参照)
3番目のMsgBoxは、変数の前の部分のみを表示します("_-LAYER _SET "
)なぜですか?
アドバイスありがとうございます。
問題は、次のいずれかとして記述する必要がある割り当て行です。
CommandSetActiveLayer := "_-LAYER _SET " . Layer . "`n`n"
CommandSetActiveLayer := ("_-LAYER _SET " . Layer . "`n`n")
CommandSetActiveLayer = "_-LAYER _SET " %Layer% `n`n
最初の2行は、連結演算子(dot .
)、2行目は従来の方法を使用しています。
参照: 変数と式 。