• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как переместить курсор на указанные координаты ?

Автор feron, 28.10.23, 11:05:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

feron

А смысл какой если нет функции UnConvertCoordinates ?

Nipal

Цитата: feron от 28.10.23, 13:24:13А смысл какой если нет функции UnConvertCoordinates ?
Получили координаты, куда Вам надо поставить курсор и поставили курсор в это место, по велосипедному.

feron

#22
Цитата: Nipal от 28.10.23, 13:27:32поставили курсор в это место

Через WinApi ?

Как мне это сделать то если я не могу преобразовать В координаты экрана ?

Как вариант: получить координаты x, y = win32api.GetCursorPos() и сопоставить с К, затем сместить на пару единиц и получить коэффициент сопоставления.

feron

#23
Важно понимать что SetCursorPos принимает целое число и при масштабе и длины и наличие дробной части могут вылиться в существенные расхождения - тут подгонять масштаб к 1пиксель:1мм. Но не могу понять как Компас это делает ... Как он учитывает отсутствие дробной части у пикселя ?

Doc2D = api5_.ActiveDocument2D()

time.sleep(4)

x = y = 0
tmp, x0, y0 = Doc2D.ksGetCursorPosition(x,y,0)
print(f"Координаты курсора К: x={x0}, y={y0}")

x1, y1 = win32api.GetCursorPos()
print(f"Координаты курсора Э: x={x1}, y={y1}")

win32api.SetCursorPos((x1+1, y1))

tmp, xN, yN = Doc2D.ksGetCursorPosition(x,y,0)
print(f"Координаты курсора К: x={x0}, y={y0}")

Lkomp = math.sqrt((xN-x0)**2 + (yN-y0)**2)
Lpiks = math.sqrt(((x1+1)-x1)**2 + (y1-y1)**2)

kft = Lpiks/Lkomp

# смещаем на 50 мм по x (надо понимать что размеры экрана не безграничны - это я себе :))
win32api.SetCursorPos((x1, y1)) #восстанавливаем позицию
win32api.SetCursorPos((int(x1 + 50*kft), y1))

Цитата: feron от 28.10.23, 23:31:07Как он учитывает отсутствие дробной части у пикселя ?
Или это не закладывалось ?

Nipal

Цитата: feron от 28.10.23, 23:31:07Важно понимать что SetCursorPos принимает целое число и при масштабе и длины и наличие дробной части могут вылиться в существенные расхождения - тут подгонять масштаб к 1пиксель:1мм. Но не могу понять как Компас это делает ... Как он учитывает отсутствие дробной части у пикселя ?
Или это не закладывалось ?
В чем проблема, Вы похожи на разработчиков КОМПАС-3D, только у них другая проблема, мусор в переменных, а Вы не можете сделать число целым, по законам математики.