Сообщество программистов Autodesk в СНГ

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: 1958 от 06-05-2018, 19:52:05

Название: Сплайн
Отправлено: 1958 от 06-05-2018, 19:52:05
Вроде просмотрел везде, но так и не нашел, как обойти запрос на указание касательных при рисовке сплайна.
Сейчас приходится нажимать несколько раз <Enter> для завершения процесса. :(
Код - Auto/Visual Lisp [Выбрать]
  1. (defun c:22 (/)
  2.  (command "_SPLINE")
  3.  (while (/= (logand (getvar "cmdactive") 31) 0) (command pause))
  4. )
Название: Re: Сплайн
Отправлено: Александр Ривилис от 06-05-2018, 20:34:29
Сплайны, рисуемые командой, зависят от ряда системных переменных. И кроме того есть различие в разных версиях AutoCAD.
SPLFRAME 
SPLINESEGS
SPLINETYPE
SPLDEGREE
SPLKNOTS
SPLMETHOD
SPLPERIODIC
Название: Re: Сплайн
Отправлено: Александр Ривилис от 06-05-2018, 21:14:33
1958
Попробуй такой вариант:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun c:22 (/)
  2.      (initcommandversion 2)
  3.      (command "_SPLINE")
  4.      (while (/= (logand (getvar "cmdactive") 31) 0) (command pause))
  5. )
Название: Re: Сплайн
Отправлено: Алексей Кулик от 06-05-2018, 21:43:15
Можно, конечно, совсем извратиться :) Запрашивать точки и их добавлять как контрольные точки в сплайн по мере указания ;)
Название: Re: Сплайн
Отправлено: Александр Ривилис от 06-05-2018, 21:47:03
Можно, конечно, совсем извратиться :) Запрашивать точки и их добавлять как контрольные точки в сплайн по мере указания ;)
Предложенный мной код, а именно (initcommandversion 2), заставляет AutoCAD выполнять (command "_SPLINE" ...) как команду _SPLINE запущенную из командной строки вручную.
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 03:43:49
** Error: no function definition: INITCOMMANDVERSION **
У меня 2007. Эта версия меня больше всего устраивает. Перепробовал множество, вплоть до 2018, но душа всё-равно в 2007 осталась. :)
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 03:45:36
Попробуй такой вариант:
** Error: no function definition: INITCOMMANDVERSION **
У меня 2007. Эта версия меня больше всего устраивает. Перепробовал множество, вплоть до 2018, но душа всё-равно в 2007 осталась. :)
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 03:50:49
Можно, конечно, совсем извратиться  Запрашивать точки и их добавлять как контрольные точки в сплайн по мере указания
Это чтоб потом сплайн создать командой entmake? Но тогда я не увижу процесс отрисовки сплайна (его укладки). Мне надо обрисовывать чертеж по растру (дигитализация горизонталей топоплана).
Название: Re: Сплайн
Отправлено: Алексей Кулик от 07-05-2018, 08:02:30
Поскольку нужно видеть "процесс укладки", то придется мириться с запросом углов.
P.S. Уже очень давно не работаю в 2007, почти ничего о его особенностях и не помню...
Название: Re: Сплайн
Отправлено: Александр Ривилис от 07-05-2018, 10:34:06
Попробуй такой вариант:
** Error: no function definition: INITCOMMANDVERSION **
У меня 2007. Эта версия меня больше всего устраивает. Перепробовал множество, вплоть до 2018, но душа всё-равно в 2007 осталась. :)

Ну если эта версия устраивает, то смирись со всеми её недостатками.
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 15:32:43
В версии 2018 (initcommandversion 2) работает.
Тогда такой вопрос: - с какой версии АвтоКАД появилась initcommandversion ?
Это чтобы я мог сделать проверку на версию и включить (initcommandversion 2).
Название: Re: Сплайн
Отправлено: Алексей Кулик от 07-05-2018, 15:40:34
А оно настолько надо?
Код - Auto/Visual Lisp [Выбрать]
  1. (defun custom-spline ()
  2.   (vl-cmdf "_.spline")
  3.   (while (/= (logand (getvar "cmdactive") 31) 0) (vl-cmdf pause))
  4.   ) ;_ end of defun
Название: Re: Сплайн
Отправлено: Александр Ривилис от 07-05-2018, 15:44:32
В версии 2018 (initcommandversion 2) работает.
Тогда такой вопрос: - с какой версии АвтоКАД появилась initcommandversion ?
Это чтобы я мог сделать проверку на версию и включить (initcommandversion 2).
Проверка на версию не нужна:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun c:22 (/)
  2.      (if initcommandversion (initcommandversion 2))
  3.      (command "_SPLINE")
  4.      (while (/= (logand (getvar "cmdactive") 31) 0) (command pause))
  5. )
Эта функция появилась или в AutoCAD 2009 или в AutoCAD 2010.
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 16:59:20
А оно настолько надо?
А в чем смысл вашего вопроса? И зачем Вы повторили код из первого поста?
Название: Re: Сплайн
Отправлено: Александр Ривилис от 07-05-2018, 17:04:54
И зачем Вы повторили код из первого поста?
У  Алексей Кулик используется функция (vl-cmdf) вместо (command). Эти функции не совсем одинаковые. Но в данном случае замена не помогает.
Название: Re: Сплайн
Отправлено: Алексей Кулик от 07-05-2018, 17:24:50
Приношу свои извинения, невнимательно прочитал ветку.
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 17:35:56
У  Алексей Кулик используется функция (vl-cmdf) вместо (command). Эти функции не совсем одинаковые. Но в данном случае замена не помогает.
Про эту разницу я в курсе. Кстати, у меня в оригинале (не в посте №1) используется vl-cmdf вместо command и, совершенно верно, тут без разницы.
Название: Re: Сплайн
Отправлено: 1958 от 07-05-2018, 17:37:54
Приношу свои извинения, невнимательно прочитал ветку.
:) Бывает. Не обижайтесь, если чем-то задел Вас.