И до кучи: как получить текст журнала командной строки.Один вопрос - одна тема. Так что "до кучи" не получится.
Под AutoCAD впервые что то пишу, про SelectionSet.Select читал но не понял что да как. Если это не слишком сложно, можете написать пример рабочего кода (строки с фильтром), думаю на примере пойму что к чему в справке.В справке есть пример готового кода:
ModeType: enum - не могли объяснить? Это должен быть индекс в списке = 5?
Access: Input-only
Type: AcSelect enum
acSelectionSetWindow
acSelectionSetCrossing
acSelectionSetPrevious
acSelectionSetLast
acSelectionSetAll
Это должен быть индекс в списке = 5?Да.
То есть воспроизвести с помощью SelectionSet.Select аналогичные манипуляции как в окне, всё таки под VBA не получится?Объясни сначала что тебе нужно. То что ты написал - это не постановка задачи. Ведь зачем-то нужно выбирать примитивы? И наверное есть какая-то логика в этом выборе?
Применить > Ко всему чертежу, Тип объектов > Несколько, Свойства > Цвет, Оператор > = Равно, Значение > ЗеленыйТо есть из этого не льзя сделать вывод какие объекты выраны?
То есть из этого не льзя сделать вывод какие объекты выраны?Нужно потом будет анализировать все примитивы, которые попали в набор. В данный набор могли попасть еще и круги, тексты, дуги, лучи и т.д., которые явно к рамке отношения не имеют.
gpCode(0) = 6262, это где посмотреть?
dataValue(0) = 4 ' со смартфона не могу посмотреть номер зелёного цветаИ это тоже?
[, Point1] [, Point2] - И не ясно что за точки мне нужны.Точки передавать не нужно. Вместо них в VBA просто запятые. 62 - это DXF-код цвета, 3 - это зелёный цвет.
Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")
А тут мне нужно что то другое, если надо применить ко всему чертежу?
А тут мне нужно что то другое, если надо применить ко всему чертежу?Не это определяет ко всему чертежу или нет. Это определяется mode (5 - выбор со всего чертежа)
Error: 0x80070057 - Параметр задан неверно.
Source: AutoCAD
Description: Недопустимый аргумент FilterType в Select
ACAD.ActiveDocument.ActiveSelectionSet.Select(5, , , 62, 3)
Это же массивы "завернутые" в VariantБлин, не сталкивался с таким. В виде массива пробовал. А не просвятите что значит - "завернутые" в Variant.
На VBA этот код выглядит так:
Ты моё отношение к VBA знаешь
так что я мог и наврать или написать не слишком чистый код.
Нашёл её решение, всё заработало, ещё раз спасибо!Отлично. У нас принято выкладывать решение, или хотя бы описание того, как это решение достигнуть.
Язык AutoHotkey, считаете что следует выложить код?Полный код не нужен. Только кусочек в котором замена вот этого:
ss := ThisDrawing.ActiveSelectionSet
FilterType := ComObjArray(VT_I2 := 2, 1)
FilterType[0] := 62
FilterData := ComObjArray(VT_VARIANT := 12, 1)
FilterData[0] := 3
ss.Select(acSelectionSetAll := 5, , , FilterType, FilterData)