Реклама i
|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Alaspher, Наверное все правильно. Я просто ими уже со времен 14 или 2000 Автокада не пользуюсь
![]() Почему я оставил твой вариант закоментированным уже не помню. Наверное потому что сейчас делаю по другому. Цитата:
![]()
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 23.06.2008 в 15:14. Причина: Орфография |
|||
![]() |
|
||||
Регистрация: 25.07.2007
Сообщений: 2,518
|
Леша, вот задача
![]() (defun C:VALVE (/ D1 L D2 H1 D3 D4 Pline) (initget 7) (setq D1 (getdist "\Диаметр задвижки:")) (setq L (getdist "\Длина задвижки:")) (setq D2 (getdist "\Диаметр шпинделя:")) (setq H1 (getdist "\Высота шпинделя:")) (setq D3 (getdist "\Диаметр маховика:")) (setq D4 (getdist "\Диаметр поперечного сечения маховика:")) (Command "_.View" "_Front") (Command "_.Pline" "0,0" (list 0 (* 0.5 D1)) (list (* 0.5 L) (* 0.25 D1)) (list L (* 0.5 D1)) (list L 0) "_C") (setq Pline (entlast)) (Command "_.Revolve" Pline "" "X" "") (command "_.UCS" "_New" (list (* 0.5 L) 0)) (command "_.UCS" "_X" -90) (command "_.Cylinder" "0,0" (* 0.5 D2) H1) (command "_.UCS" "_New" (list 0 0 H1)) (command "_.Torus" "0,0" (* 0.5 D3) D4) (Command "_.Union" "_ALL" "") (command "_.UCS" "_World") (Command "_.View" "_SWISO") (princ) ) Здесь слишком много задавать размеров для задвижки. А можно сформировать таблицу значений, чтобы чтобы не вводить кучу значений а ввести одно, обозначение изделия. Допустим ЗКЛ2-50-16 (обозначение изделия) или обозначение типа, 30с41нж. И еще лучше чтобы по двум этим значениям. Ну как задачка? ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Перед тем, как кидаться "в бой", позволю себе немного побурчать
![]() Есть неписаное правило - если запросов больше чем 2, крайне желательно делать диалог. Соответственно получается dcl. Вдобавок dcl с заполняемыми списками (перечислениями). Да вдобавок еще и согласованными - сильно подозреваю, что назначать числа "от балды" недопустимо. Через полчаса-час попробую сесть ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Не, мне и без каталогов будет некисло
![]() ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
И вообще, если уж про задвижку, так не надо у нее ничего запрашивать. Есть изделие определенного Ду, Ру. У них всегда постоянная и известные размеры. Ну, может быть диаметр маховика чуть разный. Значит надо не размеры запрашивать, а выбирать изделие в целом.
А так как задвижка моделируется, то гораздо важнее ее положение в пространстве, например запросом точки начала, направления потока и направления шпинделя. Если всегда от точки 0, так это не програмирование. Начинать надо сразу методически правильно. На рисунках пример выбора изделия и результат. Всё программирование множества задвижек сводится к вызову одной функции с разными аргументами. Например: Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Ни секунды не умаляя ruCAD, все же позволю себе порастекаться мыслию по древу:
Сначала анализируем программу. Там получается несколько запросов (если оставлять их в ком.строке, а не выводить в диалог). Почему бы не написать отдельную функцию, заменяющую get*-функции? Обработать там сразу и нажатие пользователем Esc, и преобразования точек в мировую систему координат (буде такое понадобится), и initget там же прошпарить - в общем, выполнить аналог _ru-get. Это часть 1, сервисная. Займет больше всего времени. Часть 2, отрисовка. Тут, казалось бы, все просто, ясно и отлажено. Погоди радоваться! Во-первых, насчет использования (command) уже говорилось. Бог с ним, в некоторых случаях ее можно оставить. Но давай "подумаем вперед". Эти же задвижки потом надо будет считать... То есть надо (как минимум) делать блок, внутрь блока "загонять" всю задвижку (кстати, не забудь - у тебя ни тип линии, ни вес, ни слой - ничего не меняется). А потом уже вставлять сам этот блок (как раз тот случай, когда от команды не уйти) в точку, указанную пользователем, с соответствующими углами поворота и т.п. То есть в принципе код, если его делать "по уму", с нуля может занять несколько дней. === Поскольку задача изначально стояла не написать код, а показать некоторые возможности vlide, так и сделаем (и на этом закруглимся ![]() === P.S. Ох и огребу же я сейчас...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Рyslan, Не знаю, насколько этот релиз уже актруален, но можно кое-что посмотреть здесь:
http://dwg.ru/search.php?zone=1&mod=2&sName=ruCAD
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 24.06.2008 в 00:46. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Откуда я знаю? Продавать-то уже не я буду. Во всяком случае всегда будет и бесплатная.
Что касается программирования. Я ведь картинки показал не для рекламы. Интерфейс можно сделать всякий. Можно, например, в DCL. Разочка и хватит, вволю помучиться и для изучения. А можно и вообще без интерфейса - пункты меню, а к каждому пункту - макрос, вызывающий функцию рисования, задвижки например. Наподобие той, что я привел. А можно с опциями командной строки - в опции значение Ду, а все остальное уже зашито в программу. И запоминать и восстанавливать опции. Ведь если 100 раз за день надо задвижку нарисовать, так замучаетесь 100 раз отвечать на 6 вопросов, причем 90 раз одинаково. Учиться надо от простого к сложному. Интересуют задвижки, например, так начните с простого обозначения "бабочкой". Там всего 4 точки, плюс "перекладина". Да и ее можно не рисовать, а сделать вентиль. Вот и делайте сначала простую функцию рисования. Аргументами в нее можно передать поперечный размер, длину, точку начала и направление конца. Изменяя эти аргументы уже сможете рисовать арматуру и реальных размеров, и в виде условных знаков. Затем осваиваете ввод точек. Не абы как, а безошибочно. Здесь много нюансов. Например, арматура обычно продолжает какой-то предыдущий элемент (патрубок с фланцем, например). Или врезается в трубу. Значит и точки надо хитро запрашивать, например с опцией наподобие Продолжить. То есть автоматически присоединяя точку начала к концу ранее нарисованного элемента. И продолжая изображение в том же направлении. Это второй этап изучения. Еще дальше можно по желанию усложнять само изображение. Уже не просто "бантик", а "черт-те что и сбоку бантик". И делать это будет уже проще, если блок ввода точек отработан. И только потом и к 3D переходить. Там одна геометрия на порядок усложняется. Нельзя ведь заставлять пользователя для каждой арматурины ПСК переносить в её начало. Но и в 3D сначала можно плоские изображения отработать, а уж потом перейти к телам. И, разумеется. первым делом освоить Vlide. А в чем тогда программы-то писать, в Блокноте, что-ли? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Говорят, иногда пишут
![]() Сам иногда таким грешу ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
Цитата:
Но! Что касается OSNAP предпочитаю оставлять те значения, которые пользователь назначил в программе в функциях get* и пр., поскольку он подсознательно запомнил это значение, и будет уверен, что и в дальнейшем это будет текущеее значение. То есть начальное значение OSNAP, которое будет сохраняться при выходе из программы, будет равно текущему значению (после функции get*).
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
![]() |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Зачем в блокноте то? В крайнем случае в Notepad++ - там и подсветка есть, и пары можно отслеживать. В сторонних редакторах работали, пока не появился штатный редактор. Еще в R14 его не было.
|
|||
![]() |
|
||||
Проектировщик СС Регистрация: 24.06.2008
Минск
Сообщений: 134
![]() |
|
|||
![]() |