|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Пытаюсь лисп написать.
Регистрация: 30.12.2009
Сообщений: 25
|
||
Просмотров: 2909
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 09.02.2011 в 09:32. |
|||
![]() |
|
||||
Регистрация: 30.12.2009
Сообщений: 25
|
Извиняюсь. Да действительно не понятно написал. Этот лисп нужен для составления спецификация и ведомостей сборных перемычек. Т.е. вводя число от 1 до 18 мы выбираем исполнение перемычки (у меня их получилось именно 18), а вводя расстояние мышкой на плане с проемами мы получаем ширину проема и каждому диапазону проемов соответсвует своя перемычка.
Вот как это выглядит для перемычек для перегородок (120 мм) Код:
Последний раз редактировалось yudjinSS, 08.02.2011 в 21:28. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Парочка вопросов:
1. можно сам дин.блок перемычки посмотреть? Как он реализован? 2. В файле, где планируется выполнять лисп, уже есть описание этого блока или его надо откуда-то импортировать?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 30.12.2009
Сообщений: 25
|
Блок с перемычкой покажу в ближайшее время. Он на работе остался. Он содержит в себе атрибуты о составе и отметке перемычки, а графически представляет из себя заштрихованный прямоугольник. Вы мне лучше подскажите как этот лисп написать. Выбрал исполнение, указал 2 точки, получил, данные, выбрал исполнение указал 2 точки, получил данные и т.д. до бесконечности; выбрал "выйти" - вышел. У меня не получается зациклить все это дело. Было бы в языке автолисп функция go to как например в фортране. Выбрал исполнение №9 "if a=9 go to 6" например. Просматриваю коды лиспов где реализована подобная схема, но у меня это в мозгу не вмещается пока, слишком сложные. Наверняка можно как то это попроще сделать.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Я предполагал другое решение, если честно: команда запускается на выполнение, пользователь указывает первую и вторую точки, в первую точку устанавливается блок перемычки (естественно, с поворотом на нужный угол), которому сразу и назначается соответствующее исполнение, а также (по возможности) заполняются атрибуты...
А так можно погонять нечто типа Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 08.10.2007
Москва
Сообщений: 42
|
(while
(setq aa (getpoint"\nУкажите первую точку проема или пустой ввод для выхода")) (setq ab (getpoint aa "\nУкажите вторую точку проема")) while - будет исполнять цикл до тех пор, пока аргумент этой функции будет истинным. В вашем случае пока будет указываться первая точка aa Не очень понятно, как вы описали аргумент функции cond В коде, при указании 2-ух точек вы можете получить нецелочисленное значение, допустим 800.5 Далее. Не обязательно перемычка должна быть монолитной. Может и металлический профиль быть (уголок например) Я думаю также в программе необходимо дать пользователю возможность определения типа перемычки. Несущая или ненесущая Сортировать можно по последним числам в маркировке. При значении 27-37 (несущая) Обязательно проверять минимальное опирание на стену. |
|||
![]() |
|
||||
Регистрация: 30.12.2009
Сообщений: 25
|
Кулик Алексей. Спасибо за помощь, но я имел в виду немного другое. Зациклить необходимо немного пораньше до ввода исполнения перемычки. Исполнение перемычки - это ее состав, т.е. несущая или ненесущая, из каких брусковых перемычек буде состоять. Выбираешь исполнение перемычки, тем самым ты говоришь, что она будет для стены такой-то толщины, состоять из таких то брусковых перемычек. См вложенный файл. Каждой брусковой перемычки соответствует максимальный пролет который она может перекрыть. А вот ее марка определяется шириной проема, как в показаном мной ранее коде, для определенного диапазона проемов подходит 1 данная а не какая либо другая перемычка. Как сделать так что бы если выбрал исполнение №2 лисп переходил к назначению значению переменной а1 вот так
(setq a1 (cond ((< a 800) "2ПБ 10-1") ((< 801 a 900) "2ПБ 11-1") ((< 901 a 1100) "2ПБ 13-1") ((< 1101 a 1300) "2ПБ 15-1") ((< 1201 a 1400) "2ПБ 16-2") ((< 1401 a 1500) "2ПБ 17-2") ((< 1501 a 1600) "2ПБ 18-2") ((< 1601 a 1700) "2ПБ 19-3") ((< 1701 a 2100) "2ПБ 22-3") ((< 2101 a 2300) "2ПБ 25-3") ((< 2101 a 2300) "2ПБ 26-4") ((< 2301 a 2700) "2ПБ 29-4") ((> a 2701) "нужна монолитная перемычка") ) а при вводе назначении а1 числа 1 аналогично подбирал перемычку 1ПБ? Последний раз редактировалось yudjinSS, 10.02.2011 в 23:03. |
|||
![]() |
|
||||
Инженер Регистрация: 11.12.2007
Москва
Сообщений: 295
|
Вечер Добрый )
Мы с yudjinSS как раз начинали обсуждать как сделать такой лисп/блок. Я сделал такой (см вложение) блок. Позволяет за несколько этапов нарисовать и сделать спецификацию с эскизами. Но надо смотреть в спецификацию и постоянно держать в уме опирание. Подскажите плиз пару вещей тож. 1) на сколько реально сделать через Вижел лисп. (Окно с активаторами по колличеству входящих в состав перемычки элементов, после активации внизу открывается менюшка в которой выбираем тип перемычек пб1-пб9 плюс монолит уголок утеплитель) Подтверждение. Указываем 2 точки и после этого лисп прогоняет полученный пролет по заданным типам перемычкек и вставляет с соблюдением опирания. В результате в чертеже получаем данный или похожий блок стоящий как надо (с равным опиранием отцентрованный) и в свойствах его Лук апы выбраны по результатам подбора. (я как то так вижу это но мне кажется оч сложным. Так же если не затруднит дайте ссылку где можно узнать про Lisp 1) как получать/устанавливать свойства объектов обычных и свойства Дин блоков. 2) Текст и мтекст получать его содержимое. 3) Как лиспом запомнить выбранные объекты и повторно их выбирать.
__________________
Live as though tomorrow you will die, Study as though you will live eternally. |
|||
![]() |
|
||||
Регистрация: 08.10.2007
Москва
Сообщений: 42
|
yudjinSS
На мой взгляд вы не совсем верно описываете алгоритм задачи. Во-первых вариантов исполнения не 18, а намного намного больше. Тощина стены может варьироваться. Причём не обязательно под кирпичную кладку (120, 250,380,510 и т.д.) Далее величина проёма допустим 850 не гарантирует выбор перемычки 2ПБ 11-1. Данную перемычку можно положить и на проём 700. Есть ограничение по минимальному опиранию. Максимальное же опирание зависит исключительно от того, какой тип реакций возникает в местах опирания перемычки на стену. Главное избегать жёсткой заделки. (Изгибающего момента). Опирание может быть хоть полметра. А если стена от 380 мм и выше, то добавляются и стандартные плитные перемычки (ПП). |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
пытаюсь написать фильтр на LISP (помогите понять в чем ошибка) | Pontelimon | LISP | 67 | 10.02.2011 11:11 |
Офисная перегородка. Хочу написать Лисп, рисующий вид сбоку. | welldone | LISP | 12 | 30.09.2008 17:14 |
Лисп: моментальное редактирование цифр в предложениях | dextron3 | LISP | 12 | 27.09.2008 09:33 |
Лисп для копирования данных нескольких мтекстов по принципу расположения. | Red Nova | LISP | 14 | 18.06.2008 22:08 |
КАК написать Лисп (2) | Simbol | LISP | 8 | 15.05.2006 08:55 |