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

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

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

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

Подскажите пожалуйста, как прописать в строке макросов (Button user defined) команду, чтобы блок с именем.dwg вставить в чертеж, а не через insert\block
Зарание Благодарен
Просмотров: 14864
 
Непрочитано 26.10.2004, 12:44
#2
Lenich

Опер дир
 
Регистрация: 28.04.2004
Москва
Сообщений: 291


Добавляешь в кнопку следующий код
Код:
[Выделить все]
^C^C_.-insert c:/temp.dwg
Где, c:/temp.dwg - путь и имя вашего файла.
При выполнении этой команды будет вставлен файл temp.dwg как блок.
Lenich вне форума  
 
Непрочитано 26.10.2004, 14:14
#3
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,268


Будьте внимательны с путь\имя.dwg - если там пробел окажется.
Лучше все это в кавычки заключать.
Pilot вне форума  
 
Непрочитано 26.10.2004, 14:25
#4
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


^C^C_.-insert c:/temp.dwg;\;;
"\" это точка вставки, назначаемая мышкой. ";;" это если масштабы по осям одинаковы и равны 1. А если путь прописан в Options то "C:/" можно опустить
Vova вне форума  
 
Непрочитано 29.10.2004, 16:34 Вставка блока с помощью иконки
#5
Nike


 
Сообщений: n/a


А как сделать вставку блока множественной, вроде Клик-Ляп-Ляп-Ляп...?
 
 
Непрочитано 29.10.2004, 17:17
#6
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


тогда примерно следующее можно
^C^C_.-insert c:/temp.dwg;\;;co;l;;m;i;

Тогда он вроде как должен выбирать вставленный блок делать мультикопи, надо вот только указать точку относительно которой будет копироватся вставленный блок.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
 
Непрочитано 29.10.2004, 17:58 Вставка блока с помощью иконки
#7
Nike


 
Сообщений: n/a


Mikhail:

Спасибо, но к сожалению вставляет один раз с запросом угла поворота. Если не сложно, разъясните назначение параметров в команде. Спасибо.
 
 
Непрочитано 29.10.2004, 18:41
#8
Star

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


Попробуй

Код:
[Выделить все]
*^C^C_.-insert c:/temp.dwg;\;;;
Star вне форума  
 
Непрочитано 29.10.2004, 18:51
#9
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Star:
Спасибо. А можно ли сохранить запрос угла поворота?
Nike вне форума  
 
Непрочитано 29.10.2004, 19:24
#10
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


все что касается макросов, в разделе "программирование"
Perezz!! вне форума  
 
Непрочитано 29.10.2004, 20:05
#11
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>Nike

В этом программировании все элементарно. Если в макрос пишем точку с запятой ; - это аналогично нажатию Enter при работе из командной строки.
Если пишем обратный слэш \ - это значит что АКАД будет ждать ценных указаний от юзера.
Не сочтите за труд, посмотрите как работает команда при вызове из командной строки и поставьте в нужные места нужные значки :wink:
vk вне форума  
 
Непрочитано 30.10.2004, 11:01
#12
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Спасибо, разобрался.
Nike вне форума  
 
Непрочитано 22.02.2005, 13:09
#13
VVS

проектирование автоматизированных систем управления и диспетчеризации на базе LonWorks
 
Регистрация: 24.01.2005
Санкт-Петербург
Сообщений: 16


Оживил эту тему, дабы не возникало лишних вопросов.
Со вставкой блока посредством "кнопочного" макроса разобрался, но непонятно как при вставке выбирается точка привязки? Как сделать так чтобы точка привязки была, например, левым нижним углом блока?
VVS вне форума  
 
Непрочитано 22.02.2005, 13:12
#14
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


В 2005-м Акаде точка втавки блока задается при создании блока.
И для ее изменения нужно редактировать блок.
Как решение, можно вставлять блок в точку 0,0,0. Потом команда MOVE из нужной точки (все это зашить в макрос).
Torino вне форума  
 
Непрочитано 22.02.2005, 13:14
#15
MIP

инженер
 
Регистрация: 13.12.2004
Минск
Сообщений: 496


Надо определить в блоке нужную точку как точку вставки! А перевыбор точки встаки блока будет реализован в Автокаде 2006 (Rio)
__________________
Сейчас такая знаний бездна
доступна всякому уму,
что стало спорить бесполезно
и глупо думать самому.
MIP вне форума  
 
Непрочитано 22.02.2005, 14:26
#16
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


А чего бы не использовать для этой цели LISP :?:

Для начала позаботимся о том чтобы все блоки вставлялись с одинаковым масштабом, без запроса оного. Т. е если нужен масштаб отличный от 1, запускаем функцию SCA и устанавливаем масштаб для всех последующих вставок:
Код:
[Выделить все]
(defun c:sca (/ oldSymsca)
  (if(not sp:symsca)(setq sp:symsca 1.0))
  (setq oldSymsca sp:symsca
	sp:symsca(getreal(strcat "\nEnter symbols scale <1:" (rtos sp:symsca) "> : "))
	); end setq
  (if(null sp:symsca)(setq sp:symsca oldSymsca))
  (princ(strcat "\nCurrent symbols scale 1:" (rtos sp:symsca)))
  (princ)
  ); end of c:sca
Потом напишем функцию вставки с алгоритмом ВСТАВИТЬ С ЗАДАННЫМ МАСШТАБОМ->ДВИГАТЬ С ПРОИЗВОЛЬНОЙ БАЗОВОЙ ТОЧКОЙ-> ВРАЩАТЬ С ПРОИЗВОЛЬНОЙ БАЗОВОЙ ТОЧКОЙ. Если вращение не требуется то убрать строку (command "_.rotate" (entlast) "" pause pause).
Код:
[Выделить все]
(defun SC_SymInsert2 (blName / oldEcho insSca blPath *error*)

  (defun *error* (msg)
    (setvar "cmdecho" oldEcho)
    ); end of *error*

  (setq oldEcho(getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (if(not sp:symsca)(setq sp:symsca 1.0))
  (setq insSca(/ 1 sp:symsca))
  (if
    (not(tblsearch "block" blName))
    (progn
      (if
       (setq blPath(findfile(strcat blName ".dwg")))
	 (command "-insert" blPath "_s" insSca pause pause)
         (princ(strcat "\n*** File " (strcat blName ".dwg") " not found! *** "))
       ); end if
      ); end progn
    (progn
    (command "-insert" blName "_s" insSca pause "")
    (command "_.move" (entlast) "" pause pause)
    (command "_.rotate" (entlast) "" pause pause)
    ); end progn
    ); end if
  (setvar "cmdecho" oldEcho)
    (princ)
    ); end of SymInsert
Теперь либо пишем в макросе кнопки (назавние файла без расширения *.DWG!):
Код:
[Выделить все]
(SC_SymInsert2  "Название_файла")
Либо, если требуется также вызов с клавиатуры пишем короткие функции:
Код:
[Выделить все]
(defun c:my_sym ()
  (SC_SymInsert2 "Название_файла")
  (princ)
  ); end of c:my_sym
и пишем в макросе my_sym

Естественно файл с этими функциями должен быть в автозагрузке, а файлы с блоками на "путях поддержки".

Enjoy...
{Smirnoff} вне форума  
 
Непрочитано 22.02.2005, 14:38
#17
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


В исходном файле, где нарисован объект-будующий блок, применить команду Base и назначить базовую точку. Или там-же передвинуть рисунок так, чтобы его точка вставки оказалась в 0,0
Vova вне форума  
 
Непрочитано 22.02.2005, 14:38
#18
VVS

проектирование автоматизированных систем управления и диспетчеризации на базе LonWorks
 
Регистрация: 24.01.2005
Санкт-Петербург
Сообщений: 16


Ух ты. Спасибо.
Один вопрос: а попроще как-нибудь нельзя?
VVS вне форума  
 
Непрочитано 22.02.2005, 14:41
#19
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


А чего проще?

Записываешь это в файл, ставишь его в автозагрузку. Потом рисуешь в макросах кнопок (SC_SymInsert2 "Название_файла") хоть до посинения. Что может быть проще?

Естественно макрос начинаем с ^C^C...
{Smirnoff} вне форума  
 
Непрочитано 22.02.2005, 14:43
#20
VVS

проектирование автоматизированных систем управления и диспетчеризации на базе LonWorks
 
Регистрация: 24.01.2005
Санкт-Петербург
Сообщений: 16


Цитата:
Сообщение от Vova
В исходном файле, где нарисован объект-будующий блок, применить команду Base и назначить базовую точку. Или там-же передвинуть рисунок так, чтобы его точка вставки оказалась в 0,0
Спасибо, то что нужно. И за книгу спасибо.
VVS вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка блока с помощью иконки

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