Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: trir от 01-09-2016, 07:48:58

Название: Особенности GetKeywords
Отправлено: trir от 01-09-2016, 07:48:58
Код:
Код - Visual Basic [Выбрать]
  1.     <CommandMethod("test2")> _
  2.     Public Sub test2()
  3.         Dim editor As Autodesk.AutoCAD.EditorInput.Editor = acApp.Application.DocumentManager.MdiActiveDocument.Editor()
  4.         Dim sheetSetDatabase As AcSmDatabase = GetSSDB2(editor)
  5.         If sheetSetDatabase IsNot Nothing Then
  6.             Dim pKeyOpts As acEdInp.PromptKeywordOptions = New acEdInp.PromptKeywordOptions(vbLf & "Имя свойства: ")
  7.             pKeyOpts.AppendKeywordsToMessage = True
  8.             pKeyOpts.AllowArbitraryInput = True
  9.             Dim kList As List(Of String) = GetCPNameList(sheetSetDatabase.GetSheetSet.GetCustomPropertyBag)
  10.             kList.ForEach(Sub(obj) pKeyOpts.Keywords.Add("""" & obj & "1""", """" & obj & "2""", """" & obj & "3"""))
  11.             Dim PrRes As acEdInp.PromptResult = editor.GetKeywords(pKeyOpts)
  12.             If PrRes.Status = acEdInp.PromptStatus.OK Then
  13.                 Dim PropertyName As String = PrRes.StringResult
  14.                 If PropertyName <> "" Then
  15.                     editor.WriteMessage("Value: " & PropertyName)
  16.                 End If
  17.             End If
  18.             ' fSubSetSetCP(sheetSetDatabase, sheetSetDatabase.GetSheetSet().GetSheetEnumerator, "", "")
  19.        End If
  20.     End Sub

Результат:
Команда: TEST2
Имя свойства ["01_Разработал3"/"02_Дата разработки3"/"03_Проверил3"/"05_Н контролер3"/"07_ГАП,Гл Констр3"/"10_Номер по генплану3"/"13_Расшифровка13"/"14_Расшифровка23"/"15_Расшифровка33"/"16_Расшифровка43"/"17_Наименование чертежа3"/"18_ГИП3"/"TransmittalSetups3"/"Дата подписи Директора3"/"Директор3"]: Д
Value: Д

Как получить всю строку Keyword?
Название: Re: Особенности GetKeywords
Отправлено: Алексей Кулик от 01-09-2016, 08:44:19
Если возвращается "Д", то что должно быть в строке-результате - "Дата подписи Директора3" или "Директор3"? Насколько я помню из лиспа, ключевые слова должны быть уникальными в пределах одного запроса.
Название: Re: Особенности GetKeywords
Отправлено: trir от 01-09-2016, 09:08:01
"Дата подписи Директора3"

Всё, что между кавычками
Название: Re: Особенности GetKeywords
Отправлено: Алексей Кулик от 01-09-2016, 09:13:13
Опять же - по аналогии с лиспом (сейчас проверять в VS не имею возможности): надо в строку ключевых слов подставлять не "Дата" и "Директор3", а, например, "ДАта" и "ДИректор3". Тогда и будет возвращаться либо "ДА", либо "ДИ" - и соответственно фильтровать можно будет.
Название: Re: Особенности GetKeywords
Отправлено: Алексей Кулик от 01-09-2016, 09:21:19
Я почему-то начинаю подозревать, что проще будет нарисовать окно с несколькими радиокнопками и выбирать уже в нем...
Название: Re: Особенности GetKeywords
Отправлено: trir от 01-09-2016, 09:25:02
Не хочу окно рисовать. В данном случае мне надо выбрать свойство подшивки...
Название: Re: Особенности GetKeywords
Отправлено: Алексей Кулик от 01-09-2016, 09:30:36
В качестве идеи "пальцем в небо": переведи все свойства (точнее, их названия) в верхний регистр и убери в них пробелы, заменив, например, на "_". И посмотри, что получится.
Название: Re: Особенности GetKeywords
Отправлено: Дмитрий Загорулькин от 01-09-2016, 14:58:17
Это у тебя не ключевые слова, а какой-то хаос. Запусти какую-нибудь команду автокада с более-менее большим списком опций (например, _-purge) и посмотри, как они там названы.
Присоединяюсь к предложению Алексея - при таком количестве данных лучше сделать диалог.
P.S. Ого, так ты пытаешься из свойств подшивки вытащить данные и не обработав их задать их в качестве ключевых слов? Нет, так работать не будет. Однозначно - диалог.
Название: Re: Особенности GetKeywords
Отправлено: Александр Ривилис от 01-09-2016, 16:09:56
trir
1. Вроде бы уже не первый день на форуме и с правилами форматирования кода для форума должен быть знаком. Исправляй.
2. Символ подчеркивания - это разделитель между локализованными и английскими ключевыми словами. Внутри ключевых слов использоваться не может.
3. Пробел не может использоваться внутри ключевых слов.
4. Не могут повторятся ключевые слова (в первую очередь то, что в верхнем регистре).
Название: Re: Особенности GetKeywords
Отправлено: Владимир Шу от 01-09-2016, 16:21:05
убери в них пробелы, заменив, например, на "_".
Не пойдет, вот тема http://adn-cis.org/forum/index.php?topic=715
Название: Re: Особенности GetKeywords
Отправлено: Алексей Кулик от 01-09-2016, 16:34:32
Ок, уговорили :)
Я-то как-то привык в лиспе, что ключевые слова - одно, а текст в запросе - может быть и другое :)