Множественная вставка
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Множественная вставка

Множественная вставка

Ответ
Поиск в этой теме
Непрочитано 22.05.2008, 15:29 #1
Множественная вставка
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Есть макрос вида:
Код:
[Выделить все]
*^C^C^P_circle;\_d;1.25;(setq c125 (entlast));_-bhatch;_s;_l;;_p;SOLID;;(entdel c125) ^P
Но подобная множественная вставка не катит. Вставка работает так: нажали на кнопку, указали точку вставки, еще раз нажимаем левую кнопку, и опять указываем точку вставки. Хочеться убрать одно лишнее нажатие.
Как?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Просмотров: 3427
 
Непрочитано 22.05.2008, 15:57
#2
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Я в макросах не силен. Но попробуй после скобок перед ^p поставить ";"
__________________
Век живи, век учись - ...
Bull вне форума  
 
Автор темы   Непрочитано 22.05.2008, 17:10
#3
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Bull, неа! Не пошло. А непошло потому, что нужно именно тыкнуть на листе левой кнопкой, а не нажать Enter.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 22.05.2008, 17:30
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Shoorup, Если я правильно понял
Код:
[Выделить все]
^C^C^P_circle;\_d;1.25;(setq c125 (entlast));_-bhatch;_s;_l;;_p;SOLID;;(entdel c125);_COPYM;_L;;@;^P
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.05.2008, 17:54
#5
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


VVA, прикольно работает Спасибо, помогло.

ЗЫ. Не совсем помогло. При первой вставке при уменьшеном виде и включенной привязке. под углом 45 градусов у меня в правый нижний угол на расстояние 10-15 сантиметров копируется откуда ни возьмись круг
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 22.05.2008 в 18:02.
Shoorup вне форума  
 
Непрочитано 22.05.2008, 20:32
#6
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


А я нифига не понял, нафига это "^P"
Код:
[Выделить все]
*^C^C_circle;\_d;1.25;(setq c125 (entlast));_-bhatch;_s;_l;;_p;SOLID;;(entdel c125)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 23.05.2008, 07:05
#7
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Krieger Посмотреть сообщение
А я нифига не понял, нафига это "^P"
^P - равносильно (setvar "CMDECHO" 0). Это чтобы то, что возвращают лисповые функции, не отображалось в ком. строке
Makswell вне форума  
 
Непрочитано 23.05.2008, 07:50
#8
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Зато без ^P работает.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 23.05.2008, 14:37
#9
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Krieger, оно и с ^P и без него работает.
У меня щас еще одна беда случилась. Эти точки не совсем подходят. Дело в том что к ним не получается привязаться. Может стоит сделать блок и пользовать привязку к точке вставки, но тогда нужно ее устанавливать.
У кого какие предложения есть по выбору альтернативы?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 23.05.2008, 14:45
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Shoorup, А почему бы тебе не оставить круг?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 23.05.2008, 15:10
#11
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


VVA, всмысле? Штриховку с кругом? Тогда привязаться по конточке например не получиться, только по центру. Ненужная привязка может сработать - Квадрант. А привязываться нужно только к центру и желательно по конточке которая наиболее часто используется.
Потыкался и решил:
наверно лучший вариант сделать блок из штриховки в центре штриховки расположить отрезок нулевой длинны. В результате привязаться можно по конточке.
ЗЫ.VVA, а еще можно при выделении точки с кругом можно нечаянно потянуть за маркер и сделать точку больше - наши старики запросто такое провернут
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 23.05.2008, 15:33
#12
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Krieger, оно и с ^P и без него работает.
Понятно, что работает... Без ^P лишнего нажатия левой кнопки не надо делать.
Цитата:
Вставка работает так: нажали на кнопку, указали точку вставки, еще раз нажимаем левую кнопку, и опять указываем точку вставки. Хочеться убрать одно лишнее нажатие.
Конечно делай блок. И вставляй таким макросом (point -это название блока):
Код:
[Выделить все]
*^C^C_-insert;point;\1;1;0;
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 23.05.2008, 15:51
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Вот мне интересно, а обязательно макрос, лисп не прокатит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.05.2008, 15:58
#14
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Кулик Алексей aka kpblc, все конечно прокатит но макросом красивше
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 23.05.2008, 16:20
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


А с лиспом устойчивее (как правило)
Код:
[Выделить все]
(defun c:my-insert-fill-point (/                 adoc
                               *error*           blk_name
                               blk_def           cir
                               hat               fun_layer-status-save
                               fun_layer-status-restore
                               *layer-status*    _cmdecho
                               )

  (defun fun_layer-status-save (/ res)
    (vlax-for item (vla-get-layers adoc)
      (setq res (cons (list item
                            (cons "freeze" (vla-get-freeze item))
                            (cons "lock" (vla-get-lock item))
                            ) ;_ end of list
                      res
                      ) ;_ end of cons
            ) ;_ end of setq
      (vl-catch-all-apply
        '(lambda ()
           (vla-put-lock item :vlax-false)
           (vla-put-freeze item :vlax-false)
           ) ;_ end of lambda
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of vlax-for
    res
    ) ;_ end of defun

  (defun fun_layer-status-restore (lst)
    (foreach item lst
      (vl-catch-all-apply
        '(lambda ()
           (foreach prop (cdr item)
             (vl-catch-all-apply
               '(lambda () (vlax-put-property (car item) (car prop) (cdr prop)))
               ) ;_ end of vl-catch-all-apply
             ) ;_ end of foreach
           ) ;_ end of lambda
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of foreach
    ) ;_ end of defun

  (defun *error* (msg)
    (fun_layer-status-restore *layer-status*)
    (if _cmdecho
      (setvar "cmdecho" _cmdecho)
      ) ;_ end of if
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if (not (tblobjname "block" (setq blk_name "filled_point")))
    (progn
      (setq blk_def        (vla-add (vla-get-blocks adoc)
                                    (vlax-3d-point '(0. 0. 0.))
                                    blk_name
                                    ) ;_ end of vla-add
            cir            (vla-addcircle blk_def (vlax-3d-point '(0. 0. 0.)) 1.25)
            hat            (vla-addhatch
                             blk_def
                             achatchpatterntypepredefined
                             "SOLID"
                             :vlax-true
                             ) ;_ end of vla-addhatch
            *layer-status* (fun_layer-status-save)
            ) ;_ end of setq
      (vla-appendouterloop
        hat
        (vlax-make-variant
          (vlax-safearray-fill
            (vlax-make-safearray
              vlax-vbobject
              '(0 . 0)
              ) ;_ end of vlax-make-safearray
            (list cir)
            ) ;_ end of vlax-safearray-fill
          ) ;_ end of vlax-make-variant
        ) ;_ end of vla-AppendOuterLoop
      (vla-evaluate hat)
      (vlax-for sub blk_def
        (vla-put-layer sub "0")
        (vla-put-color sub 0)
        (vla-put-lineweight sub aclnwtbyblock)
        (vla-put-linetypescale sub 1.)
        (vla-put-linetype sub "byblock")
        ) ;_ end of vlax-for
      (fun_layer-status-restore *layer-status*)
      ) ;_ end of progn
    ) ;_ end of if
          ;[Basepoint/Scale/X/Y/Z/Rotate/PScale/PX/PY/PZ/PRotate]:
  (setq _cmdecho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (while ((lambda ()
            (prompt "\nУкажите точку вставки <Отмена> : ")
            (vl-cmdf "_.-insert" blk_name "_scale" 1. "_r" 0.)
            (while (/= (getvar "cmdactive") 0)
              (vl-cmdf pause)
              ) ;_ end of while
            ) ;_ end of lambda
          )
   ) ;_ end of while
  (if _cmdecho
    (setvar "cmdecho" _cmdecho)
    ) ;_ end of if
  (fun_layer-status-restore *layer-status*)
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
При условии, что лисп загружен, макрос становится
Код:
[Выделить все]
^C^Cmy-insert-fill-point;
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.05.2008, 10:00
#16
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Кулик Алексей aka kpblc, и всё равно не то. Можно привязаться по касательной, по квадранту,по нормали и всё не туда, не в центр.
Задача ставилась такая: нужна точка к которой можно будет привязвться к центру и исключить возможность привязки например к касательной.
В случае с кольцом можно нечаяно привязаться к одной из четырех точек не по центру. Также недостатком кольца является его возможность растягивания (иногда такое случается). К штриховки привязаться не получиться по кон.точке (почти всегда у всех включена).
Я сделал обыкновенный блок состоящей из штриховки, точки (в центре) и линии нулевой длинны то же в центре штриховки. Для чего все это нужно? Я получаю несколько возможностей привязки к центру моего блока (твставки,конточка,середина,узел,нормаль,ближайшая). Причем привязаться к какой либо другой точке не получится.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 26.05.2008, 11:02
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


А osmode (пусть временно) поменять не покатит? Правда, в таком случае смысл лиспа теряется напрочь
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.05.2008, 11:24
#18
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


То-же проскальзывала такая мысль, но привязка нужна не для вставки точки, а для того чтобы например линию к ней подтянуть и привязаться к этой точке по центру. Получается нужно поменять настройки osmode пользователя. По мне, так я редко привязкой пользуюсь (достаточно шага) и каждый раз менять состояние привязки "не кузяво".
В любом случае проблемму кажись решил...
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 26.05.2008, 12:26
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


А Ctrl+правый пинок мыши?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.05.2008, 12:59
#20
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А Ctrl+правый пинок мыши?
Дело в том, что я работаю в такой организации, где такой прием знает максимум 3 человека - и даже если я им поделюсь - всеравно им будет пользоваться 3 человека Большую часть моих блоков приходиться продумывать так чтобы у них была "защита от дурака".
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Множественная вставка

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите добить липс, Вставка блока с атрибутом gizmo_zx Программирование 1 10.01.2008 23:07
Вставка растра в 3D RamZes AutoCAD 4 14.05.2007 22:36
Вставка окружности в выбранные точки AcadJim Программирование 8 24.08.2006 07:39