Этот вопрос вроде последующих от моего last question ...Tcl проблемы отсылая к переменным
У меня возникли некоторые проблемы в верхней части раствора из ответов там. Итак, история такая. Я пытаюсь написать сценарий в сотрудничестве с программой электронного просмотра. Проблема, которую я испытываю, правильно использует мои переменные в синтаксисе электронной программы.
Так что в основном смысл в этом. Я прочитал некоторые проекты, сохранив разные пути в массиве, а затем прочитал их один за другим. Во время этого чтения один за другим я открываю их в программе.
Исходный код для открытия макета для программы заключается в следующем:
set L1 [ layout create ]
$L1 create cell layout
$L1 create cell ONE
$L1 create cell TWO
set ONE [ layout create /users/jerre_111/public/imec_logo_zwart_512.gds -dt_expand -log LUN.log]
set ONE_top [$ONE topcell]
set TWO [ layout create /users/jerre_111/public/logo-rood.gds -dt_expand -log KTH.log]
set TWO_top [$TWO topcell]
$L1 import layout $ONE FALSE overwrite
$L1 import layout $TWO FALSE overwrite
$L1 create ref ONE $ONE_top 0 0 0 0 1
$L1 create ref TWO $TWO_top 0 0 0 0 1
$L1 create ref build ONE 0 0 0 0 1
$L1 create ref build TWO 207500 0 0 0 1
Таким образом, это исходный код. ONE
и TWO
- оба двух разных макета, которые я открываю в программе.
Вот как он должен работать в моем сценарии: я хочу динамически менять ONE и TWO по имени файла, который я открываю. Поэтому каждый раз я получаю путь из массива, а затем получаю имя из пути. Затем я хочу использовать имя файла вместо ONE
и TWO
. Я пытаюсь это так:
set L1 [ layout create ]
$L1 create cell build
foreach key [array names ::openedFiles] {
set filename [file tail $::openedFiles($key)]
set parts [split $filename .]
set name [lindex $parts 0]
$L1 create cell $name
set $name[ layout create $::openedFiles($key) -dt_expand -log LUN.log]
set cell_top [[set $name] topcell]
$L1 import layout [set $name] FALSE overwrite
$L1 create ref $name $cell_top 0 0 0 0 1
$L1 create ref build $name 0 0 0 0 1
}
Таким образом, каждый раз, когда я через петлю я получаю один элемент из массива. и затем я динамически даю им имена. Butt У меня возникли некоторые проблемы с В $ONE
или ONE
как в исходном коде ... Я пытаюсь заменить ONE
значением $name
...
Я надеюсь, что вы понимаете мою проблему и кто-то может помочь меня.
Благодарим вас за ответ! Первый вариант, который вы предложили, не работал для меня. Но второй сделал!обычно имя никогда не будет пустым, так что это не будет проблемой, я думаю. Большое спасибо за вашу помощь! –
Ничего себе, никогда не думал об использовании пустого имени переменной для массивов. Это круто. –