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

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

Вставка блока с помощью иконки

Ответ
Поиск в этой теме
Непрочитано 26.10.2004, 11:34
Вставка блока с помощью иконки
RomanS
 
Сообщений: n/a

Подскажите пожалуйста, как прописать в строке макросов (Button user defined) команду, чтобы блок с именем.dwg вставить в чертеж, а не через insert\block
Зарание Благодарен
Просмотров: 14870
 
Непрочитано 19.02.2006, 22:40
#21
pyatifan


 
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
<phrase 1=


Фига вытащил тему (почти ровно год валялась, а проблемы те же).

Уважаемые фантомасы, или гуру там всякие, снизойдите до вот этого:

ко всему что есть (lisp) хотелось прибавить что-то типа: (command"wipeout" "f" "off")
т.к. в одном хорошем блоке есть эта ложка дёгтя (иногда совсем не хотца думать и легче притвориться лаймером и попросить того, для кого это раз плюнуть) не знаю как эту строчку грамотно втиснуть.
и ещё хотелось чтоб осталась возможность перебора точки вставки (динамический блок) тобиш Ctrl.
pyatifan вне форума  
 
Непрочитано 21.02.2006, 17:47
#22
Кулик Алексей aka kpblc
Moderator

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


> pyatifan : Маленький вопрос: используется ли toolpalettes? Если да, то можно повесить слой, масштаб и угол поворота напрямую на инструмент. А для wipeout можно и такое сделать, повесив его в автозагрузку:
Код:
[Выделить все]
(defun start( / _cmdecho_)
  (setq _cmdecho_ (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (commadn "_.wipeout" "_f" "_off")
  (setvar "cmdecho" _cmdecho_)
  )
(start)
А переделывать готовый лисп лично я не вижу особого смысла. У меня-то решено по аналогии с ruCAD, а там подход немного другой.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.09.2006, 16:05
#23
Star

Конструктор штампов
 
Регистрация: 10.03.2004
г. Киев
Сообщений: 92


Вставляю блок с масштабом по Х=1, а по У масштаб определяется разницей от точки вставки до указ. точки макросом:
Код:
[Выделить все]
^C^C_-Insert;M06Length;\;'Cal;Dist(@,cur);;
Так вот, сколько не ставлю в конце ";" (хоть 10) всё равно висит приглашение ввода угла.
Где проблема?
Star вне форума  
 
Непрочитано 05.09.2006, 16:19
#24
Кулик Алексей aka kpblc
Moderator

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


Поскольку используется 'cal, думаю, что используется полный кад. Соответствтенно попробуй нечто типа:
Код:
[Выделить все]
^C^C_-insert;m06length;\;1;(DISTANCE (getvar "lastpoint") (getpoint (getvar "lastpoint")));;
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.09.2006, 19:42
#25
Star

Конструктор штампов
 
Регистрация: 10.03.2004
г. Киев
Сообщений: 92


Если перед (DISTANCE... убрать 1; - выдаёт:
Код:
[Выделить все]
Enter Y scale factor <use X scale factor>: (DISTANCE (getvar "lastpoint") 
(getpoint (getvar "lastpoint")))

; error: bad argument type: 2D/3D point: nil
А если в конце убрать один ";", работает, но идёт запрос угла
Star вне форума  
 
Непрочитано 06.09.2006, 09:28
#26
Кулик Алексей aka kpblc
Moderator

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


Стоп, я не понял - мой код работает или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.09.2006, 10:20
#27
Джек

Строительство
 
Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
<phrase 1=


А можно сделать в лиспе?
Типа:
1. вставил блок (имя известна)
2. повернул его (блок) на определенный угол
3. следующая вставка уже с заданным углом и т.д. до бесконечности
Спасибо 8)
Джек вне форума  
 
Непрочитано 06.09.2006, 10:22
#28
Кулик Алексей aka kpblc
Moderator

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


Можно. Но код длинный. Сделано в ruCAD'e.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.09.2006, 14:09
#29
Джек

Строительство
 
Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
<phrase 1=


Цитата:
Сообщение от kpblc
Можно. Но код длинный. Сделано в ruCAD'e.
а почему длинный код?
Просто в лиспе можно сделать - сначало вставка блока, а затем с помощью командой копировать сделать вставку вставленного блока ,
я сделал не большой лисп , но при копировании вставляется только один раз, а не несколько.
Джек вне форума  
 
Непрочитано 06.09.2006, 14:35
#30
Кулик Алексей aka kpblc
Moderator

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


Длинный потому что вставлять сильно хочется, наблюдая за возможным результатом, а не неизвестно что и неизвестно куда. Да еще и с возможными разными масштабами. Некоторые блоки надо поворачивать после вставки; некоторые - нет. Общая идеология (по крайней мере примененная в ruCAD'e и следом за этой системой - и у меня) примерно такая:
- создается анонимный блок, в который засовывается "реальный" блок с переданными значениями масштабов по осям (правда, такой подход чреват проблемами при вставке таблиц и динамических блоков)
- через команду _.change меняется точка вставки
- если не был задан угол поворота, опять же командой _.change он меняется.
Там масса проверок, "ловушек" ошибок и т.п. Также надо предусматривать вариант выхода как по правой кнопке, так и по Esc. Я б сам такое не написал в жизни. Идею слизал, немного переделал. Пока работает.
Минусы подобного подхода:
- проблемы при вставке таблиц, динамических блоков, размеров и т.п. примитивов, имеющих в себе ссылку на запись таблицы блоков.
- команда _.change работает только в виде "сверху". При условии, что текущая система координат не совпадает с видом, иногда получается весело
- при условии запуска в LT Extender надо отслеживать условие, что (vl-cmf) все равно возвращает nil, что требуется учитывать.
- Изменить масштаб вставленного блока динамически нельзя.
Плюсы:
- Вставка всегда визуализируется.
- Одна функция может вызываться из тысяч мест, меняя только пару-тройку параметров.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.09.2006, 15:53
#31
Джек

Строительство
 
Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
<phrase 1=


[quote="kpblc"]Длинный потому что вставлять сильно хочется, наблюдая за возможным результатом, а не неизвестно что и неизвестно куда. Да еще и с возможными разными масштабами. quote]
Нет, у меня все просто, блок один тот же и вставка без масштаба.
У меня просто стандартный набор вставил и повернул.
просто иногда надоедает каждый раз угол задавать!!!!!
Просто вызвал прогу - вставил блок - показал угол, следующаая вставка без запроса угла и т.д. до бесконечности, пока не завершишь программу.
Если снова запускаешь программу - при первой вставке сделать запрос угла.
Джек вне форума  
 
Непрочитано 06.09.2006, 16:07
#32
Кулик Алексей aka kpblc
Moderator

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


Без проверок на работоспособность:
Код:
[Выделить все]
(defun insblock	(blockname / ang)
  (if
    (vl-cmdf "_.-insert"
	     blockname
	     pause
	     1
	     (if ang
	       ang
	       (distance (getvar "lastpoint") (getpoint (getvar "lastpoint")))
	       ) ;_ end of if
	     pause
	     ) ;_ end of VL-CMDF
     (setq ang (cdr (assoc 50 (entget (entlast)))))
     ) ;_ end of if
  ) ;_ end of defun
В качестве параметра передавай имя блока. Если не работает, сообщи
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.09.2006, 18:27
#33
Star

Конструктор штампов
 
Регистрация: 10.03.2004
г. Киев
Сообщений: 92


> kpblc
Твой код не работает
Код:
[Выделить все]
^C^C_-insert;m06length;\;1;(DISTANCE (getvar "lastpoint") (getpoint (getvar "lastpoint")));;
Нужно вставить блок с масштабом по Х=1, а по У масштаб определить расстоянием от точки вставки до указ. точки, угол поворота 0.
А такой код работает
Код:
[Выделить все]
^C^C_-insert;m06length;\;(DISTANCE (getvar "lastpoint") (getpoint (getvar "lastpoint")));
Но при этом идёт приглашение ввода угла. Как только добавляю в конце ещё ";" выдаёт ошибку.
Получается, что без ввода угла не обойтись что с 'Cal, что с LISP.
Можно немного упростить
Код:
[Выделить все]
^C^C_-insert;m06length;\;(DISTANCE (getvar "lastpoint") (getpoint));
Star вне форума  
 
Непрочитано 06.09.2006, 21:50
#34
Джек

Строительство
 
Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
<phrase 1=


Цитата:
Сообщение от kpblc
Без проверок на работоспособность:
Код:
[Выделить все]
(defun insblock	(blockname / ang)
  (if
    (vl-cmdf "_.-insert"
	     blockname
	     pause
	     1
	     (if ang
	       ang
	       (distance (getvar "lastpoint") (getpoint (getvar "lastpoint")))
	       ) ;_ end of if
	     pause
	     ) ;_ end of VL-CMDF
     (setq ang (cdr (assoc 50 (entget (entlast)))))
     ) ;_ end of if
  ) ;_ end of defun
В качестве параметра передавай имя блока. Если не работает, сообщи
Спасибо за лисп, но прога не работае или работает , но я не понял!!!!!
В место blockname - я написал имя автокадовского файла.
А принцип работы проги должна заключатся:
1. вызвал прогу
2. вставляешь блок
3. делаешь поворот (визуально смотришт как и где поворачиваешь)
4. после поворота , прога не завершается
5. снова ставишь блок , но угол поворота уже сохраняется и т.д.
Джек вне форума  
 
Непрочитано 07.09.2006, 11:34
#35
Кулик Алексей aka kpblc
Moderator

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


Стоп. Блок уже должен быть в файле. Если ты вставляешь внешний файл как блок, то тут по другому надо делать, ЯТД.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.09.2006, 13:15
#36
Джек

Строительство
 
Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
<phrase 1=


Цитата:
Сообщение от kpblc
Стоп. Блок уже должен быть в файле. Если ты вставляешь внешний файл как блок, то тут по другому надо делать, ЯТД.
Да, я вставляю внешний файл как блок, но я в настройке сделал доступ поддержки автокада.
Джек вне форума  
 
Непрочитано 12.10.2009, 13:40
#37
klinker


 
Регистрация: 02.09.2009
Сообщений: 82


Тогда следующий вопрос: Мне удалось сделать кнопку для вставки блока, он нормально вставляется, с нужным масштабом, только одна проблема- как сделать, чтобы команда могла завершаться после вставки блока, а то она отключается только при нажатии ESC Не оставляйте без ответа, коллеги

Последний раз редактировалось klinker, 12.10.2009 в 14:02.
klinker вне форума  
 
Непрочитано 01.04.2010, 13:21
#38
whisper_23

конструктор
 
Регистрация: 31.01.2008
г. Новоалтайск
Сообщений: 102
<phrase 1=


подскажите, а если мне нужно вставить дин. блок ?
просто я сделал так
^C^C_.-insert c:/temp.dwg;\;;
но тогда вставляется блок который содержит в себе мой дин. блок и динамичность появляется только при "взрыве" первого...
whisper_23 вне форума  
 
Непрочитано 01.04.2010, 13:41
#39
Anton_Br

архитектор
 
Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539


я вот не понял зачем всё это....А не проще в Design Center найти этот файл с блоками выбрать во вкладке Blocks нужные блоки и правым кликом выбрать меню где нажать greate tool palette.
У вас тогда будет палитра где будут иконки блоков и их имя. Для этого в файле все блоки должны быть поименованы.
Anton_Br вне форума  
 
Непрочитано 01.04.2010, 13:45
#40
whisper_23

конструктор
 
Регистрация: 31.01.2008
г. Новоалтайск
Сообщений: 102
<phrase 1=


ну не хочу я через tool palette... много места занимает на экране.
хочу создать панельку с кнопочками
whisper_23 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка блока с помощью иконки

Размещение рекламы