Как использовать идентификатор представления в качестве параметра

Мой вопрос: как использовать идентификатор представления в качестве параметра?

Пример кода:

Dim DrwDocument As DrawingDocument
Set DrwDocument = CATIA.ActiveDocument
Dim iParameter As Parameter
Set iParameter = DrwDocument.Parameters.Item("Drawing\Sheet.1\ViewMakeUp.1\Scale")
MyText.InsertVariable 0, 0, iParameter 

но как я могу получить доступ к идентификатору представления и использовать его в качестве параметра?

спасибо!


person user3503343    schedule 25.04.2014    source источник


Ответы (1)


Хорошо, сделайте это, вы должны сначала создать параметр в объекте DrawingDocument.

Таким образом, к вашему текущему коду будет добавлено что-то вроде этого:

Dim IndetifierParam as Parameter
Set IdentifierParam = MyDrawingDocument.Parameters.CreateString("ViewIdentifier", "A")
MyText.Text = "View ID:  "'note: there are two spaces from last character to end of the quote
MyText.InsertVariable Len(MyText.Text),0,IdentifierParam 'First parameter is insert position, second parameter is how many characters to overwrite, third is the parameter.

Теперь в дереве рисования слева вы увидите набор параметров с вашим новым строковым параметром. Дважды щелкните параметр и отредактируйте его... Тест чертежа автоматически обновит текст чертежа с измененным значением параметра. ТАКЖЕ, в качестве дополнительного преимущества, в скрипте VBA намного проще изменить параметр, чем текст рисунка.

Как обновить или изменить этот новый параметр:

IdentifierParam.ValuateFromString "A" 'add a string or variable here

Наконец, дополнительный совет: перейдите в «Инструменты» -> «Параметры» и нажмите «Параметры и измерения» в дереве, а на первой вкладке «Знания» установите флажок «Со значением» и «С формулой». Это первые два флажка.

person GisMofx    schedule 26.04.2014
comment
вы можете увидеть это изображение, чтобы узнать, что я имею в виду под идентификатором: hpics.li/56ac594 спасибо - person user3503343; 26.04.2014
comment
@user3503343 user3503343 Это вид в разрезе? Как и в другом вашем сообщении: stackoverflow .com/questions/22893011/ - person GisMofx; 27.04.2014
comment
Да... Представьте себе такой сценарий: я изменяю текст выноски A с помощью макроса. после этого, если я хочу изменить имя представления AA, выноска не связана с этим именем... поэтому она не меняется... Идея состоит в том, чтобы переписать текст выноски, используя: MyText.InsertVariable 0, 0, iParameter, но я должен использовать параметр, который содержит идентификатор представления... Как я могу это сделать? благодарю вас - person user3503343; 27.04.2014
comment
@user3503343 понял. Есть несколько способов сделать это... Позвольте мне привести вам пример, и я обновлю свой ответ, указав основной способ сделать это. - person GisMofx; 27.04.2014
comment
@user3503343 user3503343 Я обновил свой ответ решением вашего вопроса. Дайте мне знать, если вы получите его на работу или есть какие-либо другие вопросы. - person GisMofx; 27.04.2014
comment
спасибо, но я хочу использовать параметр, который является идентификатором существующего представления... с вашим решением, если я изменю имя представления А-А, выноска не изменится... - person user3503343; 27.04.2014
comment
@user3503343 user3503343 В приведенном выше решении вам нужно будет создать параметр для имени представления и вызова раздела. То, как вы меняете имена, вы меняете значения параметров. Очень прямо вперед. Позвольте мне копнуть немного глубже и вернуться к вам о внутреннем параметре, о котором вы говорите. Возможно, параметр идентификатора недоступен через стандартную автоматизацию, как в предыдущем вопросе с текстовым элементом идентификатора. - person GisMofx; 27.04.2014
comment
я хочу использовать этот существующий параметр: Sheet.1\A-A\ViewName.1\ident но он не работает... - person user3503343; 27.04.2014
comment
если я смогу добавить несколько символов в текст выноски, не затрагивая его параметры, это решит мою проблему... спасибо. - person user3503343; 27.04.2014
comment
Я не могу решить эту проблему, я все еще жду вашей помощи. благодарю вас - person user3503343; 27.04.2014
comment
@user3503343 user3503343 вы можете добавить обычный текст, а затем вызвать вставить переменную. Вам просто нужно настроить параметры. Позвольте мне привести вам пример, когда я снова сижу перед своим компьютером. Вы хотите что-то вроде моего текста [parametertext]? - person GisMofx; 27.04.2014
comment
да, это именно то, что я хочу сделать... с идентификатором представления как [parametertext] - person user3503343; 27.04.2014
comment
@ user3503343 Я обновил свой ответ, чтобы показать пример того, как добавить текст, а затем добавить параметр в конец текста ... Но вы можете добавить параметр в любом месте строки. - person GisMofx; 27.04.2014
comment
он все еще не работает, потому что вы создали этот новый параметр, а не исходный... поэтому, если я изменю идентификатор представления A-A, моя текстовая выноска не изменится... я должен использовать существующий параметр... я искал, я нашел этот параметр: Sheet.1\A-A\ViewName.1\ident , но я думаю, что это внутренний параметр, который я не могу использовать... - person user3503343; 27.04.2014
comment
@user3503343 Я понимаю, но вам нужно вбивать имя вида и вызова раздела через НОВЫЕ параметры, которые создаются .. не внутренние. В скрипте вы можете изменить значение параметров и тексты будут обновляться автоматически. Есть ли причина, по которой это решение не сработает для вас? Кроме того, другой способ, но немного сложнее, вы можете изменить отношение для имени вида сечения, но это менее стабильно, потому что изменится имя параметра. Вы хотите посмотреть на OptionalRelation. Я до сих пор не нашел способа прямого доступа к параметру ID. - person GisMofx; 27.04.2014
comment
проблема в том, что я должен также связать идентификатор имени представления с новым параметром... ActiveView.GetViewName MyPrefix, MyIdent, MySuffix MyIdent должен быть равен новому параметру... - person user3503343; 28.04.2014
comment
@user3503343 Точно! Просто создайте новый объект DrawingText в разрезе. Назовите его ViewName или как хотите, затем установите его текстовое значение My View Name, а затем создайте ссылку с параметром (insertvariable), как вы это делаете с выносками сечения. ИМХО, это самый прямой способ сделать это. Чертежный верстак очень загадочен, когда дело доходит до автоматизации. Здесь много работы, подобной этой. - person GisMofx; 28.04.2014
comment
к какому параметру я его привяжу? я не могу получить доступ к: Sheet.1\A-A\ViewName.1\ident ... - person user3503343; 28.04.2014
comment
@ user3503343 Правильно. Вы не можете связать это. Создайте НОВЫЙ текстовый объект в разрезе и свяжите его с НОВЫМ параметром (IdentifierParam) с помощью InsertVariable - person GisMofx; 28.04.2014
comment
с этим решением, если я изменю НОВЫЙ текстовый объект... текст выноски изменится, все в порядке... но идентификатор вида сечения не изменится... вот в чем проблема... - person user3503343; 29.04.2014
comment
@user3503343 user3503343 С моим предыдущим ответом о том, как изменить идентификаторы с помощью команды выбора, вы должны иметь возможность insertvariable на них. - person GisMofx; 29.04.2014
comment
спасибо, GisMofx, вы знаете, как добавить несколько символов в текст выноски, не меняя параметр (в данном случае равный A)? Я думаю, мы можем сделать это с помощью: String = String для вставки после MyTextRange.InsertAfter(String), но я не знаю, как это сделать? помощь - person user3503343; 30.04.2014
comment
@user3503343 user3503343 Можете выложить скриншот? Чтобы ответить на ваш вопрос, ДА, это очень просто. Вы должны изменить текст выноски, а затем InsertVariable после. Сообщите мне, как вы хотите, чтобы ваш пузырь выноски раздела выглядел. - person GisMofx; 30.04.2014
comment
я хочу, чтобы выноска была A12, но если я изменю имя представления на B, оно автоматически изменится на B12, поэтому я должен сохранить параметр... - person user3503343; 30.04.2014
comment
Вы можете просто сделать параметр всей строкой, которую хотите использовать. A12, затем измените свой параметр на B12 ИЛИ вы просто MySectionText.Text = "12", а затем MySectionText.InsertVariable MyParameter, 0, 0 Затем вы сделаете те же вызовы на MyDrawingViewName.Text = "Section View ", а затем MyDrawingView.InsertVariable Len(MyDrawingViewName.Text),0,MyParameter [как я написал выше в ответе] ... На этом этапе я более чем достаточно ответил на ваш вопрос. Поэкспериментируйте с этими командами, пока не получите нужный результат. Не могли бы вы отметить этот ответ как принятый? - person GisMofx; 30.04.2014
comment
Спасибо GisMofx, вы мне очень помогли. Я думаю, что смогу решить проблему с помощью этих советов. - person user3503343; 30.04.2014