| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Где я и что делаю не так? В контексте последнего кода подумываю над тем, чтобы просто проверять, на каждой новой полилинии в цикле, начало ли полилинии "нащупалось", и если нет, то просто реверсировать ее. |
|||
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
По-моему, что-то вы перемудрили. Исходная задача какая: есть единая полилиния рельефа, и надо записать в графе профиля расстояния по ней с определённым шагом по пикетажу. Это можно сделать в одном цикле, и не надо ничего рвать и выбирать каждый раз новую полилинию. Направление исходной, конечно, надо проверить.
В общем, какой-то такой функционал получается: Код:
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Вообще-то - да. Хотя, я бы сказал, "недомудрил". Вообще ничего не продумывал особо. Поэтому и сразу назвал команду "TEST". Полилинию, конечно, можно не разбивать. Просто в файле с исходной задачей она была уже разорванна в клочья. Я подумал, что это результат работы какой-то программы, поэтому не стал вдаваться в подробности и сделал применительно к файлу-задаче. К тому моменту, как я прочитал (что надо еще и разрывать), добрая часть кода уже родилась Поэтому я переделывать уже не стал - время свободное вышло, просто дал ссылку на "разбивалку".
Я подумал вот что. Надо дать Рyslan'у немного поработать "в бою", может, он еще что выявит. И в случае необходимости, чтобы код стал действительно рабочим, надо будет чуток доработать его с учетом: 1. Не бить линию на куски. 2. Добавить проверку направления обхода вершин. 3. Добавить обработку плавающей точки. Вот тут момент спорный. Если сделать, чтобы результат обработки линий по частям (за два-три захода со вводом вместо нуля предыдущего значения) совпадал с результатом обработки цельной полилинии, то в итоге конечная цифра будет до нескольких десятых метра расходится с длиной линии в свойствах. Даже и не знаю, как тут правильно поступить. Может, разумнее будет вводить стартовую длину до трех знаков после запятой? Или запрашивать не число, а линию и брать длину с нее? Вопрос еще в том, насколько эта программа перейдет в разряд необходимых, может, это просто разовая (двух-) задача? ----- добавлено через 58 сек. ----- P.S.: P_S, кстати, у Вас теряется последний текст. |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
Всем привет! Спасибо за помощь! Я полилинию разбивал, чтобы через свойства посчитать длину. Но если можно будет не разбивая посчитать, то это вообще шикарно! skkkk я результаты подсчета после твоей программы не проверял )))) надеюсь там все ок ))))
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
В том файле, на котором я делал, было все ОК. Это я имел в виду, что вдруг на других рабочих файлах какая из полилиний как-то "обратилась" к лесу задом. Хотя, если начальная была слева направо, то и результирующие куски будут такими же.
Вообще, конечно, я считаю, надежнее будет использовать алгоритм от P_S. Даже если не уследил за направлением полилинии, косяк незамеченным точно не останется - ноль справа будет. Единственное, что я еще заметил, что тексты там расставляются не строго по центру каждый над своей линией, а со смещением влево на пол высоты текста. Выравнивание у текстов - слева вверх. Если, это, конечно, важно. |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
P_S, skkkk Привет! Спасибо, последнюю программу посмотрел, все работает. Вопрос, а если полилиния (рельеф) разбит не на равные участки, шаг текста не получится задать одной цифрой. Можно сделать чтобы текст выставлялся над точками полилинии (без ввода шага)?
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
А, может, все же в отдельную тему?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Здесь уже ничего - не станешь же фильтровать посты...
А так - сумма длин кривых и расстановка текста разные задачи. Создай новую тему, задай там вопрос, упомяни, что "начало обсуждения там-то, создал отдельную тему по просьбе модератора" - и все будет хорошо.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
Вообще-то этот текст и есть сумма длин кривых и программа та же. Чего плодить тему. Я думал ты хочешь эти программы вынести в другую тему. Типа "Подсчет расстояний в профиле по рельефу земли" для оформления подвала чертежа продольного профиля трубопровода
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Можно. Редактируй.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
Уважаемые форумчане, подскажите, как изменить ЛИСП из 104 сообщения, чтобы при выполнении он вписывал существующее значение переменной, а при нажатии на Enter принимал это же значение
Пытался сделать так, текущее значение получаю, но после нажатия Enter число не принимается, и приходится все равно вручную вбивать нужную цифру. Код:
Последний раз редактировалось Loolik, 23.04.2018 в 11:25. |
|||
|
||||
Цитата:
Код:
Последний раз редактировалось koMon, 23.04.2018 в 15:43. |
||||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
Спасибо koMon, код работает!
Пытаюсь модифицировать ЛИСП из поста 104 и сделать две команды (но в идеале одну):
Если есть возможность помогите с "однокомандной хотелкой" Len2TX . Код:
Последний раз редактировалось Loolik, 24.04.2018 в 01:01. |
|||