|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|
Определение координат линии в условных единицах13.12.2017, 10:53. Показов 2437. Ответов 30
Метки нет (Все метки)
Доброе утро форумчане.
Помогите с решением. Есть макрос, строящий диаграмму по внешнему виду фигуры-линии (правда линия строится - зеркально перевернутой, но это не страшно). Однако тут есть нюанс. Этот макрос, в качестве единиц измерения - использует пойнты. А требуется использовать не пойнты, а какие-то свои условные единицы. Как определить координаты узлов линии - по условным единицам измерения ? (В файле - я подсветил ячейки с условными координатами Х и Y - желтым цветом. И показал - как должна выглядеть диаграмма в таком случае.)
0
|
|
| 13.12.2017, 10:53 | |
|
Ответы с готовыми решениями:
30
Сумма прописью в условных единицах, 4 знака после запятой
Уравнение линии в полярной системе координат |
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 14.12.2017, 19:24 | |
|
mv6677, если ваши условные единицы не биткойны, а из более приземлённых единиц (см мм и т.д), то
Application.CentimetersToPoints(100) даст вам число пойнтов в 100 см. Разделите на него ваши пойнты и умножите на 100 получите значение в сантиметрах, умножите на 1000 получите в мм, умножите на 1000000 в микронах
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|
| 14.12.2017, 22:40 [ТС] | |
|
Burk, ну какие биткойны, о чем вы говорите ?
Я же прикрепил файл, где все детально описано. Просто имеющийся макрос - определяет координаты на листе - для каждого узла полилинии. А я спрашивал - как эти координаты прописать теми числами по Х и Y, которые находятся в желтых ячейках диапазона F32:V49. (То есть не микроны и не сантиметры - а обычные числа, которые записаны в желтых ячейках - соответственно для осей Х и Y)
0
|
|
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
||||||
| 15.12.2017, 13:02 | ||||||
|
mv6677, я правильно понял, что вы хотите оси координат(желтенькие) сделать соответствующими вашей таблице данных с "ровным" шагом по осям в соответствии с максимальными значениями осей и всё?
Добавлено через 7 минут mv6677, тогда надо знать высоту и ширину графика в ячейках экселя Добавлено через 10 минут mv6677, а с другой стороны, если вы уже построили стандартными средствами эксель правый график, в котором уже все оси соответствуют данным вашей таблицы, то зачем вам нужен левый (желтенький) график? Добавлено через 1 час 41 минуту mv6677, если я всё правильно понял, то работает такой макрос (перед запуском очистите все желтые ячейки, чтобы посмотреть результат работы макроса) Предполагалось, что Y и X положительны. При необходимости можно адаптировать и под отрицательные. Все сделано под ваши данные из файла
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|
| 15.12.2017, 15:20 [ТС] | |
|
Burk, я не совсем понял - что именно делает этот макрос.
Я жму на кнопку и в пустых желтых ячейках - появляются числа. Но ведь числа там - и так уже были - зачем макросом их вписывать заново ? Я спрашивал - про выписывание координат узлов полилинии - в таблицу Z32:AA46. А координаты - макрос по идее должен доставать из тех самых желтых ячеек. Так что - не нужно их удалять, иначе как макрос будет определять координаты узлов.
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||||||
| 15.12.2017, 16:05 | ||||||
|
рассчитать коэффициенты и смещения. приблизительно:
0
|
||||||
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 15.12.2017, 16:12 | |
|
mv6677, вы очень непонятно ставите задачу. Вы полагаете, что если вам, имеющему полное представление о том, что вам надо, всё ясно, то и остальные по вашим отрывочным фразам должны тоже понять. Я понял, что желтым обозначено то, что вы хотите получить. А удалить желтое надо было для того, чтобы проверить работу моего макроса. Так что забудьте всё, что я писал. Удачи вам.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|||
| 15.12.2017, 16:31 [ТС] | |||
|
В данном случае - у "Полилинии10" - пять узлов. Первый узел: Координата Х - по желтой ячейке - число 0. Координата Y - по желтой ячейке - число 10. Второй узел: Координата Х - по желтой ячейке - число 10. Координата Y - по желтой ячейке - число 90. Третий узел: Координата Х - по желтой ячейке - число 35. Координата Y - по желтой ячейке - число 40. Четвертый узел: Координата Х - по желтой ячейке - число 60. Координата Y - по желтой ячейке - число 130. Пятый узел: Координата Х - по желтой ячейке - число 70. Координата Y - по желтой ячейке - число 110. И эти числа - копируются в диапазон Z32:AA46.
0
|
|||
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
||
| 16.12.2017, 04:58 | ||
|
mv6677, ну это понятно с самого начала, что у вас есть узлы некой кривой. А может просто построить аппроксимацию (например, квадратичную) по вашим узлам без графика и определять, нужные вам значения в промежуточных точках по этой аппроксимации или вас так не устроит? Тогда нужно график записать в формате типа BMP и смотреть по изменению цвета пикселей. Но я с этим не работал.
Как и вы пишете, я в предыдущих постах всё описал предельно ясно
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|
| 16.12.2017, 11:48 [ТС] | |
|
Burk, насчет проверки пикселей - это что-то неимоверно сложное.
Я имел ввиду другое. Вот примерный алгоритм. (Уже имеется макрос определения координат узлов "Полилинии10".) Для первого узла: 1) Определяются координаты первого узла (162,600). 2)Затем определяется адрес ячейки, которая стоит в этих координатах (G47). 3)Затем для найденной ячейки - макрос определяет первую желтую ячейку по горизонтали влево (F47) и копирует находящееся в ней число - в диапазон Z32:AA46. (Это новая координата Y - по желтой ячейке - число 10, которое надо вписать в таблицу). 4)Затем для найденной ячейки - макрос определяет первую желтую ячейку по вертикали вниз (G49) и копирует находящееся в ней число - в диапазон Z32:AA46. (Это новая координата X - по желтой ячейке - число 0, которое надо вписать в таблицу). Это для первого узла. Как хотя бы - только для первого узла "Полилинии10" - вписать координаты в диапазон Z32:AA46 ? (это должны быть числа X=0, Y=10)
0
|
|
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
||
| 16.12.2017, 13:20 | ||
|
mv6677, ну наконец-то мы подходим к чему-то осязаемому! Конечно пиксели это не очень просто. Забудем.
Давайте все пояснения вести для желтого графика, а то их у вас их там много.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
||
| 16.12.2017, 14:09 [ТС] | ||
|
1)Нужно ввести в красную ячейку Z5 название Полилинии и нажать на кнопку уже имеющегося макроса. И в диапазон Z9:AA24 - впишутся координаты всех узлов указанной Полилинии - в пойнтах. Эта часть макроса - уже работает. 2)Затем определяется адрес ячейки, которая стоит в этих координатах (G47). (То есть макрос должен заглянуть в первую строчку диапазона Z9:AA24 и взять оттуда координаты в пойнтах - для первого узла.) (Иными словами диапазон Z9:AA24 - он как бы промежуточный. Там находятся координаты узлов Полилинии - в пойнтах) 3)Затем для найденной ячейки первого узла (G47) - макрос определяет первую желтую ячейку ПО ГОРИЗОНТАЛИ ВЛЕВО (F47) и копирует находящееся в ней число - в диапазон Z32:AA46. (Это новая координата Y - по желтой ячейке - число 10, которое надо вписать в таблицу). 4)Затем для найденной ячейки первого узла (G47) - макрос определяет первую желтую ячейку ПО ВЕРТИКАЛИ ВНИЗ (G49) и копирует находящееся в ней число - в диапазон Z32:AA46. (Это новая координата X - по желтой ячейке - число 0, которое надо вписать в таблицу). Добавил файл - где все - вообще подробно расписал.
0
|
||
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 16.12.2017, 16:27 | |
|
mv6677, вы старайтесь отвечать на поставленный вопрос. Вопрос был - перевести пойнты в ваши условные единицы? Ваш ответ должен был быть ДА без ваших пунктов в послании и рисований красивых графиков.
Ширина ваших ячеек 24.75 пойнта, высота 12,75. Шкала условных единиц по Х начинается с нуля, поэтому из пойнтов по Х вычитаем меньший (161) делим на 24.75 и умножаем на 5 (число условных единиц по Х в одной ячейке). На примере последнего Х 505-161=344 344/24.75*5=69,5 почти 70 но это из-за возможного небольшого смещения точек, а скорее из-за округления ширины ячейки до двух знаков. По У сделайте сами. Думаю, что и без пойнтов можно обойтись, имея исходные значения. Мой макрос это и делает
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|||
| 16.12.2017, 16:52 [ТС] | |||
|
Ячейки могут быть - совершенно любой ширины и высоты. В желтые ячейки - могут быть вписаны ЛЮБЫЕ числа. Я спрашивал не про то, как учесть высоту и ширину желтых ячеек, а про то как извлечь конкретное число из конкретного адреса в ряду желтых ячеек и скопировать его - в диапазон Z32:AA46. Например по оси Х - я могу вручную вписать - числа 100,200,300,400,500,600,700 (ряд по возрастанию). Или вписать по оси Х - числа 200,600,100,400,300,100,800 (ряд случайных чисел). Макрос - выхватит одно из этих чисел, которое соответствует той ячейке, что находится под узлом Полилинии. Что именно вписано в желтые ячейки - совершенно неважно. Важно только эти числа из желтых ячеек, соответствующие узлам Полилинии - скопировать в диапазон Z32:AA46. И все - больше ничего делать не надо. Хотя бы для одного узла. Я же специально в последнем файле - нарисовал подробнейшую схему.
0
|
|||
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
||
| 16.12.2017, 17:07 | ||
|
mv6677,
Узлы вашей линии должны быть в исходной таблице, вы же из чего-то строили графики, оттуда и переносите данные узлов преобразовав их в ваши условные.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
||
| 16.12.2017, 17:56 [ТС] | ||
|
У меня нет никакой исходной таблицы. Есть только одна фигура-Полилиния - в качестве исходных данных - кроме нее других исходных данных нет.
0
|
||
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 16.12.2017, 18:03 | |
|
mv6677, надеюсь, что первая таблица с пойнтами у вас всё-таки есть, иначе говорить не о чем.
Предположим, что в пойнтах ваша шкала (на примере Х) от 100 для 600. Значит размах шкалы = 500 пойнтов. В условных единицах от 0 до 2000. Следовательно на один пойнт приходится 2000/500=4 УЕ. Ваше значение в некотором узле по Х = 300 Следовательно в УЕ оно будет 300*4=1200. Аналогично по У. А вот куда эти значения надо вставить, тут уж сами решите
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
||
| 16.12.2017, 18:41 [ТС] | ||
|
Я же писал в предыдущих сообщениях - что числа в желтых ячейках могут стоять вообще любые. Вот скажите - в этом ряде чисел : 200,600,100,400,300,100,800 - какой размах шкалы ? Здесь такого понятия в принципе нет. Если уж на то пошло - то вместо чисел - может вообще текст стоять. Я спрашивал о том - как содержимое ячеек - каким бы оно ни было - скопировать в диапазон Z32:AA46 для соответствующего узла. Сейчас в желтых ячейках - для первого узла - по оси X (G49) и Y (F47)- стоят числовые значения "0" и "10". Вот эти значения и надо перенести в диапазон Z32:AA46. А если бы в этих желтых ячейках для первого узла стоял бы текст "Текст-1" и "Текст-2" - то в диапазон Z32:AA46 - вместо чисел - скопировались бы текстовые значения "Текст-1" и "Текст-2".
0
|
||
|
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
|
|
| 16.12.2017, 19:32 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 49
|
|
| 16.12.2017, 19:40 [ТС] | |
|
Burk,
А в этом ряду значений какой размах шкалы: 200,"Текст-1",100,400,300,"Текст-2",800? (Только не говорите, что 700)
0
|
|
| 16.12.2017, 19:40 | |
|
Помогаю со студенческими работами здесь
20
Найти сумму координат центра линии Дано уравнение линии в полярной системе координат
Построить линии, определяемые уравнениями в декартовой системе координат Oxy Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|