|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
найти линий одинаковой длины и сменить слой :)
Регистрация: 17.05.2005
Сообщений: 13
|
||
Просмотров: 12445
|
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Чего студент, опять двойка?
Код:
Теперь перед тобой наиболее сложная задача - ДОКАЗАТЬ ПРЕПОДУ ЧТО ЭТО ТЫ НАПИСАЛ ![]() ![]() ![]() |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
PaSokaS. лови прогу и благодари меня за то, что я есть.
Цитата:
|
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Цитата:
А вы, уважаемые программисты, если хотите, чтобы вашего полку прибыло, помогайте бедному студенту не готовой программой, а наводящей на правильный путь информацией. У меня сын итальянский учит. Как? А также. Закладывает домашнее задание в интернет-переводчик, есть такие, получает мгновенный перевод, и адание выполнено. Думаю, PaSokaS будет знать LISP как мой сын итальянский. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Fantomas: Я не думаю что ActiveX это то что требует препод при начальном изучении AutoLISP... Даже насчет VL-функций у меня есть сомнения.
Насколько я понимаю, после ACAD-14 писать на просто AutoLISP без VL-функций - это все равно, что разговаривать на церковно-славянском. Я лично - антилиспист, потому как не люблю его. Вот одни не любят негров, другие - семитов, а я - AutoLISP. |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Vova
У меня есть искреннее убеждение - нельзя ничему научить, можно чему то научится. Судя по постингам где то существует учебное заведение(я) где преподают достаточно серьёзный курс AutoLISP. А вот зачем, я понять немогу. Эта такая штука что она либо нравится либо нет и без желания обучаемого тут ничего невозможно выучить. Да и для инженера это абсолютно некритично - главное хорошо знать свою специальность. Вот про вас к примеру никогда не скажешь что вы плохой спец, несмотря на то что AutoLISP не знаете. Моя позиция проста - нехай сдают. Кому интересно тот и сам выучит, кому неинтересно, могут эту науку успешно забыть в следующем семестре. AutoLISP может быть прекрасным факультативным предметом, а мучить им "детей" и сдавать экзамены - бред. >Лентяй Цитата:
|
|||
![]() |
|
||||
свободный художник (freelancer) Регистрация: 24.04.2005
Сообщений: 58
|
PaSokaS: задачка 10 из auto2.pdf? ;)
Fantomas: помочь можно оставив несколько неизвестных в коде для размышления. если захочет - подумает и закончит, а если он только принесет копию кода - все равно пролетит неответив на какой нибудь вопросик |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>vx
Это уже его дело. Мне проще потратить 20 минут и написать полностью, чем выдумывать для него еще какие нибудь загадки. Хочет разобратся, разберётся и заменит часть моего кода на свой, тем более что написать такую ерунду можно 1001 способом. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
Но еще: "если хотите, чтобы вашего полку прибыло" - а кому нужна конкуренция? (я не программист) |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>PaSokaS
Вот вам задачка для самостоятельной проработки. Вы видите что в программе всего одна переменная представляющая собой список, который видоизменяется до самого её окончания. У вашего преподавателя может вызвать вопрос "шаманский" способ его получения: Код:
Код:
Второе вы могли бы сделать ввод названия слоя с помощью функции GETKWORD. И еще, я все это писал быстро "в потоке сознаия". В результате влепил лишнюю сортировку, которую сначала хотел использовать, а потом поступил по другому. Код должен быть короче на целых три строчки: Код:
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Apelsinov
Цитата:
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Код:
![]() А код мне писать легче чем объяснять. Потом потребуют дополнительных объяснений и времени всё равно уйдет больше. Да и не преподаватель я... |
|||
![]() |
|
||||
Регистрация: 17.05.2005
Сообщений: 13
|
ого какие дискусии
![]() Сам я из Литвы( Баслийской Государство) Препод Дура ![]() Аутокад два полугодия ![]() неслишкой сложно там? ![]() а то я малость зеленый зеленый... ну контуры нарисовать еще нарисовать пол беды ![]() а такое... мда... Fantomas може дашь малость литературы имено по тем циклам и командам которые использовал а програме ![]() Огромное Человеческое пасибо ![]() (а учюсь я на компьютерного инжинера ![]() |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Из литературы на русском могу посоветовать только "Visual LISP и секреты адаптации AutoCAD" Н. Н. Полещук. Эту книгу удобно использовать как справочник. В разделе Download этого сайта есть еще две три книжки на английском. В принципе могу и сам объяснить поподробнее, только не сегодня, может завтра или послезавтра. Сегодня спать хочется...
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
1) Для начала нужно создать набор из всех линий чертежа и проверить что он создан. Если набор создан то исполняется последующий код, а если нет то выдается сообщение *** There are not lines *** .
Код:
2) Код:
3) Нашей задачей является получение списка типа ((примитив длинна)((примитив длинна)...). Для этого нам необходимо обработать все примитивы входящие в набор в цикле. Количество повторов определяется длинной набора: Код:
Код:
Код:
Код:
Следующая строчка: Код:
Теперь мы добавляем в список asList очередной список из номера примитива и его длинны: Код:
Код:
4)Теперь нам нужно удалить из нашего списка элементы не имеющие "двойников" по длинне и преобразовать его в список примитивов без длинны (примитив примитив ...). Код:
Код:
Строка Код:
Так извини,что то я засиделся. Продолжу завтра. |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Продолжим.
5)Если линий одинаковой длинны на чертеже не обнаружено то дальнейшее исполнение программы вызовет ошибку. Поэтому проверяем наличие непустого списка одинаковых линий: Код:
Код:
Код:
7)Далее следует цикл FOREACH внутри которого мы переносим все примитивы из нашего списка в новый слой "Equal Length Lines": Код:
8 )Осталось вывести сообщение о количестве линий перенесённых в другой слой: Код:
(princ) - в конце программы ставится для того чтобы она не возвращала значения. В отличии от других языков программирования в LISP нет процедур, а есть только функции (т. е. они всегда возвращают значение). (princ) или (prin1) - делают так чтобы функция не возвращала никакого значения. Ну вот вроде все. ![]() |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
И ещё один момент. Мы всё время говорим о DXF-кодах примитива. Однако я заметил что многие имеют о них информацию только по справочнику, достоверно не представляя как это выглядит по настоящему. Набери в командной строке:
Код:
Код:
Удачи ![]() |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Labas ritas (vakaras) ponas Pasokas!
Darbo Rusiske. Я тут пробыл две недели в ссылке в Монтане (это такая американская Сибирь) в отрыве от своего компа с русской клавой, потом не смог принять участия в дискуссии, по каковой причине вношу свой вклад только сейчас. Думаю, что еще не поздно. Сначала об отличии ActveX от AutoLISP. Не знаю. учат ли ActveX специально, но писать на ЛИСПе, уже имея ActveX как часть АвтоКАДа, это все равно, что работать в DOS, уже имея установленный WINDOWS. В отличие от AutoLISP, работающего с однородными списками чего попало, ActveX работает с объектами АвтоКАДА, независимо от их природы, напрямую обращаясь к их свойствам. Все команды, который я использовал, перечислены в HELP файлах, и потому - абсолютно законны даже для судентов. Ниже приводится моя программа с пояснениями типа Fantomas-овских. Единственное отличие - это использование полных выражений (vlax-get-property obj 'property_name), вместо сокращенного (vla-get-property_name obj), чтобы сделать вид программы более "учебным". Итак, Код:
|
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Черт, комментарии обрезаются и переносятся на новую строку, затрудняя будущее копирование. Попробую еще раз
Код:
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Лентяй
Цитата:
Кстати у тебя в программе не решена задача как она была поставлена: Цитата:
![]() |
|||
![]() |
|
|||||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Fantomas
Цитата:
Цитата:
Цитата:
1. Составляется общий список всех линий. 2. Произвольно выбирается линия сравнения - (ln0). 3. Все линии, имеющие ту же длину, переносятся но новый слой. При этом они пересчитываются. Agaspher Цитата:
Цитата:
Цитата:
|
||||||
![]() |
|
||||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
> Лентяй
Ник не коверкай! Цитата:
Цитата:
Код:
Цитата:
Цитата:
Код:
|
|||||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Лентяй
Цитата:
По остальным прениям ничего в данный момент сказать не могу поскольку выпил три литра пива и печать данного текста мне дается с трудом... |
|||
![]() |