|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как рисуя одну полилинию получить сразу 4?
джедай
Магадан
Регистрация: 31.01.2005
Сообщений: 460
|
||
Просмотров: 9791
|
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
Цитата:
поделитесь пожалуйста, в лиспе сам я не силен, только начинаю осваивать( |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Димас, а что конкретно тебе надо там рисовать? Почему бы не использовать _.boundary + _.offset? Потом уже думать насчет разноски. Потому что, как я полагаю, просто так программно сделать подобный финт ушами не получится.
Если б не разноцветность, можно было бы попробовать создать свой тип линии и работать через него.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
Цитата:
а в этом случае может помочь _.boundary? я вложил файл, надеюсь так будет понятней? нужно делать контуры приемрно такого вида цвет, толщину, расстояние, порядок цветов еще "не утвердили", то есть возможно будет по другому [ATTACH]1153117485.dwg[/ATTACH] |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Например: ^C^C(setq a (ssget "_:s"));\_offset;\!a;\_Exit;_laymch;_L;;_n Выбираем полилинию, указываем цифру (на скоко отступать), точку за контуром. Потом появиться окошко с выбором слоя - выбираем слой -> Ок. Новая полилиния будет перемещена в указанный слой. P.S. Команда _laymch из экспрессов. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
ИМХО - тут проблема в первую очередь в том, что (судя по чертежу) расстояние "гуляет". Т.е. _offset покатит только для последнего (самого правого) варинта.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Для Димас.
Меня интересует - моя программа у вас нормально отрабатывалась? Интересует потому, что вчера она у меня нормально работала, а сегодня стала вылетать аварийно. Создается только 1 слой "PL_1". Но после замены функции (cond) на (if) опять заработала. Не пойму в чем тут дело. |
|||
![]() |
|
||||
Цитата:
![]() ![]() |
||||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Для Александр Ривилис.
Именно так. Видимо, у меня во время отладки программы слои уже были созданы, а я об этом и не подумал. В новом рисунке программа, естественно, перестала работать. Только вот Димас не сообщил об аварийном завершении, я и засомневался. Придется привести исправленный код: Код:
|
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
to Profan
да, все получалось как вы и сказали - сначала работало, потом перестало попробовал последнюю версию - все работает to VVA заменил DIST c 1 на 0.2 выдает отшибку можно ли сделать такую программу из тех что вы написали?) не нужно указывать контуры внутр/внешний как у VVA не вводить каждый раз расстояние между полилиниями (0,2) пробовал менять сам, но лисп все еще темный лес для меня и вот такой вопрос, если позже решат поменять расстояние между полилиниями - для уже отрисованных полилиний его скорее всего прийдется менять вручную? |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Для Лентяй.
Поскольку неизвестно, к кому относятся ваши слова о запущенности, то придется принять их на свой счет. Я тоже не знал, как должны быть расположены полилинии относительно базовой полилинии, поэтому выбрал симметричное расположение. Но вот в вашей программе полилинии размножаются или внутрь контура или наружу в зависимости от направления отрисовки базовой полилинии. Хорошо ли это? Димас ведь хотел, чтобы полилинии были разного цвета, почему же у вас они одного цвета? Я знаю, вы крутой программист, поэтому в вашей программе невозможно разобраться новичку в AutoLisp'е. Моя программа проста и в ней сможет разобраться и Димас. Это, конечно, не оправдание, но что там с запущенностью? Логичным было бы ожидать от вас программу, которая сразу рисовала бы 4 полилинии на разных слоях и со своим цветом, а не размножала бы их в непредсказуемом направлении. Это было бы эффектно. |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
to Profan
спасибо что оценили мои способности) но к сожалению до конца в вашей программе я разобраться не смог)) попытался вбить в код на какое расстояние смещать и избавиться от "(setq pt2 (getpoint "\n Укажите точку снаружи контура."))" к сожалению сразу не вышло (т.е. чтоб смещение было только в одну сторону) очевидно мне нужно срочно учить лисп, хотя бы основы а программа для клонирования полилиний от Лентяй пришла вовремя - есть файлы, где уже нарисована одна полилиния, ее так же нужно клонировать, до этого пользовался такими макросами: ^C^C_offset;0.2; затем ^C^C_change;L;;P;LA;Line_2;; затем опять ^C^C_offset;0.2; затем ^C^C_change;L;;P;LA;Line_3;; и т.д. в один макрос все собрать не получилось to Лентяй не подскажите как в вашей программе задать смещение? пока что пользуюсь такой конструкцией *^C^C_QTRPL;\0.2; через пень колоду, но работает) |
|||
![]() |
|
|||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
Цитата:
Цитата:
Цитата:
Код:
|
||||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Для Лентяй.
С таким понятием запущенности я согласен. Действительно, мое совершенствование в AutpLisp закончилось несколько лет назад, когда я вынужден был покинуть отдел автоматизации проектирования. Однако, я думаю, что многие участники форума, которые выкладывают здесь свои программы, делают это с искренним желанием помочь, а не на потеху другим, более опытным товарищам. А у вас я заметил такую особенность - язвить и потешаться даже над программами людей достаточно опытных. Но, может, это и не плохо. Я вот предполагал, что Димас в моей программе сам сможет записать в код нужные названия слоев с нужными цветами. По-моему, это место прозрачно в коде. Но вы, кажется, не обратили внимания на мои слова о том, что полилиния может размножаться в непредсказуемом направлении в зависимости от направления отрисовки контура. Может, это для Димас и не существенно, однако программа может применяться и другими пользователями, для которых это существенно. Это я говорю о первой вашей программе. Вторую только буду пробовать. Но вот что мне интересно. Можно ли создать программу, которая сразу отрисовывала бы 4 (или другое число) полилинии, причем каждая на своем слое, так же, как отрисовывается мультилиния. Отрисовывалась c резиновой нитью, а не размножалась. |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
Цитата:
это был один из "+" за использование мультилинии может сделать так - пользователь отрисовывает мультилинию (при отрисовке видно резиновые линии), затем она удаляется и по тем же точкам рисуются полилинии по разным слоям, затем смещаяются? а как по другому можно реализовать отрисовку сразу 4-х резиновых линий? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>Димас
Цитата:
Цитата:
Код:
Код:
Код:
Код:
Код:
И самое главное. если число Dist0 < 0, то , будет строится полилиния "внутрь", если Dist0 >0, то наружу. Цитата:
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
VVA, у меня к вам неск. вопросов, потому как мне не совсем понятна ваша логика.
1. Код:
Код:
Код:
2. Исходная полилиния pl0 выбирается только однин раз в начале цикла и значение переменной pl0 в течение цикла не изменяется. Почему тогда вы заменили if на while? 3. Значение переменной pl обнуляется при заканчивании программы. Для чего вам нужно еще одно присваивание pl nil в теле самой программы? 4. Значение отступа вводится заново либо подтверждается при запросе Код:
И последнее. Код:
Код:
|
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
спасибо за программу)
вот это Цитата:
и все таки, как реализовать отрисовку 4-х резиновых полилиний? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>Лентяй № 28
1.1 Я предполагал, что не всем может понравится MODEMACRO (так и вышло), поэтому информировал пользователя через princ 1.2 Цитата:
2. IF заменил на while, для того, чтобы вабиралась не один раз Код:
4. Я так понял, что димас хотел один раз ускановить отступ и offset'ить N-ое кол-во полилиний, не утруждая себя подтверждением дистанции. Тогда кнопок становится в 2 раза больше (2 ![]() ^C^C_QTRPL;; и ^C^CSdist0; И последнее Я тоже много чего перенял, у меня даже есть файл лентяй.lsp, где складируются интересные на мой взгляд решения по ActiveX для последующего разбора и применения (ради справедливости скажу, что есть еще и fatty.lsp и kpblc.lsp). Но я об этом никому не говорю. [sm206] |
|||
![]() |
|
||||
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
![]() |
Тысяча извинений...2 Лентяй: довелось однажды сталкнуться с проблемой локализации програм lisp, написанных при помощи commаnd, т.е. необходимо было ставить "_" типа "_имя команды". Использование entget как-то решает эту проблему?
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
А ваще, что entget, что entmake - не люблю я их [sm3228] |
|||
![]() |