Добрый день.
По первому пункту. Могу предположить, что параметр уже был добавлен в проект и привязан к какой-то еще категории. В этом случае нужно воспользоваться методом
BindingMap.ReInsert.
Но для начала можно посмотреть что возвращает метод
Insert в 14 строчке. Т.е. написать что-то типа
var res = doc.ParameterBindings.Insert(def, typeBinding, BuiltInParameterGroup.PG_TEXT);
и в режиме отладки посмотреть чему равна переменная
res. Если
false, то действительно привязки не произошло, поэтому логично что этого параметра нигде не увидите.
В любом случае, проверить еще макрос на чистом новом проекте и посмотреть там результат. Если в новом проекте все работает, то проблема однозначно в уже существующем параметре.
По второму пункту. Сходу сказать нельзя. Я бы получил сначала параметр и посмотрел в режиме отладке что там. Действительно ли это тот параметр и свойство
ReadOnly.
var param = elem.get_Parameter(trueparam[i])
. Смотреть чему равна переменная
param.
И аналогично попробовать на чистом проекте.