|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер по системам безопасности Регистрация: 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
|
>Лентяй
Цитата:
Кстати у тебя в программе не решена задача как она была поставлена: Цитата:
![]() |
|||
![]() |