Так вот, если зуммирование идет внутри моей команды, причем не важно, вызывается оно через acedCommand или с использованием автокадовского ActiveX, acedSSGet всегда возвращает RTERROR.А зуммирование при этом происходит или нет?
А зуммирование при этом происходит или нет?естественно.
попробую, но не в зуме проблема, кажись. ведь даже используя вызов автокадовских команд для зуммирования SSGet не работает.Ну а если "_CP" заменить на "_C"?
Ну а если "_CP" заменить на "_C"?проверил с "_W" и с "_С"
для сравнения, вариант с "_CP", если убрать вызов зума из моей команды отрабатывает за 1мин. 24сек. и прогресс перемещается с завидным постоянством.Похоже он вообще неправильно работает.
ads_point pt1, pt2;А тут у тебя просто ошибка в коде как мне кажется. Должно быть как-то так:
pt1[X] = pt.x - eps; pt1[Y] = pt.x - eps; pt1[Z] = 0.0;
pt2[X] = pt.x + eps; pt2[Y] = pt.x + eps; pt2[Z] = 0.0;
acedSSGet(_T("_C"), pt1, pt2, &lookAt, ent1);
Нужно вызвать вот такую функцию перед очередным вызовом прогрессбарау меня такая есть, только с наворотами :). оно еще и прерывать цикл умеет по Esc :):):)
А тут у тебя просто ошибка в коде как мне кажетсяугу, действительно недоглядел. итак, провел сравнительный анализ. вот табличка
итого в сухом остатке. RTERROR - это нормальный ответ функции acedSSGet (чисто моё умозаключение. в хелпе вообще этот вопрос обошли стороной), если она ничего не находитЭто для меня вполне очевидно. Я думал, что для тебя тоже, хотя смотрел на вот эти "пассажи" с недоумением:
Я думал, что для тебя тоже, хотя смотрел на вот эти "пассажи" с недоумениемта дално, знакомьтесь, это затычка :):):). и там проверяется возврат не acedSSGet, а acedSSLength. в каких-то старых автокадах была проблема, если в выборку (ну например был вызов ssget для выбора рамкой любых объектов, и пользователь выбирал не рамкой, а просто ткнул в один объект и успокоился) попадал 1 объект, то начинались чудеса. в современных версиях не проверял, но спокойней, когда эта затычка есть. в лучшем случае внутрь программа никогда не зайдет :)
Не забывай, что точка вообще очень хитрый и нестандартный примитив, у которой обычно размер зависит от масштаба изображения.а это тут при чем? я на вход подаю две точки рамки (XYZ а не AcDbPoint) и этой рамкой, с жестко мной заданными точками ищу захват куска отрезка рамкой. а сама рамка каким-то
в лучшем случае внутрь программа никогда не зайдет :)Как раз таки зайдёт и почему-то будет считать, что ent1 это не набор, а отдельный примитив.
Как раз таки зайдёт и почему-то будет считать, что ent1 это не набор, а отдельный примитив.:) убрал вообще, чтоб не смущать. в конкретном случае пользы от этой затычки нет, т.к. пользователя лишили возможности тыкать по экрану. "не заходит" - это я имел ввиду, что в resIds не добавляется. ну да ладно.
что для формирования дерева мне все-равно нужен один пробег по БД.Он у тебя займёт максимум несколько секунд. А на том файле, что ты генерировал в предыдущей версии программы, доли секунды.