|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
LISP. Расширение возможностей команды FILLET
пенсионер-конструктор
Калуга
Регистрация: 11.02.2011
Сообщений: 68
|
||
Просмотров: 4624
|
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Например, (command "_.ucs" "_w") (COMMAND "_.CHAMFER" "_p" e) (command "_.fillet" "_p" e)
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402
|
НЕ помешает еще и обработчик ошибок (как минимум); метки начала и конца отмены...
И еще один момент: в английской версии AutoCAD 2013 могу в запрос выводиться иероглифы.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 27.11.2007
Сообщений: 126
|
А есть ли вариант делать сопряжение не указывая радиус (не вбивая с клавиатуры), а указывая (вбивая с клавиатуры) дину дуги, которая должна получиться. Просто очен часто требуеться сделать сопряжение двух линий, где должна получиться дуга определенной длины, а радиус неважен
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Alex II, насколько я знаю, стандартными средствами - нет. Лиспом - пожалуй.
Геометрически вычисляем радиус сопряжения, разделив длину дуги на угол между сегментами в радианах. Назначаем системной переменной FILLETRAD значение этого радиуса и вызываем команду _fillet (всё программно). В идеале наша функция должна бы работать так: вводим длину дуги, указываем вершину - примыкающие к вершине сегменты сопрягаются с рассчитанным радиусом. Но команда _fillet не слишком дружелюбна при обращении к ней из лиспа, поэтому помимо двух действий (тех, что в идеале) добавляется еще два клика по смежным сегментам (стандартное поведение _fillet). Чтобы добиться идеала, нужно перерисовывать полилинию без участия _fillet, а это тянет за собой много геометрической аналитики и проверок, на что временем сейчас я не располагаю. Поэтому ниже простой и топорный вариант решения: Код:
Хотя пришла в голову идея на запрос сегментов командой _fillet отсылать точки через (vla-SendCommand). Вроде работает чётко: Код:
Последний раз редактировалось skkkk, 21.04.2014 в 13:41. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Lisp. Редактирование элемента во внешней ссылке без команды _refedit | молодой человек | LISP | 8 | 08.04.2011 23:00 |
Вызов команды внешнего приложения из lisp больше 4 раз | Andrej2 | LISP | 5 | 22.09.2009 15:35 |
Запуск Lisp команды в новом документе | BlackHarp | LISP | 1 | 26.03.2009 23:06 |
Использование команды mtext в lisp | gool | LISP | 2 | 17.09.2008 12:57 |
Странное поведение команды FILLET - не продолжает, а двигает | I.Van | AutoCAD | 2 | 08.08.2007 09:29 |