|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
А если (без анализа кода) заменить строку
Код:
Код:
И потом, в указанном коде никак не участвуют ни b, ни h. Так и задумано или как? И еще один момент, что называется, "от греха": все переменные сделать локальными я бы порекомендовал.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Студентка Регистрация: 15.05.2008
Сообщений: 9
|
Как я поняла, с помошью "_none" создаются отдельные отрезки, а не один как раньше было у меня. Но "_.fillet" так и не работает
Код:
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Поняла ты не правильно, с помощью none отключаються привязки, а _fillet'ом надо не точки (как у тебя), а отрезки указывать. Вместо (setq pt '(0 100)) писать (setq pt (list x y)) где х и y предварительно подсчитанные значения координат по соответствующим осям.
P.S. (setq a b) (setq c d) ... можно заменить (setq a b c d), а вообще либо найди книжку по лисп, либо участника форума с твоего города, и всей группой ему на ящик пива сбрасывайтесь.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 310
|
>> Ju1iya
Если попробовать вот так: Код:
Хоть и не в AutoCADе проверял, но работает. Fillet действует на последний отрезок, приблизьте участок в координатах (90 , 15). Теперь нужно вычислить точки на двух сопрягаемых линиях примерно в 1 ед. от точки угла. Да и радиус скругления мелковат (может так и должно быть). Кстати, если делать эту фигуру полилинией, можно скруглить сразу все углы. >> Дима_ А не все ли равно: (setq pt '(0 100)) или (setq pt (list x y)), это одно и тоже. Вот только если XY задаются где-то отдельно, тогда да. Последний раз редактировалось Олег К., 16.05.2008 в 11:21. |
|||
![]() |
|
||||
Студентка Регистрация: 15.05.2008
Сообщений: 9
|
Цитата:
Кто хоть немного бы разберался в AutoLisp, я никого не знаю в нашем городе - даже знакомых у знакомых нет. Вся надежда только на вашу помошь... Переделала код, как ты посоветовал: Код:
![]() |
|||
![]() |
|
||||
Студентка Регистрация: 15.05.2008
Сообщений: 9
|
Цитата:
(setq p_snapmode (getvar "SNAPMODE") p_blipmode (getvar "BLIPMODE") p_osmode (getvar "OSMODE") и что они задают? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
На приложеном чертеже не нашел 2-х параметров, придумал их сам (см. рисунок), ну и сам код - если не првильный подправлять не буду - сами разирайтесь, не разберетесь пиши поясню.
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 16.05.2008 в 14:10. |
|||
![]() |
|
||||
Студентка Регистрация: 15.05.2008
Сообщений: 9
|
>Дима_
Объясни пожалуйста, почему у меня при выполнении твоего кода, не срабатает сопряжение? А пишет: _fillet *Неверный выбор* Требуется точка или Рамка/Последний/Секрамка/БОКС/Линия/РМн-угол/СМн-угол ; ошибка: Функция отменена И просит выбрать 1-й объект. Мне вроде говорили, что полилинии не сопрягаются - так ли это? А при выполнении 3dorbit фигура всё равно отображается двумерной? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
попробуй при запуске поменять масштаб (колесом мыши впиши квадрат где-то 100 на 100, с учетом параметра b около 10), наверное виной командный режим с которым "_fillet" плохо работает, по хорошему надо сопрягать на dxf уровне, но мне сейчас влом, 3д не показывает поскольку выполнение команды прерываеться, и у тебя остаеться только плоский рисунок. Чтобы убедиться поставь перед строкой
;(repeat (length spr) (fil (nth n spr) (/ b 5.0)) (setq n (1+ n))); создает сопряжения. создаст, но без сопряжения - но кстати у меня в 2008 все работает.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 310
|
Ага, вот тут-то мы и узнаем, что автокад русифицированный
![]() Возможно после команды _fillet требуется указать рамкой или секрамкой будут выделяться объекты (по коду указывается 2 точки на объект). У меня аналогичная ситуация в ZWCADе - программно 4 точки не понимает, а выбор секрамкой с мышки возможен. >> Ju1iya Системные переменные SNAPMODE, BLIPMODE, OSMODE отвечают за ручки выбора и привязки объектов. Подробнее можно посмотреть в хелпе. При работе командными методами желательно устанавливать им значение "0". На этом форуме было несколько тем с подробным объяснением - зачем. Также команды не всегда могут работать вне видимой части экрана. Добавлю еще: если точно известны места скругления и радиус, может проще создать полилинию уже со скруглениями, а не мучиться с filletom? |
|||
![]() |
|
||||
Студентка Регистрация: 15.05.2008
Сообщений: 9
|
Цитата:
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вобще проще всего наверное сделать автоматическую подгонку масштаба вписать перед сопряжением:
(command "_.zoom" "_o" obj "") (repeat (length spr) (fil (nth n spr) (/ b 5.0)) (setq n (1+ n))); создает сопряжения. Ну а правильней всего кочно полилинию с закруглениями сразу создавать.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 310
|
>> Ju1iya
Допустим, есть вот такая полилиния: Код:
Код:
|
|||
![]() |
|
||||
Инженер-теплотехник Регистрация: 17.08.2006
Смоленск
Сообщений: 310
|
Далее.
В программе заданы точки и радиус: (setq pt1 '(0 0) pt2 '(100 0) pt3 '(100 100) r1 20.0) Создаем полилинию по этим условиям: Код:
![]() Это когда координаты и радиус задаются в процессе выполнения программы. Если известны заранее - нефиг копаться: рисуем руками линии, скругляем где надо, узнаем координаты точек и забиваем их в программу. По-хорошему, такое надо создавать объектными методами (например через entmake), но это уже следующий уровень обучения. Последний раз редактировалось Олег К., 16.05.2008 в 16:32. |
|||
![]() |
|
||||
инженер ОПС Регистрация: 10.05.2008
Березники
Сообщений: 13
![]() |
Когда я сегодня спросил про пример в автокаде про построение садовой дорожки, преподавательница мне ответила, типа пример ужасный и вообще не понимаю зачем столько кода писать когда можно обойтись командами автокада. Ну, а про то что, команды автокада работают медленно и есть другие способы отрисовки моделей мне так и не дали ответа. Теперь от всех скрываю, что задание выполнено, код разбираю.
Вопрос где найти параметры команд типа "_L" "_g" "_all" ну и тому подобные. >> Ju1iya на пиво скидываться всей группой не надо, я ещё со своим примером не разобрался.
__________________
Жизнь хороша, если правильно подобрать антидепрессанты. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Восстановление первоначального вида модели после 3d Orbit в | sasha_lif | AutoCAD | 6 | 18.06.2008 22:44 |
AA2008: Как создать план 3d модели на определенной отметке | Vildar | Вертикальные решения на базе AutoCAD | 6 | 12.02.2008 12:52 |
Подготовка рабочих чертежей по 3D модели | constructorl | AutoCAD | 21 | 07.02.2007 19:50 |
2D чертежи из 3D модели. Как? | Karales | AutoCAD | 1 | 16.10.2006 18:29 |
3d модели на плоскости | Teplinski | AutoCAD | 3 | 26.05.2006 09:29 |