Главная » Просмотр файлов » Пояснительная записка

Пояснительная записка (1230110), страница 6

Файл №1230110 Пояснительная записка (Проектирование элементов путевого развития железнодорожных станций в среде AutoCAD) 6 страницаПояснительная записка (1230110) страница 62020-10-06СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

(progn

(setq alpha 0.09066015836748323

m 0

a0 0

b0 16.754

q 2.550

b 19.304

)

)

)

Как упоминалось ранее, данная часть кода исхода из входных данных, задает размеры стрелочного перевода в параллельном соединении.

(setq beta (getangle "\n Укажите угол:")

nach 0

)

(if (= ugol "1")

(setq nach alpha)

)

(setq tan (/ (sin alpha) (cos alpha))

X (/ e tan)

TG (* R (/ (sin (/ alpha 2)) (cos (/ alpha 2))))

K (* R alpha)

f (- (/ e (sin alpha)) b TG)

Lp (+ X TG a0)

rad (itoa R)

rad (strcat "R=" rad)

)

Данный кусочек кода просит задать угол поворота всего элемента и проверяет флаг «Поворот пути». Также в нем рассчитываются координаты тангенсов, и создается строка для подписи радиуса сопряжения.

(setq k_m0 (getpoint "\n Укажите точку:"))

(if (= napr "1")

(progn

(setq sumangle (- beta alpha)

b1 (/ e (sin alpha))

k_m (polar k_m0 (- (+ 0 beta) nach) (+ m d) )

k_a0 (polar k_m (- (+ 0 beta) nach) a0)

k_x (polar k_a0 (+ 0 beta) X)

k_t (polar k_x (+ 0 beta) TG)

k_b1 (polar k_a0 sumangle b1 )

k_d (polar k_b1 (+ 0 beta) TG)

p (/ e 2)

ctan (/ (cos (/ alpha 2)) (sin (/ alpha 2)))

Lpr (* p ctan)

k_p0 (polar k_a0 (+ 0 beta) Lpr)

k_p (polar k_p0 (+ (-(/ pi 2)) beta) p)

)

)

)

Здесь вычисляются координаты всех точек для построения соединения, а также координаты установки предельного столбика.

(setvar "osmode" 0)

(setvar "PLINEWID" 0.3)

(command "_pline" k_a0 k_b1"")

(command "_pline" k_b1 k_d"")

(command "_circle" k_p 0.5)

(setq kr (entlast))

(command "_hatch" "_s" kr "")

(setvar "FILLETRAD" R)

(command "_fillet" k_a0 k_d "")

Отключение привязок, задание толщины линии, изображение предельного столбика с последующей его закраской, сопряжение отрезков.

(command "_text" k_rad "1.5" (angtos beta) rad "")

(command "_line" k_t1 k_t11 k_t111 k_t112 "" "_line" k_d k_t22 k_t221 k_t222 "")

(command "_pline" k_m0 k_m k_a0 k_x k_t "")

(command "_pline" s1 s2 "")

(setvar "osmode" osm)

Эта часть кода подписывает радиус сопряжения , чертит тангенсы кривой и центр стрелочного перевода. Затем возвращает првиязки пользователя.

4.3.2 Проектирование пассажирских устройств

Теперь делом приступим к написанию кода для черчения высокой платформы. Так как размеры платформы зависят от некоторых параметров, то следует создать диалоговое окно. Для этого в окне редактора Visual LISP создадим новый файл. Сохраним с расширением .DCL. В него напишем следующий код:

platform_high: dialog {label = "Платформа высокая";

: spacer{height=1;}

: edit_box {label = "Длина платформы, [м]:"; key = "dl"; edit_width=10; value = "400";}

: boxed_column { label = "Параметры прохода";

: popup_list{label="Тип:"; key="type_p"; list="Мост" "\nТоннель"; edit_width=15;}

: edit_box {label = "Ширина, [м]:"; key = "Bsh"; edit_width=10; value = "2.25";}

: toggle {label = "Вход с торца"; key = "border";}

}

: radio_row { label = "Чертить"; key = "dir";

: radio_button {label = "Вверх"; key = "up"; value = "1";}

: radio_button {label = "Вниз"; key = "down";}

}

: spacer{height=1;}

: toggle {label = "Ось пассажирского здания"; key = "OY";}

ok_cancel;}

В первой строке platform_high – название диалогового окна, по которому оно будет вызываться. Атрибут label хранит заголовок диалогового окна.

Для более удобного восприятия добавлены междустрочные разделители. Так как ширина платформы зависит от ряда факторов, описанных в разделе 1.5, таких как длина платформы, тип прохода к ней, и местоположение прохода – с торца или нет, эти параметры были выделены в отдельный блок. Атрибут key задает код поля, по которому к полю можно будет обратиться из программ LISP.

edit_width – задает ширину поля ввода.

value = ""; – задает начальное значения поля ввода.

Наиболее часто используемые значения некоторых полей можно установить как начальные значения. Так, например, ширина прохода для моста должна быть не менее 2,25 м, поэтому это значение можно сделать начальным.

Дополнительные блоки являются второстепенными и не влияют на размер самой платформы. Так, например, платформа на чертеже может находиться как под путями, так и над ними. Для выбора направления платформы относительно путей существует блок «Чертить».

Так как в некоторых случаях необходимо проводить ось, которая будет считаться осью OY, добавлена возможность выбора ее изображения вместе с платформой.

ok_cancel; – директива, которая является ссылкой на группу кнопок

(ОК и Отмена), описанную в базовом файле AutoCAD “base.dcl”.

Чтобы проверить действительно ли у нас получилось нужное диалоговое окно:

  1. в главном меню выбираем «Сервис», далее переводим указатель мыши на «Инструменты интерфейса» и щелкаем на «Просмотр DCL из редактора»;

  2. нажимаем «ОК» и в рабочем окне AutoCAD появится наше диалоговое окно.

После создания диалогового окна создадим новый файл и сохраним его с расширением .LSP. В него напишем следующее.

;--------------------- функция mp_platform_high--------------------------------------

(DEFUN c:mp_platform_high ( / border type_p Bsh dl ddi dir OY)

(if (not (tblsearch "ltype" "ACAD_ISO10W100")) (alert "Загрузите штрихпунктирную линию ACAD_ISO10W100")

Первая строка говорит о начале функции с названием mp_platform_high.

Синтаксис функций в языке AutoLISP следующий:

(DEFUN <Name> ( <аргументы> / <рабочие>)

……тело функции…

)

<аргументы> - символы, которые используются в качестве аргументов новой функции;

<рабочие> - символы, которые используются в качестве временных, рабочих переменных.

Так как по умолчанию в рабочем окне AutoCAD кроме сплошных линий, никакие другие не загружены, то следует проверить, загрузил ли пользователь нужный тип линии. Вторая строка проверяет, имеется ли уже в базе данных AutoCAD линия с типом ACAD_ISO10W100 для черчения оси OY. Если таковой не найдено, то выводится сообщение об ошибке с просьбой загрузить необходимый тип линии. За вывод сообщения на экран отвечает функция alert. Выполнение программы прекращается.

Если данный тип линии найден в базе данных, то выполнение программы продолжается. Для объединения нескольких последовательно выполняемых выражений в одно существует функция progn, ее мы и будем использовать. Синтаксис этой функции следующий:

(progn выражение1> [<выражение2>] … [<выражениеN>])

После проверки условия добавим в наш LSP файл следущее:

(DEFUN platform_high (border type_p Bsh dl dir OY / B g k_m0 k_m1 p1 p2 rect k_oy1 k_oy2 clt osm)

(setq osm (getvar "osmode"))

(setq clt (getvar "CELTYPE"))

(setq g 1.92)

(if (or

(and (= type_p "0") (< Bsh 2.25))

(and (= type_p "1") (< Bsh 3))

)

(progn

(alert "Ширина схода слишком мала")

(exit)

)

)

(if (= border "0")

(setq B (+ Bsh 4))

(setq B (+ Bsh (* 2 (- 3.1 g))))

)

(if (= dir "up")

(setq dir (/ pi 2))

(setq dir (- (/ pi 2)))

)

platform_high – функция для расчета и черчения, вложенна в функцию mp_platform_high;

(setq osm (getvar "osmode")) – запоминаем привязки пользователя [19];

(setq clt (getvar "CELTYPE")) – запоминаем тип линии;

g – габаритное расстояние от оси пути до края платформы, для высоких платформ оно должно быть 1.92 м).

Необходимо обезопасить пользователя от неправильно заданных значений в поле ширины прохода к платформе. Так как для каждого типа прохода утверждены минимальные размеры ширины прохода, необходимо добавить условие:

  • если тип прохода мост, и его ширина меньше 2,25 м, выводится сообщение о том, что ширина меньше минимальной, выполнение программы прекращается;

  • если тип прохода тоннель, и его ширина меньше 3 м, выводится сообщение о том, что ширина меньше минимальной, выполнение программы прекращается.

Если выбранный тип прохода и его ширина не вызывают нареканий, программа продолжает работу и выполняет проверку флага местоположения прохода. Если логическое значение флага равно 0, то для определения ширины прохода пользуемся формулой (1.23), иначе используем формулу (1.24).

Язык AutoLISP не похож по синтаксису на современные языки, так например выражение всегда начинается с открывающей круглой скобки, после чего сразу следует название функции, а затем уже операнды, и заканчивается закрывающей скобкой. Поэтому выражение вида

на языке AutoLISP будет иметь вид

(+ Bsh (* 2 (- 3.1 g) ).

После вычисления ширины платформы проверяется логическое значение флага dir (сторона относительно пути).

(setq k_m0 (getpoint "\n Укажите точку на пути:")

k_m1 k_m0

k_m0 (polar k_m0 dir (+ (/ B 2) g))

p1 (polar k_m0 pi (/ dl 2))

p1 (polar p1 (/ pi 2) (/ B 2))

p2 (polar p1 0 dl)

p2 (polar p2 (- (/ pi 2)) B)

)

(setvar "osmode" 0)

(command "_rectang" "_w" "0.1" p1 p2 "")

(setq rect (entlast))

(command "_.hatch" "line" "0.75" 210 rect "")

(setq k_m0 (getpoint "\n Укажите точку на пути:") – просит пользователя указать точку на чертеже.

Для правильной работы точку нужно указывать на пути, так как платформа строится относительно него.

Далее программа высчитывает местоположение вспомогательных точек для построения платформы.

(setvar "osmode" 0) – отключает все привязки пользоваеля, для правильного построения.

(command "_rectang" "_w" "0.1" p1 p2 "") – строит прямоугольник по двум крайним точкам одной диагонали, толщиной линии 0,1.

(setq rect (entlast)) – сохраняет имя последнего не удаленного главного примитива в базе данных в переменную rect для его последующей штриховки.

(command "_.hatch" "line" "0.75" 210 rect "") – штрихует построенный прямоугольник с шагом 0.75 под углом 210 градусов.

Важно отметить, что нижний пробел перед названием всех команд ставится для того чтобы команды могли работать как в русскоязычных, так и англоязычных версиях системы AutoCAD.

(if (= OY "1")

(progn

(setq k_oy1 (polar k_m1 (/ pi 2) 100)

k_oy2 (polar k_m1 (- (/ pi 2)) 100)

)

(setvar "CELTYPE" "ACAD_ISO10W100")

(command "_line" k_oy1 k_oy2 "")

)

)

(setvar "CELTYPE" clt)

(setvar "osmode" osm))

(if (= OY "1") – проверяет логическое значение флага «Ось пассажирского здания». Если условие истинно, меняем тип линии на штрихпунктирную и чертим ось.

(setvar "CELTYPE" clt) – возвращает тип линии установленный до выполнения программы;

(setvar "osmode" osm) – возвращает привязки пользователя.

На этом функция platform_high закончена.

;---------- функция получения параметров ----------

(DEFUN raz_platform ()

(setq border (get_tile "border")

type_p (get_tile "type_p")

Bsh (atof (get_tile "Bsh"))

dl (atoi (get_tile "dl"))

dir (get_tile "dir")

OY (get_tile "OY")

)

)

raz_platform – функция получения значений из диалогового окна.

;------------------------ Диалоговое окно -------------------

(setq dcl_id (load_dialog "dialogs.dcl"))

(if (not (new_dialog "platform_high" dcl_id))(exit))

(action_tile "accept" "(raz_platform) (done_dialog 1)")

(action_tile "cancel" "(done_dialog 0)")

(setq ddi (start_dialog))

(unload_dialog dcl_id)

(if (= ddi 1) (platform_high border type_p Bsh dl dir OY))

(princ)

load_dialog – функция загрузки файла диалога.

"dialogs.dcl " – имя загружаемого файла диалога.

Если диалоговое окно загрузится, то данная функция вернёт порядковый номер загруженного DCL-файла в данном сеансе работы с системой AutoCAD.

При помощи оператора присвоения setq запоминаем этот номер в переменной dcl_id.

(setq dcl_id (load_dialog "dialogs.dcl"))

Если диалоговое окно не загрузится, то функция вернет отрицательное целое число.

Если имя файла в аргументе указано без полного пути, то система AutoCAD пытается найти файл в папках поддержки, где находятся вспомогательные файлы.

Характеристики

Список файлов ВКР

Проектирование элементов путевого развития железнодорожных станций в среде AutoCAD
Данилов
Плакаты.vsd
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6934
Авторов
на СтудИзбе
266
Средний доход
с одного платного файла
Обучение Подробнее