(изменено: Владимир Азарко, 17 мая 2010г. 11:25:16)

Тема: LISP. Быстрое рисование. QUICKDRAW

Тема, где это зародилось: Приёмы ускорения работы в AutoCAD
Развитие идеи, изложенной ttt и кода Rory Love, опубликованного Vova здесь.
Внесены некоторые доработки по предложению Largo_GT, Valery Brelovsky, Yuriy,Disney, и др. участников форума. некоторые доработки под себя опубликовал Yuriy здесь
Принцип работы программы:
Выбираете примитив-образец и рисуете такие-же примитивы с такими же свойствами. Кроме того, при повторе (пробел, клавиша ENTER, или правая кнопка мыши) рисование по примитиву-образцу будет повторяться (повторное указание не требуется).
Короткие имена:
QR - QUICKDRAW с восстановлением свойств
Q -  QUICKDRAW
[S]Если при копировании кода выдается ошибка - читать пост #11 !!![/S]
17.05.2010
Так как движок форума по прежнему разрывает вставленный код, последующие версии публикуются
здесь:LISP. Быстрое рисование. QUICKDRAW

Спасибо сказали: Valery Brelovsky1

Re: LISP. Быстрое рисование. QUICKDRAW

А копировать-изменить примитив не подойдет.В чем выигрыш?

(изменено: Владимир Азарко, 14 июня 2009г. 12:26:53)

Re: LISP. Быстрое рисование. QUICKDRAW

Al_geor, Нет, не подойдет. Нужна не копия примитива, а другой примитив с такими же свойсвами. Я думаю лучше всего тебе ответит кто-то из них: Yuriy, Disney, Valery Brelovsky, как активные постановщики, тестеры и ,надеюсь, пользователи.

Re: LISP. Быстрое рисование. QUICKDRAW

Al_geor,
Возьмём к примеру блок. Можно скопировать и вставить но при этом нужно команда копи потом базовая точка. Лично у меня в блоке базовая точка определят связь с другим объектом. Использование данного Лиспа позволят сразу получить блок готовый для вставки по базовой точке. Мне нужно начертить линию в нужном слое. Нужно переключить слоц выбрать команду линия и потом указать первую точку. Использование этой программы. Я выбираю линию или полилинию с нужными свойствами (цвет слой для полилинии толщину) или обращаюсь к этому Лиспу и сразу получаю запрос на первую точку. Текст аналогично стиль высота и первая точка. Размер. А вообще попробуй запусти Лисп и не пожалеешь. И шририховка. Выбрал образец и сразу запрос тока или объект. Конечно программа не для пустого чертежа, но редко начинаем с пустого, больше изменяем ранее созданные.  Да и вновь созданный чере5_10 минут уже требует повторение созданных ранее примитивов.

Re: LISP. Быстрое рисование. QUICKDRAW

Спасибо. Я думаю, что дополнительное разъяснение не помешает никому. Lisp взял на вооружение.

(изменено: Valery Brelovsky, 16 июня 2009г. 18:01:41)

Re: LISP. Быстрое рисование. QUICKDRAW

Al_geor,
Разумеется. Там в начале программы ссылки были можно посмотреть начальное обсуждение.

Re: LISP. Быстрое рисование. QUICKDRAW

Код не запускается пишет:

(LOAD "D:/Documents and Settings/Vasiliy/Application
Data/Autodesk/AutoCAD 2009/R17.2/rus/Support/qdrw.lsp") ERRNO # 2:
синтаксическая ошибка

Re: LISP. Быстрое рисование. QUICKDRAW

Василий Черников, Наверное плохо скопировал. В виде файла возьми по ссылке вверху первого поста

(изменено: Василий Черников, 18 июня 2009г. 14:01:40)

Re: LISP. Быстрое рисование. QUICKDRAW

День добрый, копировал ни один раз и вроде хорошо! Есть синтаксическая ошибка +
код на форуме отличается от кода в файле (строки кода отсутствующие в листинге на этом форуме привожу ниже).

  (defun *error* (msg)(princ msg)
    (mapcar '(lambda (x y)(if y (setvar x y)))
       '("INSUNITS" "INSUNITSDEFSOURCE" "INSUNITSDEFTARGET")
      mode)
    )
---------
    ZSIZE (FLDVAL 43 EL)
--------

  (setq mode (mapcar
           '(lambda (x / y)(setq y (getvar x))(setvar x 0) y)
           '("INSUNITS" "INSUNITSDEFSOURCE" "INSUNITSDEFTARGET")
           )
    )
-----------
  (mapcar '(lambda (x y)(if y (setvar x y)))
       '("INSUNITS" "INSUNITSDEFSOURCE" "INSUNITSDEFTARGET")
      mode)
----------

Re: LISP. Быстрое рисование. QUICKDRAW

Василий Черников,
Попробуй взять от сюда Пост 191

https://www.caduser.ru/forum/topic9651.html

У меня работает как часы.
Вы не указали версию Автокада и потом кажется в сокращённых версия есть проблема с запуском Лиспов.

(изменено: Владимир Азарко, 19 июня 2009г. 21:42:56)

Re: LISP. Быстрое рисование. QUICKDRAW

Василий Черников, То что коды отличаются, я об этом указал.

Вариант со вставкой блока с учетом INSUNITS, INSUNITSDEFSOURCE, INSUNITSDEFTARGET

Здесь что-то с движком форума. Он упорно разрывает имя функции.
Нужно найти строчку

(defun XINS ERT 

и заменить на

(defun XINSERT 

XINSERT - слитно, без пробела
Написал об этом администратору. Надеюсь, исправят.

Re: LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко,
А что даёт вариант со вставкой блока с учетом INSUNITS, INSUNITSDEFSOURCE, INSUNITSDEFTARGET. У меня старый от 11,05. Я не римскую менять. Этот вариант меня устраивает а к обновлениям отношусь критически.
Для меня оптимально выбрал образец и рисуешь такой. Вот с линиями возникло некоторое не удобство. Беру пунктирную линию с масштабом 10 с определённым масштабом а рисуется в масштабе 1.

Re: LISP. Быстрое рисование. QUICKDRAW

По поводу INSUNITS и т.п. посмотри пример из #8
По поводу типа линии проверю.

Re: LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко,
Посмотреть я посмотрел, но в чём прикол не догнал. После выбора блока он увеличивается в 1000 раз.
Я вот последнее время использую программу QUICKDRAW  для блоков. Есть один момент не очень удобный.
Проблема в чём. Если нужно вставить блок с тем же углом то нормально, но если нужно повернуть то не очень удобно так как поворот осуществляется не по оригинальному углу блока. Мне кажется что будет удобнее если при работе с блоком угол будет обнуляться и буде активна привязка вращения блока. Если это не возможно то придётся работать как есть. :)

Re: LISP. Быстрое рисование. QUICKDRAW

Добавилась обработка OSNAPCOORD=2
Так как моя просьба в #11 пока проигнорирована, то добавлена ссылка на dwg.ru, где можно взять это файлом

Re: LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко,
Извиняюсь по вопросу поворота блока не досмотрел функций.  :)

Re: LISP. Быстрое рисование. QUICKDRAW

Valery Brelovsky, Поясни, а то я что-то не понял  :?:

Re: LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко,
Когда выбираешь блок он повёрнут на какой то угол. Вставлял его а потом крутил. Не заметил что в Сом. строке имеется набор доп, функций в том числе и  поворот. Но есть один недостаток. Когда выбираешь функцию поворота отображение блока исчезает. Ставишь две точки в определённом направлении и изображение появляется повёрнутое на указанный угол иногда как надо иногда на 180. Тогда делаю вторую попытку и выбираю две точки в другом направлении и получаю нужную ориентацию блока. :)

(изменено: Владимир Азарко, 26 сентября 2009г. 18:33:01)

Re: LISP. Быстрое рисование. QUICKDRAW

Теперь понял. Думаю блок с тем же углом поворота не нужен. Для этого можно использовать команду _COPY.
Обновил quickdraw1.lsp на dwg.ru
Там угол поворота блока запрашивается после вставки блока, а не до.
Если хочешь сделать в своей версии, то нужно найти ф-цию (defun XINSERT , в ней строчку (command CMD NAME "_X" XSIZE
    "_Y" YSIZE "_Z" ZSIZE "_R" (angtos ANG)) ;_ end of command

и _R заменить на _PR. Строчка должна в итоге выглядеть так:
(command CMD NAME "_X" XSIZE
    "_Y" YSIZE "_Z" ZSIZE "_PR" (angtos ANG)) ;_ end of command

Re: LISP. Быстрое рисование. QUICKDRAW

LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко пишет:

Если хочешь сделать в своей версии, то нудно найти ф-цию

Да, найти, ещё и в чужом коде, это действительно нудное занятие  :D

(изменено: Valery Brelovsky, 28 сентября 2009г. 08:53:21)

Re: LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко,
Понял поправлю.

Disney,
Найти строчку не проблема даже в чужом коде.  :)

Владимир Азарко,
Спасибо всё прошло успешно и теперь блок можно повернуть сразу и вино при этом положение блока.

Re: LISP. Быстрое рисование. QUICKDRAW

Владимир Азарко,
может что не так делаю, но судя по названию программы новый объект должон наследовать свойства старого.
Тогда не понятно специфика работы с текстом, зачем указывать высоту и способ выравнивания, ведь пример уже указан.

(изменено: Valery Brelovsky, 29 сентября 2009г. 08:18:20)

Re: LISP. Быстрое рисование. QUICKDRAW

nonez,
Тогда просто два раза Enter и пишите новый текст с выбраны углом и высотой. Но не всегда бывает так. Часто нужно стиль и слой, а угол и высота другие, да и текст другой. У пользователя должна возможность изменить некоторые параметры при необходимости. Здесь есть гибкость программы.