Тема: Перестал понимать SelectionSet. Зачем он?

Зачем существует объект SelectionSet? Это что, просто вариант массива? Какой смысл собрать в кучку объекты, если потом с ними в общем ничего не сделать?
Вначале я думал, что это - выделение. Т.е., набираем, отбираем, потом применяем штатные команды с панелей.
Сейчас, попытавшись это сделать, неудачно конечно, начал поиск по форуму - и растерялся. Выделить спокойно нельзя, хайлайт - подсветка, а не выделение...
Зачем его создавать? Ведь то же самое можно сделать с активным SelectionSet. Не понимаю...
Друзья, просветите в теории! Пожалуйста.

Re: Перестал понимать SelectionSet. Зачем он?

SelectionSet - это набор примитивов AutoCAD, который создается программным путем и обрабатывается в программе. Примеры можно посмотреть здесь:
http://www.cad.dp.ua/stats/a_vba/conten … AddEntToSS
Если же ты хочешь создать набор программным способом, а затем обрабатывать его средствами AutoCAD, то такая возможность обсуждалась на форуме. Я уже не помню название темы, но поищи хорошенько и найдешь.

Re: Перестал понимать SelectionSet. Зачем он?

Спасибо за ответ и за труд. Не откажите в просьбе объяснить еще следующее (извиняюсь за чайниковские мысли):
Чем SelectionSet отличается от массива?
Общий хайлайт? Толку от него, если это не выделение; кроме того, в цикле (что для SelectionSet постоянно используется) можно использовать тот же метод для конкретного объекта.
Выборка объектов через dxf-коды? Но не то же самое получается снова же через перебор объектов? Да еще и... Мне понадобилось выбрать блоки с одним EffectiveName, в dxf его не нашел (не пинайте, ведь нужно много времени, чтобы съесть этих собак), пришлось перебирать.
Но самое главное: стоит ли вначале строить набор, потом его перебирать, потом его удалять, если можно сразу же перебрать? Например, берем рисунок, в цикле перебираем объекты, как только условие выполняется - делаем над объектом действие. Не затрагивая SelectionSet.
Какие полезные применения для SelectionSet?
В данной Вами ссылке код примера, сохраняющего объекты со слоя в отдельные чертежи, можно облегчить вдвое, если не затрагивать SelectionSet.
Пример с перебором - то же самое, если работать с массивом, а не SelectionSet.
Выбор пересеченных линией: создать линию, попробовать использовать IntersectWith, потом линию удалить? И не надо следить, чтобы линий было не больше 128. Можно, конечно, сказать, что это изголение, но когда пытаешься определить перебором, есть ли SelectionSet с таким именем - это ли не то же изголение...
Пример определения габаритов я вообще не понимаю, так как вместо того, чтобы дать юзеру выбрать регион, а потом через ActiveSelectionSet сделать дело, - делается снова танец с SelectionSet.
О замене фильтра перебором я уже писал.
Извиняюсь за многословие, но иначе смысла этой теме и не будет.
Где именно эффективно применяется SelectionSet? Какие удачные случаи были, поделитесь! Лично я на него только рассердился. Помогите тупому незнайке понять главную задумку программистов, создавших этого зверя!
Буду ждать ваших ответов, а сам пока пойду писать новую тему о том, как же выделить объект через МИФ (ой, т.е. VBA; не та раскладка)...

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
Сидор Лютый дал вам ту самую ссылку, которую я имел в виду говоря, что "то такая возможность обсуждалась на форуме":
https://www.caduser.ru/forum/topic30529.html
Чем SelectionSet отличается от массива?

Тем, что это специфическая для Автокада структура данных. Если пишешь под Автокад, то должен знать ее особенности и приемы работы с ней (с ним). Перечислять их здесь нет смысла, для этого существует справочная литература и Help.
Но самое главное: стоит ли вначале строить набор, потом его перебирать, потом его удалять, если можно сразу же перебрать? Например, берем рисунок, в цикле перебираем объекты, как только условие выполняется — делаем над объектом действие. Не затрагивая SelectionSet
СтОит или не стОит - это решение программиста. И  на мой взгляд, оно должно основываться на холодном расчете, а не на эмоциях (Лично я на него только рассердился)
Возможно мой ответ выглядит для вас недостаточно
конструктивным, но поймите - я не противник и не пропагандист идеологии и инструментов Visual Basic for AutoCAD. Я за умелое пользование этими инструментами.
И еще. Тема называется: "Перестал понимать SelectionSet. Зачем он?". А раньше понимал?

Re: Перестал понимать SelectionSet. Зачем он?

Спасибо за ответ.
При ознакомлении с новой системой одним из логических путей является изучение ее объектной модели.
Основываясь на опыте моделей, скажем, MS Word, Corel Draw и других английских названий предполагаешь, что словосочетание SelectionSet относится к выделению в более-менее стандартном представлении - группе объектов, относительно которых будут выполняться методы. Встретив также сочетание ActiveSelectionSet начинаешь хотя и слабо, но подозревать, что выделение может быть не одно. Думаю, что я достаточно обрисовал логику (пусть ошибочную) моих предположений.
Однако в тот момент, когда оказалось, что через объект SelectionSet нет возможности конфигурировать (добавлять и удалять элементы) текущее выделение, я задался вопросом: а чем изменять выделение? И для чего тогда SelectionSet?
Поэтому я отвечаю: нет, не понимал, так как мои первые предположения об объекте SelectionSet оказались ошибочными. И в таком состоянии я и прошу объяснения в этом форуме, так как я ничем не отличаюсь в правах от остальных чайников.
При всем к Вам уважении, Леонид, позвольте не согласиться с мнением о моем подходе, основаном на эмоциях. Мой стиль письма не стоит так принимать во внимание; позвольте подшучивать над объектами, которые рассердили непослушностью Вашего покорного слугу, тирана объектов.
Я привел свои аргументы, критикующие SelectionSet. Я готов к критике сам! Покажите его полезность, я с удовольствием откажусь от своего неправого мнения! И, думаю, не один я с интересом узнаю его более интересное предназначение, чем самоудаление и самосоздание, а также хранение списочка объектов. Побейте меня! В смысле, меня по теме SelectionSet-а, а не по теме, например, Fore each контейнера моих фраз, или, например, по теме моих почек.
Что касается второй моей темы, Сидор Лютый в свое время правильно заметил, что команды PSELECT (или как в моей дурацкой локализации _.PSELECT) в документации не встречается. Поэтому я не считаю и вторую тему закрытой! Где же аналог даной команды в VBA? Как менять выделение? И это интересует тоже не только меня :)
Позвольте еще заметить кое-что по SelectionSet. Именованый SelectionSet - это объект Group. При этом он обретает еще пару методов и свойств! Уже лучше... Причем, при интерактивной работе с групами можно установить возможность эту группу выбирать, что снова же я не нашел в VBA. Так, может, доступ к объектной модели через VBA - удел ущербных? Поневоле, проникаешься симпатией к авторам Ворда, которые даже запись предоставили - пиши и смотри...
Комон, дайте истину, если знаете ее.

Re: Перестал понимать SelectionSet. Зачем он?

Я попробую ответить (хотя больше сижу на lisp) :) Ответ гарантированно бне будет соблюдать последовательность вопросов последнего поста :)
zagzag, ты, по-моему, путаешь 2 разных понятия - группы и набора примитивов.

<...>Именованый SelectionSet — это объект Group<...>

Не так. Группа и набор на самом деле очень похожи, но все же не являются одним и тем же. Группы действительно являются "почти" наборами примитивов, но они (в отличие от наборов примитивов) сохраняются в файле. Это кажется удобным, пока не начинаешь понимать, что такого класса записи все равно захламляют файл, как ни крутись. То есть надо по логике вычищать пустые группы (то есть не содержащие никаких элементов).
Ты хотишь пример? Их будет у меня :) А если серьезно, то попробуй в группу забить все примитивы, лежащие на разных пространствах, к примеру, да еще и исключив примитивы, лежащие на заблокированных слоях. В SelectionSet - запросто.
Выделение объектов выполнить в SelectionSet возможно только при условии свойства highlight, а grips для него можно установить только через SendCommand. Вопрос - а на фига такое надо по жизни? По моему опыту такое требуется только в одном случае - командного реактора на удаление связанных через словарные данные объектов. Да и в этом случае без такого выделения можно обойтись (особенно учитывая, что в 2002 оно некорректно срабатывает). Опять же, по моему опыту, объекты выделяются только для одного - дальнейших программных операций с ними. Пользователь не принимает участия в этих действиях.
Удалять объекты из SelectionSet'a, я думаю, возможно. Только намного проще, я полагаю, будет сделать немного более расширенный фильтр данных.
Пусть меня поправят специалисты VBA, если я не прав. SelectionSet - динамический набор примитивов (как он получен - дело десятое - с экрана, как ответ от пользователя, по всей базе рисунка, как набор примитивов вообще другого файла), со всеми присущими такому подходу плюсами и минусами.
Насчет ActiveSelectionSet... А есть еще и PickFirstSelectionSet, тоже со своими прибабахами :) Тут, думаю, будет проще всего попробовать.
И наконец по поводу записи. Болталось где-то по инету нечто выполняющее запись макросов под AutoCAD.

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
[rus] Nu i ja paru slov skazhu. Delo vtom chto ehtot preslobutyjj selektionset ni chto inoe, kak naslednik standartnogo VBashnogo "Kollektion" s nebol'shim dopolneniem (tipa fil'trov). Esli znat' preimushhestva Kollektion pered massivom, to stanut ponjatny i preimushhestva selektionset. Nu naprimer v selektionset mozhno dobavljat' i udaljat' ob'ekty bez pereopredelenija razmernosti(kak u massivov). Po povodu fil'trov privedu prostejshij primer: Neobhodimo vse razmery chertezha perekinut' na opredelennyj sloj.  Skazhu srazu, chto prostoj perebor s proverkoj vsex primitivov srednego stroitel'nogo chertezha mozhet zanimat' sekund 10-40, v to vremja kak vybor s pomoshju selectionset    ne zjmet i sekundy. A kak bez SelectionSet organizovat' zapros ot pol'zovatelja vybrat' nabor primitivov s posledujushhejj obrabotkoj vybranyh primitivov v programme? Vobshhem mne kazhetsja, chto vam prosto ne hvataet opyta programirovanija na VBA ili poslozhnee zadachi.
[/rus]

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
При ознакомлении с новой системой одним из логических путей является изучение ее объектной модели
Есть книжка на английском "ActiveX and VBA. Developer's Guide", которая более или менее систематически описывает VBA for AutoCAD.
Если хотите могу сбросить. Формат PDF, размер 4,296MGB в упакованном виде.

Re: Перестал понимать SelectionSet. Зачем он?

Браво, ребята! Читается лучше хелпа. (Правда, насчет опыта программирования таки не удержался, ара :) )
Да, конечно же совершенно другой подход, когда принимаешь SelectionSet не как дословно "набор выделений", а именно как Колекшн (или контейнер). Смотрите, как легко обмануться: ActiveSelectionSet - это выделенные объекты, а SelectionSet - это набор объектов, причем который нельзя выделить. Правильнее было бы считать ActiveSelectionSet выделением, которое для своих целей использует интерфейс SelectionSet.
Насчет груп, вот вставка из хелпа:
   Group object
A named SelectionSet object.
VBA class name:
AcadGroup
Create using:
Groups.Add
Access via:
Groups.Item
For more information about selection sets, see the SelectionSet object.
Звиняйте уж :)
kpblc, с Вами вообще приятно образовываться; комплименты Вашему такту.
Зачем мне нужно выделить набор?
Набор можно набивать каким угодно способом, потом его редактировать. А предположим, что после фильтра объектов есть еще необходимость визуально оценить и подредактировать этот набор, убрать мусор. Разве это не полезная вещь?
Вот пример, который сразу все объясняет: qselect. Причем он умеет делать выборки из выборок (типа, искать в найденом), а потом дать мне, хоме разумному, поправить набор хомоса програмуса. Я тоже так хочу.
Это развязывает руки. Не хорошо, когда лисп и бейсик не могут иметь общих объектов; не хорошо, когда бейсик и окно не могут оживленно взаимодействовать. Конечно, хотелось бы еще и из бейсика передать ссылку на объект еще и в яваскрипт :) Ладно, ладно, шучу.
Еще чуть вернусь к Word (кстати, благодарю за ссылку). Я начинал бейсик с Аксеса, потом и Ворд-Эксель попробовал, благо оболочна одна. Теперь перешел, извините, на HTA - прикольно в блокноте писать автобэкапы, архивирующие и пишущие на компакты :)
Так вот в Ворде сделать Select - это логически нормальный шаг.
А вот, только что открыл корел, нарисовал два цветных квадрата, один выделил и написал программный продукт (привожу ВЕСЬ его код):
Public Sub ыы()
Dim doc As Document, s1 As Shape
Set doc = ThisDocument
Set s1 = doc.ActivePage.Shapes.Item(1)
s1.Selected = (Not s1.Selected)
Set s1 = doc.ActivePage.Shapes.Item(2)
s1.Selected = (Not s1.Selected)
End Sub
И шо Вы думаете она мне сказала? Инвертирует выбор!
Вот... Несчастный я, несчастный :)...
Тлумит меня. Я хочу такое и в AutoCAD. (И мне показалось, не один я).
Будет очень приятно, если еще чуть разовьете тему, так как остался еще один вопрос.
Если принимать SelectionSet не за выделение, а за контейнер, то из убогого массива он превращается в шикарный одной вещью: разработчики прицепили к нему методы выделения и выборки. (Хотя логичнее (для тех, кто принимает мой вариант логики) было бы прицепить его к Utilites.Find, например).
Вопрос состоит в следующем: что можно считать полем для его применения? Можно ли считать так:
- SelectionSet - объект для получения набора объектов путем а) выбора пользователем рамкой/линией/узелочком и др; б) фильтрацией объектов по определенным параметрам. SelectionSet допускает последующее добавление/удаление объектов из набора.
Т.е., SelectionSet является инструментом выборки с возвращаемым значением - результатом выборки? Если учесть, что в его родных методах нет возможности его выделить, пока опустим возможность его выделить через не VBA-методы. Больше я вариантов его применения не вижу. Так как перебирая, например, ActiveSelectionSet, не всегда является обязательным объекты заносить в промежуточный, специально созданный контейнер, чтобы перебирать уже оттуда :). Что скажете? Надеюсь, я ошибаюсь?
Леонид, книжку конечно хочу. Я читал некую AutoCAD "2006 VBA. A Programmer’s Reference. Joe Sutphin", 6 мег, так там тоже сразу после SelectionSet дается описание групп. Мой адрес zagzag2003 вставить тузика list.ru. Большое спасибо.
Извиняюсь, если что не то, и еще раз благодарю вас всех за профессиональные ответы.

Re: Перестал понимать SelectionSet. Зачем он?

Посмотри - может, это развеет необходимость создания групп?

Option Explicit
Function GetSelectedObjects() As AcadObject()
Dim objCounter As AcadObject, lCounter As Long
Dim NamedSelSet As AcadSelectionSet
Dim sSelSetName As String
Dim Res() As AcadObject
  sSelSetName = "temp_selset"
  With ThisDrawing
    On Error Resume Next
    .SelectionSets.Item(sSelSetName).Delete
    Set NamedSelSet = .SelectionSets.Add(sSelSetName)
    NamedSelSet.SelectOnScreen
    ReDim Res(NamedSelSet.Count - 1)
    For lCounter = 0 To NamedSelSet.Count
      Set Res(lCounter) = NamedSelSet.Item(lCounter)
    Next lCounter
    .SelectionSets.Item(sSelSetName).Delete
  End With
  GetSelectedObjects = Res
End Function
Sub tra_la_la()
  ' Чего-то там делаем
Dim SelObjects() As AcadObject
Dim lCounter As Long
  SelObjects = GetSelectedObjects
  For lCounter = 0 To UBound(SelObjects)
    If CInt(lCounter / 3) = lCounter / 3 Then SelObjects(lCounter).Erase
  Next lCounter
  ' Чего-то делаем 2
  For lCounter = 0 To UBound(SelObjects)
    'И делаем что надо с остатками набора :)
  Next lCounter
End Sub

Re: Перестал понимать SelectionSet. Зачем он?

Позволю себе чуток вклиниться в столь интересный диспут. По поводу полезности групп, т.е. именованных селекшнсетов. Тут несколько раз поднимался вопрос как передать массив примитивов из программы на ЛИСПе в программу на ВБА и обратно. Предлагались весьма бредовые варианты. А используя группы это становится просто тьфу. Пользуемся одним именем группы в обоих программах (ЛИСП ВБА) и проблемы нет.

Re: Перестал понимать SelectionSet. Зачем он?

Произошла типичная подмена понятий. Ненадо путать теплое с мягким. SelectionSet исxодя из названия, никакое не выделение, а выбор. В ACAD примитив может быть выделеным и не быть выбраным. Что касается обьектов Group и SelectionSet,  то ясно, что это совершенно разные обьекты с поxожей функциональностью.
А касаемо всеx вашиx пожеланий в адрес SelectionSet, как сказал Козьма Прудков:

Кто мешает вам выдумать пороx непромокаемым?

Добавте этому противному SelectionSetu свои методы и свойства в вашей программе. Если конечно интерес ваш не чисто академический.

Re: Перестал понимать SelectionSet. Зачем он?

Так как перебирая, например, ActiveSelectionSet, не всегда является обязательным объекты заносить в промежуточный, специально созданный контейнер, чтобы перебирать уже оттуда :). Что скажете?
Скажем, что всегда не является обязательным.
Посмотрите почту.

Re: Перестал понимать SelectionSet. Зачем он?

Спасибо Леониду, почту снял сразу, занимаюсь просвещением :)
kpblc, при всей моей симпатии лично к Вам позвольте не согласиться с примером:
а) вот оно, переливание: вначале делается SelectionSet, потом заносится в массив... Зачэм в массив, если контейнер - безразмерный? Оставить все там же! Причем, и массив, и SelectionSet с файлом не сохраняются;
б) не раз приходилось выбирать, где хранить метки созданного мною псевдообъекта: то я его назову по особому, то отделю его, поместив на отдельный слой, то цветом помечу. А группа сохраняется в файле, т.е. остается возможность в следующем сеансе продолжить с ней работу. Причем - вот цитата: "However, it’s interesting to note that Group objects can have Xdata attached to them, and they have available nearly all the same default properties that ther entities have, such as Color, Linetype,
Lineweight, PlotStyle, Visible, and even TrueColor."
Итак, еще одна попытка обобщения для подобной мне посуды:
Объект SelectionSet - контейнер для временного сбора объектов. Ключевым его применением является:
а) получение группы объектов с помощью фильтра из DXF-кодов, что намного быстрее перебора в цикле (похоже на SQL-запрос, да?)
б) получение группы объектов от пользователя, а также эмуляцией выбора прямоугольником, в точке и др.
...и - все...
Дальше пербираем результат в цикле и по отдельности что-то делаем...
Я прошу прощения за следующее отступление.
Я в Автокад пришел недавно, помаленьку с вашей, ребята, помощью и с хелпом осваиваюсь. Но чем дальше я узнаю VBA в Автокаде, тем сильнее у меня ощущение его архиущербности... Я слеп, или прав? Чуть ли не на каждом шагу я обнаруживаю, что одна-другая команда Аутокада не доступна в бэйсике... То я не могу полноценно выделить нужный объект и дать вклиниться юзеру; то я не могу обрезать вьюпорт полилинией программно; а при обрезке вручную я совсем ничего не могу с результатом сделать...
У меня есть подозрение-шутка: помните - стоит перейти в VBA, как выделение снимается? Помойму,  разработчики не смогли его удержать и при переходе обратно, поэтому прикинулись шлангами и сказали, что оно и не надо.
Козьма Прутков еще сказал зырить в корень, а тут у-у-у-у...так запущено-о-о-о...
Можете меня пропесочить, но объектная модель Майкрософтовских продуктов много стройнее и логичнее. Можете пропесочить мою логику, но меня тревожит возрастающее чувство о том, что инструмент, извините, не заточен, и тупой не я... Хотелось бы узнать, как обстоят дела в лиспе, а то начну вникать - а окажется, что под названием "кузнечный пресс" прячется молоток без ручки :)
Предупреждая возрастающее раздражение скажу: невзирая на мой стиль письма все же попробуйте честно ответить, - VBA способен реализовать все, что можно сделать ручками?

Re: Перестал понимать SelectionSet. Зачем он?

zagzag пишет:

VBA способен реализовать все, что можно сделать ручками?

90% VBA + 10% LISP = Да.

Re: Перестал понимать SelectionSet. Зачем он?

Под VBA я имею ввиду доступ через объектную модель, т.е. сюда не попадают такие форточки, как SendCommand (это - никак не метод (!) ), или (пошучу) SendKeys.
Возможно, правильным будет такой подход программирования в Аутокад: VBA + лисп + штатные комманды (невзирая на то, что часть их повторяется в языках программирования)?
Но ладно, тема уходит от начального вопроса.
Я благодарю всех вас за ответы и за труд, и за внимание к чужим трудностям.

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
Я делаю массив даже на лисповых selset'ах (не говоря уже об ActiveX или VBA-шных). По разным причинам. Первая - это все же работать со списками в лиспе проще. Вторая, не менее важная - это то, что если выполняется изменение набора, то для гарантии корректности работы надо его преобразовывать в список / массив и работать уже с преобразованным. Третья - ну привык я так, что уж тут поделать.
Для хранения меток объектов я использую словари - достаточно гибкий вариант (по крайней мере в лиспе).
К сожалению, группы лично мне не очень понравились (в 2002, кажется, там были определенные проблемы с ними у меня, но точно не помню). В общем, "осадок остался" :)

<...>чем дальше я узнаю VBA в Автокаде<...>

Я боюсь показаться пристрастным, но, по моим ощущениям, VBA в ACAD'e - это отчасти дань моде. Сделано действительно достаточно криво, поддержка его необязательно установлена на машине (в отличие от лиспа, к примеру). Он использует объектную модель AutoCAD'a, пытаясь использовать еще и lisp'овские инструменты (хоть что-то ;)). VBA - порожение MS, поэтому он и более стройным выглядит в ее продуктах.
Обрезать VP программно... Если честно, то я не знаю, как это и в лиспе-то сделать (кроме как попробовать сформировать lwpolyline новую, в нее вставить VP и назначить ему те же настройки, что и для старого; старый VP снести).
ИМХО: VBA НЕ способен реализовать все, что можно сделать ручками. Единственный его плюс (опять же, с моей точки зрения!!!) - это более-менее терпимые диалоговые окна. Но после VB 6.0 делать их на VBA мне не катит - ресайза нет, с дополнительными контролами иногда проблемы (потому что они не работают в связке с MS Forms 2.0, на которых и построены все диалоги в VBA); иногда (2002, кажется) вываливает ошибки при попытке сохранения  ну и так далее. Мне проще будет сделать COM DLL на VB, зарегистрировать ее и вызывает ее объект :) "Немодальные" окна в таких dll я еще не делал (кстати, надо будет не забыть). В VBA это делается.
В общем, идеального инструмента наверняка не существует, их надо комбинировать.
P.S. Молю!!! Меня - один!!!

Re: Перестал понимать SelectionSet. Зачем он?

по моим ощущениям, VBA в ACAD'e — это отчасти дань моде

- золотые слова.
Хотя эта мода - очень хорошая вещь. Когда окунаешься в новый продукт, и первой мыслью является посмотреть объектную модель - начинаешь унюхивать возможности. Сразу - в знакомую атмосферу.
В Линуксе, по слухам :), можно делать свои примочки и компилировать их. Мне не хватает менюшек (или кнопочек), я уже достаточно собак наевшийся, чтобы самому сделать скрипт по исправлении непереключившейся раскладки.
Написание же своих объектов вообще прикольно: методы, свойства выбираешь из стандартно выпадающего списка :), подсказки смотришь... Скрость написания, между прочим, возрастает, и мысль держится.
Но для того, чтобы модель хорошо работала, нужно всю оболочку писать объектно-ориентированной. Диалоговые окна, меню, пиктограммы в такой оболочке отражают не команды с параметрами, а методы; тогда ты можещь этот метод запросто включить и в свой скрипт. Тогда не было бы проблемы использовать в VBA Autocad qselect.
А так создается ощущение, что данная реализация бейсика - это трансляция команд бейсика в команды Аутокада. И действительно происходит подмена понятий: Selection уже не является выделением, а так, контейнером ;).
Жаль.
kpblc, еще раз комплименты Вашему стилю, спокойному и благожелательному.
Благодаря Вам перейду на Лисп, как на основу. Я не мышь, грызть кактус. Можно еще смайлик? :)

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
Я, конечно, лесть люблю (а кто ж ее не любит ;)). Так что еще раз thnx.
BTW: в лиспе (предупреждаю сразу!) привычного VB(A)-шного "выпадения" свойств и методов нет, так что при работе через ActiveX модель приходится постоянно лезть в VBA-шную справку и (или) делать постоянный дамп объекта. Я вроде как привык, но иногда все равно могу вызвать неподдерживаемый метод или свойство :)

Re: Перестал понимать SelectionSet. Зачем он?

> kpblc
(2006-10-20 :32:18)
но, по моим ощущениям, VBA в ACAD'e — это отчасти дань моде.
>zagzag (2006-10-20:02:12)
kpblc, еще раз комплименты Вашему стилю, спокойному и благожелательному.
Благодаря Вам перейду на Лисп, как на основу. Я не мышь, грызть кактус

Н-да...
Конечно, kpblc нам дорог, но истина дороже.
Тоже спокойно и доброжелательно хочу заметить, может на стоит спешить с переходом на Лисп как на основу? Даже если VBA for AutoCAD дань моде, то мода эта довольно широка и глубока. Мода на стройную объектную модель прикладной области.
И как ни крути, а VBA к ней ближе, чем всеми нами уважаемый LISP.

Re: Перестал понимать SelectionSet. Зачем он?

> [Re:] LeonidSN
Да ладно, чего Вы. Пусть товарищь поработает с объектной моделью через VL. Потом можно будет разговаривать.

Re: Перестал понимать SelectionSet. Зачем он?

> LeonidSN
(Ожесточенно чеша затылок): так я и не говорил, что VBA лишний. Тут слишком много намешано - и привычка, и особенности моей работы, и возможность отключения VBA (в отличие от lisp) и теде и тепе.
Естественно, что VBA растет и ширится (что не может не радовать). Но вот ему б еще полный функционал лиспа добавить для работы в Acad'e — было бы совсем кучеряво :) Чуть-чуть не дотянули разработчики.
---
P.S. ИМХО!!!

Re: Перестал понимать SelectionSet. Зачем он?

Леонид, я Вас уважаю, но истина дороже ;) Это я подкалываю (бегаю быстро, предупреждаю)
Сравните фразы:

zagzag пишет:

Хотя эта мода — очень хорошая вещь. Когда окунаешься в новый продукт, и первой мыслью является посмотреть объектную модель — начинаешь унюхивать возможности. Сразу — в знакомую атмосферу.

LeonidSN пишет:

Даже если VBA for AutoCAD дань моде, то мода эта довольно широка и глубока. Мода на стройную объектную модель прикладной области.

kpblc пишет:

Естественно, что VBA растет и ширится (что не может не радовать). Но вот ему б еще полный функционал лиспа добавить для работы в Acad'e — было бы совсем кучеряво :) Чуть-чуть не дотянули разработчики.

Я надеюсь, не оторвал от контекста.
Это же об одном разговор: VBA - хорош, только пусть он будет VBA.
Идея VBA хороша. Но когда я лез в объектную модель Корела, я ругался, потому что уши находил на ноге; в Аутокаде вообще в нектороых местах - откровенный инцест. Я ожидал доступ к вьюпортам найти через Pages (их нет, я только предполагал) - оказалось, они вообще чуть ли не в корне, как и Layouts, в которых они и находятся. Это слишком сложно для меня, это месиканский сериал...
Я вспомнил, кстати, что именно я делал, что почувстовал ущербность VBA Autocad. Я пытался автоматизировать нарезку видов: на модели очертить кусок, нажать заветную кнопочку - а на листе появится ее видовой экран. Через полдня я смирился, что нельзя, имея линию и вид, обрезать его (через бейсик). Но когда я хотел вычистить вид, убрав служебные слои... Как Вы считаете, я сделал что-то типа Document.Viewport(x).Layer(5).visible = true?
Их там нет. Нет доступа к этому. Зато я мог узнать, клипед он или нет, хотя я его национальностью не интересовался. Радость большая.
То же самое с SelectionSet. Я хотел выбрать кучу всего, снова нажать заветную кнопочку, а там выделение пусть отфильтруется и дастся мне поправить выделение - убрать лишние размеры, то, се. А после результат бухнуть в другую кучу. Можно было бы, конечно, вначале сделать черновую выборку, сразу же скопировать в нужное место, а там уже поудалять. Но Вы представляете, как радостно искать в двух кучах?
Нету этого. И многого другого. С печатью тоже рук нет... И придется учить язык, который нигде больше и не нужен! Албанский.
Я бы на месте разработчиков молился на таких, как я, за подсказки.
Объектная модель, извините, не чуть-чуть, а явно не доработана. Читающим этот форум (мое мнение) стоит это знать: не все можно сделать на бейсике в Аутокаде 2006, не все. И очень похоже, что не 90% бейсика, а 55%...
Знаете ли Вы, что в MS Word можно подключиться к dbf файлам кодировки 866, конвертировать в 1251, оформить красиво? И это - в текстовом процессоре!
Угадайте, можно ли автоматизировать процесс печати листов А3 на листы А4, используя, например, dwg? Легче в бейсике подключиться к корелу и оттуда это и сделать... Кстати, идея, надо попробовать...
Извините за "не по теме", но что касается лести: kpblc, это не лесть. Мой стиль, например, вызывает долгое сопротивление начале. Ваш - благожелателен и спокоен, что на форумах ой какая редкость. Я бы на Вашем месте на таких, как я.... (бегаю быстро)
Сам хотел бы научиться так говорить.

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
Не считаю себя аховым специалистом, но тоже хочу высказаться. Наболело!:)
Как-то перед тем, как взяться за изучение средств программирования в автокаде я задавал где-то (здесь или на dwg.ru) вопрос об ограничениях в лиспе и ВБА, как ожидалось, ничего вразумительного не услышал, в общем: бери и делай!
Взялся я за ВБА, так как часто приходилось работать еще и в экселе, и иногда одновременно с автокадом.
Когда, к моей радости, в экселе начало все получаться, я "пошел в автокад" совершать трудовые подвиги, и началось!.. Этого нельзя.. того нельзя.. тут надо смекалку проявить.
В общем, на мой взгляд, на данном этапе развития, VBA в автокад - НЕ САМОДОСТАТОЧНОЕ решение.
Ограничения есть, некоторые можно обойти, а с некоторыми приходится попросту смиряться. Что ж поделать, - работать-то надо.
Так что никто даже и не пытается говорить, что в VBA счастье, - и так все видно..:)

Re: Перестал понимать SelectionSet. Зачем он?

> zagzag
Я хотел сказать, в сущности только то, что владеть AutoLISP'ом как основным языком при написании прикладных программ под AutoCAD, на мой взгляд - недостаточно. И если вы приглядитесь, то заметите, что многие из участников форума эту недостаточность ощущают и работают над освоением других языков, как то -VB6, VB.NET, C++, C# и т.д. Меня, например, с недавних пор заинтересовал XML, да и не только меня.
Ругать какой-либо язык программирования - пустое занятие, и дискусси по поводу того что лучше, типа - VB v LISP, которые тут порой разгорались, напоминали дискуссии о том, сколько чертей  может уместиться на острие иглы.
Вообщем, "Детская болезнь левизны в коммунизме".
Что касается логической стройности объектной модели, то да, это скорее мечта, чем реальность. Я уже как-то приводил мнение специалистов: Чтобы выучить новый язык (программирования) нужны две недели, чтобы выучить связанную с ним объектную модель - год.
Но в языках семейства VB работать с этой моделью, по крайней мере, удобнее чем в LISP'е.
А вообщем, разговор наш вырождается в пустословие... Давайте на этом прекратим.
Всего хорошего.