[CDR X4 и ранее] Получить Shape, расположенный под/над другим Shape (без перебора)

  • Автор темы Автор темы Cyrax
  • Дата начала Дата начала
Аналогия неуместна, isOnShape багофича понятной природы и повторяемая во всех версиях.
У вас же баг конкретно вашей локализации, вдобавок, с точностью до наоборот.
 
Аналогия неуместна, isOnShape багофича понятной природы и повторяемая во всех версиях.
У вас же баг конкретно вашей локализации, вдобавок, с точностью до наоборот.
Похоже, у вас каша в голове. При чём здесь аналогия ? При чём здесь "баг конкретно вашей локализации" (то бишь SelectShapesFromRectangle) ?
Лев прямо пишет, что IsOnShape не всегда работает корректно в режиме каркаса. Поэтому, я и добавил перевод в расширенный на время выполнения этого метода. Повторюсь, что баг SelectShapesFromRectangle здесь ни при чём.
 
Последнее редактирование:
не всегда работает корректно в режиме каркаса
Он "не всегда работает корректно" не зависимо от режима отображения, если вы не заменили, то все дальнейшее обсуждение именно об этом.
у вас каша в голове
Ну слава б-гу вы у нас образец трезвого подхода и железной логики.
Если еще научитесь аккуратно программировать, хелп внимательно читать, переменные не путать - просто цены вам не будет на этом форуме
 
Он "не всегда работает корректно" не зависимо от режима отображения, если вы не заменили, то все дальнейшее обсуждение именно об этом.
Если под "всё дальнейшее обсуждение" вы понимаете ту часть ветки, что после моего предложения "На всякий случай на время работы метода IsOnShape дополнительно к масштабу добавлю перевод в расширенный режим", то это предложение было написано в ответ на вот эту цитату (читаем внимательно):
[X8] - при пакетной обработке не всегда видится шейп (Непредсказуемый IsOnShape)
По давним опытам помнится, что IsOnShape зависит от режима просмотра, т.е. может выдавать неверный результат при запуске в режиме WireframeView и правильно работать в Normal/Enhanced
Т.е. "не всегда работает корректно" - не "не зависимо от режима отображения", а именно в режиме каркаса (если рассматривать указанную цитату). Не нужно юлить.

Ну слава б-гу вы у нас образец трезвого подхода и железной логики.
Если еще научитесь аккуратно программировать, хелп внимательно читать, переменные не путать - просто цены вам не будет на этом форуме
Вообще-то, я специализируюсь не на VBA, а на PHP. На ком мной написано за сотню тысяч строк кода. Аккуратного, отлаженного и тщательно задокументированного кода. И прежде чем меряться навыками программирования, вам следовало бы проявить способность связать друг с другом два поста темы.
 
Последнее редактирование:
Как я заметил, все вопрошающие делятся на три категории. Первая, не обладая достаточными навыками разобраться в вопросе самостоятельно, просят помощи у более компетентных специалистов и, при наличии воли и желания, получают ее, приложив со своей стороны определенное усилие. Гораздо хуже другая категория, рассудок которой активно сопротивляется получению информации, эти люди сродни утопающим, затрачивающим массу энергии чтобы отбиваться от спасателей, изо всех сил стараясь утопить себя и их. Но и это не самая худшая категория, существует и третья. Когда, наконец, путем совместных титанических усилий удается насильно пробить броню активного непонимания и донести информацию до такого поциента, в его мозгу срабатывает некий переключатель и для него чудесным образом ситуация переворачивается с ног на голову. Ему внезапно начинает казаться, что он дошел до открывшейся ему истины исключительно собствннным умом и теперь, наоборот, именно он растолковывает свое гениальное откровение недалеким оппонентам, которые только что выбивались из сил, стараясь безуспешно донести его до упирающегося гения.
 
Последнее редактирование:
  • Спасибо
Реакции: Jeine и lev
 
Ему внезапно начинает казаться, что он дошел до открывшейся ему истины исключительно собствннным умом и теперь, наоборот, именно он растолковывает свое гениальное откровение недалеким оппонентам, которые только что выбивались из сил, стараясь безуспешно донести его до упирающегося гения
По-моему, ваша философия совсем не в тему. Какое это имеет отношение к непониманию вами того, каким образом из наблюдения "По давним опытам помнится, что IsOnShape зависит от режима просмотра, т.е. может выдавать неверный результат при запуске в режиме WireframeView и правильно работать в Normal/Enhanced" следует "На всякий случай на время работы метода IsOnShape дополнительно к масштабу добавлю перевод в расширенный режим" ? Ведь вы именно этот вывод называете "нелогичным" ?

Ладно бы логичность/нелогичность такого вывода (по факту, связь двух предложений) была бы каким-то серьёзным вопросом. Но вы, не разобравшись в двух постах/предложениях, начинаете меня обвинять в нелогичности, а когда я объяснил логичность, вместо того, чтобы признать, что не поняли или не до конца прочитали, решили уйти в сторону и развели откровенный философский флуд (по факту, переход на личности).

По поводу ваших философских измышлений. Думаю, на примере данной ветки просить вас привести конкретные примеры даже и не стоит ?
1) Тот факт, что IsOnShape не всегда работает корректно, и способы решения (обхода) этой проблемы были приведены ранее, в другой теме (темах). И никто не утверждает, что эти способы придумал я. Если вам так показалось, перекреститесь. Помогает.
2) На тот факт, что SelectShapesFromRectangle тоже работает не всегда корректно, обратил внимание я. И я же предложил способ решения (обхода) проблемы - режим каркаса (причём я не утверждаю, и вы не утверждаете, что никто до меня этого не озвучивал). Если вы считаете, что этим самым я присвоил себе чьё-то (ваше ?) открытие (решение), то будем считать, что это вы указали на этот факт (что SelectShapesFromRectangle не всегда работает корректно) и что это вы предложили решение (режим каркаса). Всем форумом вас благодарим и кланяемся. Надеюсь вам полегчает...

P.S. Если же вас в принципе задевает тот факт, что кто-то что-то вам объясняет, то уж это не моя вина. Вы спросили, в чём логичность - я ответил.
 
Последнее редактирование:
В данный момент мне даже полемизировать с вами не хочется.
Краткое содержание ваших крайних тем и постов:
1) Вы находите какой-нибудь давно известный или, наоборот, присущий только вашей конкретнной версии Корела баг
2) Вам растолковывают его суть или обнаруживают, что он внезапно, присутствует исключительно у вас
3) Вы - Тадам! - выезжаете на белом коне с собственным рецептом решения проблемы (по сути, своей собственной проблемы) попутно сетуя какие мы все тут тугие и вас без повода хейтим
...
PROFIT!!!
 
1) Вы находите какой-нибудь давно известный или, наоборот, присущий только вашей конкретнной версии Корела баг
А кому "давно был известен" вот этот баг ?
И что значит, "присущий конкретно вашей версии Корела" ? Русскоязычная X3 - это не "моя конкретная версия", а версия многих пользователей Корела. Вы уж определитесь...
Если вы хотели сказать, что не той версии, что у вас, то это уже мания величия...

2) Вам растолковывают его суть или обнаруживают, что он внезапно, присутствует исключительно у вас
Вы забыли через запятую указать ещё 10 "или". Чтобы охватить все случаи...

3) Вы - Тадам! - выезжаете на белом коне с собственным рецептом решения проблемы (по сути, своей собственной проблемы)
"По сути, моей собственной проблемы" - это вы про IsOnShape ? Или про преобразование замкнутой кривой в абрис ?
Вас задевает тот факт, что я привожу VBA-код, решающий/обходящий ту или иную проблему ? Если задевает, то это ваши личные комплексы.
 
Последнее редактирование:
Shape.GetBoundingBox
x = Defines the horizontal, or x, coordinate for the lower left corner. This value is measured in document units. [out]
y = Defines the vertical, or y, coordinate for the lower left corner. This value is measured in document units. [out]
Фактически, (X,Y) работает как координата нижнего левого угла. Так же, как написано в справке
The CreateRectangle2 method creates a rectangle using coordinates of the upper left corner, the width, the height, and a corner radius.
x = Defines the horizontal position of the upper left corner coordinate. This value is measured in document units. [in]
y = Defines the vertical position of the upper left corner coordinate. This value is measured in document units. [in]
Фактически, (X,Y) работает как координата нижнего левого угла. В справке написано - верхнего левого угла.
Page.SelectShapesFromRectangle
x1 = Defines the horizontal coordinate for the upper left corner of a rectangle, measured in document units [in]
y1 = Defines the vertical coordinate for the upper left corner of a rectangle, measured in document units [in]
Можно предположить, что и здесь (X,Y) работает как координата нижнего левого угла (что логично), не смотря на то, что в справке идёт речь о верхнем левом угле. Но проверить это не представляется возможным в силу того, что инверсный порядок указания углов Corel тоже корректно интерпретирует (в обоих случаях метод работает одинаково).
 
А в случае с SelectShapesFromRectangle наоборот - некорректно работает в расширенном.

P.S. На всякий случай на время работы метода IsOnShape дополнительно к масштабу добавлю перевод в расширенный режим

я тут тоже целый вечер ковырялся с isOnShape в итоге заработало когда действительно дословно "ON shape" т.е. если кинуть объект в самый низ и проверяемые объекты сверху он работает корректно.
в итоге пришел к методу делаю дубликат "объекта-области поиска" и кидаю в самый низ после выбора нужных - удаляю дубликат и оригинал остается там где его и рисовал пользователь