|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Цитата:
Расширение языка AutoLISP, использующее объектную модель Автокада или любого другого com сервера - Visual LISP
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 02.06.2008 в 10:30. Причина: Орфография |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Я ж говорил, что смесь жуткая
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
См. форматирование, комментарии и описание функции (initget)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
Привет! Я тут сегодня практикуюсь вот написал прогу, но не работает она. Не посмотришь, что я не правильно сделал. Делал по аналогии твоей программы Отвод
;;;Рисование концентрического перехода по ГОСТ ;;;1. View-->Front ;;;2. Pline" "0,0" "0,R" "L,r" "L,0" "0,0" "_close" ;;;3. Revolve ;;;4. View-->SW Isometric ;;;R- радиус большой ;;;r- радиус маленький ;;;L- длина перехода (defun C:PEREKHOD (Рисование концентрического перехода по ГОСТ) (setq R (getdist "\nРадиус большой:")) ; Задаем большой радиус перехода (setq r (getdist "\nРадиус маленький:")) ; Задаем маленький радиус перехода (setq L (getdist "\nДлина перехода:")) ; Задаем длину перехода (Command "_.View" "_Front") (Command "_.Pline" "0,0" "0,R" "L,r" "L,0" "0,0" "_close") ; Рисуем профиль перехода (Command "_.Revolve" "Objects" "Enter" "X" "Y" "Enter") ; Поворачиваем профиль вокруг выбранной оси (Command "_.View" "_SW") (princ) ; Выход ) |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
Вот это по-моему правильно, тока все равно не работает
;;;Рисование концентрического перехода по ГОСТ ;;;1. View-->Front ;;;2. Pline" "0,0" "0,R" "L,r" "L,0" "0,0" "_close" ;;;3. Revolve ;;;4. View-->SW Isometric ;;;R- радиус большой ;;;r- радиус маленький ;;;L- длина перехода (defun C:PEREKHOD (/R,r,L,Pline); Рисование концентрического перехода по ГОСТ (initget7) (setq R (getdist "\nРадиус большой:")) ; Задаем большой радиус перехода (initget7) (setq r (getdist "\nРадиус маленький:")) ; Задаем маленький радиус перехода (initget7) (setq L (getdist "\nДлина перехода:")) ; Задаем длину перехода (Command "_.View" "_Front") (Command "_.Pline" "0,0" "0,R" "L,r" "L,0" "0,0" "_close") ; Рисуем профиль перехода (setq Pline (entlast)) (Command "_.Revolve" "Pline" "Enter" "X" "Y" "Enter") ; Поворачиваем профиль вокруг выбранной оси (Command "_.View" "_SW") (princ) ; Выход ) |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
не смотрите, тут все неправильно. единственно сегодня что получилось, так это трапецию сделал по точкам (профиль перехода), только мне так не нравится, аж 5 точек вводить надо. будем думать дальше как ввести только 2 диаметра и длину перехода.
|
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
Вот это работает, но вводить столько точек запаришься!
(defun C:Profile (/ pt1 pt2 pt3 pt4 pt5 ) (setq pt1 (getpoint "\nПервая точка:")) ; Задаем первую точку профиля (setq pt2 (getpoint "\nВторая точка:")) ; Задаем вторую точку профиля (setq pt3 (getpoint "\nТретья точка:")) ; Задаем третью точку профиля (setq pt4 (getpoint "\nЧетвертая точка:")) ; Задаем четвертую точку профиля (setq pt5 (getpoint "\nПятая точка:")) ; Задаем пятую точку профиля (Command "_.Pline" pt1 pt2 pt3 pt4 pt5) (Command "close") (princ) ) А вот эта не хочет никак работать! (defun C:PEREKHOD (/ R r L ) (setq R (getdist "\nРадиус большой:")) ; Задаем большой радиус перехода (setq r (getdist "\nРадиус маленький:")) ; Задаем маленький радиус перехода (setq L (getdist "\nДлина перехода:")) ; Задаем длину перехода (Command "_.Pline" '(0 0) '(0 D) '(L d) '(L 0) '(0 0)) (Command "close") (princ) ) Пишет неизвестная команда С |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Pyslan, если хочешь научиться программировать, придется много работать самому. Иначе все время будешь спрашивать про "три точки с запятыми" и удивляться - "Вот это по-моему правильно, тока все равно не работает ". Это обычное дело, когда автор думает, что "все правильно".
Вот пишешь "Читаю САПР как это делается, там ваще ж-а AutoLisp, VisualLisp, VBA, ActiveX, ObjectARX". Это про книгу "САПР на базе AutoCAD - как это делается"? Если это так, то хоть название пиши правильно - а не "и так сойдет". Иначе "и так сойдет" будет и в програмах. А тыкать носом в каждую мелочь желающих мало будет. Но книгу надо прочитать, и прочитать внимательно. Тема-то ветки про практические руководства, а не про то, как переход нарисовать. Это твое частное дело. Если уж начал с элементов трубопроводов, прочитай главу 29. Там как раз эти задачи описаны, а в примерах кода прямо решены. Например, листинг 29.15 - рисование вообще любого 2D-элемента (прямой участок, переход и т.п.). А в листинге 29.17 - рисование как раз концентричного перехода в 2D. В результате в меню конкретный переход с заданными размерами записывается очень просто: Код:
Можешь обернуть это в программу (команду), назвав ее, например Код:
просто отображались в иллюстрированном меню. В книге полно иллюстраций, в частности, рис. 29.13. За 3D сразу лучше не браться. Научись сначала самое простое делать. Попытка просто сделать revolve наивна. Да и элементарной техники пока у тебя нет, даже в написании команд - отсюда и вопросы. Читай упомянутую книгу - там все расписано. Особенно главу 10 - там самые основы. Следуя принципам, изложенным в книге, можно и к 3D перейти. Сформировав библиотеку функций, в которым самым основным является ввод точек в пространстве и вычисление координат в пространстве, можно и 3D-переходы (и всё прочее) делать. Концентрический 3D-переход на уровне меню может быть описан так: Код:
несуществующий переход 3000х50 длиной 6м, он может вписать Код:
От примера для 2D он отличается используемыми функциями. Например, ru-3d-pipe-draw-any делает твердотельную модель любого "трубоподобного" элемента, а ru-3d-pipe-reducer-concentr - конкретно перехода. Могу её и привести: Код:
Это именно для примера, чтобы показать "как это делается". Внутри используется множество дополнительных библиотечных функций. Как их делать и зачем нужны - тоже в упомянутой книге. Так как тема всё-таки про литературу, рекомендую обзавестись и книгой "AutoLISP и Visual LISP в среде AutoCAD" Петра Лоскутова и Николая Полещука. Это лучшее в настоящее время справочное пособие. |
|||
|
||||
Регистрация: 25.07.2007
Сообщений: 2,508
|
спасибо конечно, за науку. я и не собираюсь дергать народ все время, только я про свой "шедевр" спрашивал (последний). А книга у меня есть. Вот скажи мне, зачем ты мне свой код написал? Я хочу чтобы прога вырисовывала переход как я его рисую. То есть профиль, потом повернуть и создать тело и все. Задавать всего три размера, 2 диаметра и длину. Вот ты говоришь что надо с простого начинать с 2D, а я что делаю!? Профиль перехода то двухмерный, это ж прост четырехугольник.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Рyslan, найди отличия
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Попробуй заменить "_close" на "_c".
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||