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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > AutoCAD 2021, Как вставить блок пакетом команд ^C^C_-insert ?

AutoCAD 2021, Как вставить блок пакетом команд ^C^C_-insert ?

Ответ
Поиск в этой теме
Непрочитано 09.03.2023, 15:55 #1
AutoCAD 2021, Как вставить блок пакетом команд ^C^C_-insert ?
Tyhig
 
Оснащение проходки горных выработок, ПОС, нормоконтроль, КР, АР
 
Ленинград
Регистрация: 30.01.2008
Сообщений: 18,691

Добрый день.

AutoCAD 2021 — Русский (Russian)
Задача: используя заранее подготовленный ексель файл --> файл блокнота --> вставить пакетной вставкой один блок много раз по разным координатам с разными аттрибутами.
(Расставить по заданным в ексель координатам блоки геологических скважин)

Блок имеет координаты Х, У и аттрибуты текст1 и текст2 (это блок геологической скважины).

Подскажите, пожалуйста, как верно выполяется запись команды при пакетной вставке команд в автокад ?

Из других тем вынес, что нужно что-то похожее на ^C^C_insert;теплодатчик;\;;;
Из книги Владимира Света и какого-то блога на двг про автокад ЛТ вынес назначение ; и т.п.

Но в целом картинка в голове не складывается.

При попытке ввести
^C^C_-insert;Геологическая_скважина;289484.02,-181500.03;текст1;текст2;
автокад ругается
Неизвестная команда "02,-181500.03;ТЕКСТ1;ТЕКСТ2;"

В чате предложили вводить построчно, но для пакетного ввода этого всё равно не хватает. Опосля 0 надо вручную вводить атрибуты, что не годится.
_-insert
Геологическая_скважина
10.05,12.1,0.0
1
1
0


В общем, пытался и не смог. Как-то раз разобрался с этим вводом при помощи форума, он заработал, но я забыл как я это делал.

Прикладываю файл Тест с блоком геологической скважины. Мне таких надо много штук по координатам Х и У рассовать и в атрибуты написать типа "Скв. N1 / 461,01" .

ЗЫ. Про отключение всех привязок знаю. Блок содержится в файле и вроде бы как не требует прописывания пути. Русские команды использовать не хочу (опасаюсь).


(command "_.-insert" "Геолскв" "16728060, 5921360" 1 1 0 "с-7061" "220,26")
Отключить все привязки.

Вложения
Тип файла: dwg
DWG 2010
тест.dwg (77.1 Кб, 21 просмотров)

__________________
"Безвыходных ситуаций не бывает" барон Мюнхаузен

Последний раз редактировалось Tyhig, 13.03.2023 в 14:32.
Просмотров: 1759
 
Непрочитано 09.03.2023, 17:56
1 | #2
Dinoxromniy


 
Регистрация: 14.09.2020
Санкт-Петербург
Сообщений: 333


Цитата:
Сообщение от Tyhig Посмотреть сообщение
Опосля 0 надо вручную вводить атрибуты, что не годится.
Вот этот момент мне вообще неясен, я не знаю как атрибуты вводить через комстроку, за исключением этого - в приложении файлик экселевский.
Вводишь свои координаты, проставляешь название своего блока. Красную ячейку трогать не надо, желтую - можно протягивать (если удаляешь строку - формулы желтых ячеек нужно протянуть заново через это место).
Самую нижнюю желтую ячейку нужно скопировать в Word (просто выделить и скопировать), и в Word убрать две кавычки (в начале и в конце), которые эксель почему-то вставляет. Из Word - вставить в комстроку акада.

Цитата:
Сообщение от Tyhig Посмотреть сообщение
Про отключение всех привязок знаю
Я не знаю - поделись знаниями

----- добавлено через ~16 мин. -----
Между прочим это. Есть самоцель вставить именно блок с атрибутами? А если блок без атрибутов, а нумерацию вставить с помощью текста, только со смещением относительно каждого блока (прописать дельту Х и Y), и через ту же пакетную команду прикрутить текст отдельно от блока?
Вложения
Тип файла: xlsx Пакетная вставка в dwg.xlsx (11.9 Кб, 17 просмотров)
Dinoxromniy вне форума  
 
Непрочитано 09.03.2023, 18:27
1 | #3
Krieger

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


Если вставлять через буфер обмена из exel в командную строку када, то писать управляющие символы (^C ; \ и т.д.) не нужно. Пробел - это ввод, т.е. вместо точки с запятой (аналог нажатия пробела в каде), переход на новую строку это тоже ввод, т.е. вместо ^M (аналог нажатия enter в каде). Вот и всё.
Чтобы заполнить атрибуты, нужно подавить всплытие диалога системной переменной ATTDIA, тогда, при вставке блока запрос атрибута будет в комстроке. После ввода значения атрибута нужно переходить на следующую строку, т.к. пробел тут не проканает.
Ексельку с данными в студию.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 09.03.2023, 18:45
1 | #4
Dinoxromniy


 
Регистрация: 14.09.2020
Санкт-Петербург
Сообщений: 333


Цитата:
Сообщение от Krieger Посмотреть сообщение
ATTDIA, тогда, при вставке блока запрос атрибута будет в комстроке.
Не очень понял, почему после attdia 0 акад в пакете забил на запрос угла поворота, но тем не менее факт - пришлось из формулы убрать эту строчку.
Вложения
Тип файла: xlsx Пакетная вставка в dwg_атр.xlsx (12.2 Кб, 5 просмотров)
Dinoxromniy вне форума  
 
Непрочитано 09.03.2023, 18:54
1 | 1 #5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Ну или напрямую из экселя по COM фигачить

Код:
[Выделить все]
Public Sub TopShlep()
  Dim lInputData As Variant: lInputData = Application.Selection
  If (UBound(lInputData, 2) <> 5) Then Exit Sub
  Dim lAcad As Object: Set lAcad = GetObject(, "AutoCAD.Application")
  Dim lDoc As Object: Set lDoc = lAcad.ActiveDocument
  Dim I1 As Long, lInsertPoint(0 To 2) As Double, lRefBlock As Object, lAttrs As Variant
  For I1 = 1 To UBound(lInputData, 1)
    lInsertPoint(0) = CDbl(lInputData(I1, 3))
    lInsertPoint(1) = CDbl(lInputData(I1, 4))
    lInsertPoint(2) = CDbl(lInputData(I1, 5))
    Set lRefBlock = lDoc.ModelSpace.InsertBlock(lInsertPoint, "Геологическая скважина", 1#, 1#, 1#, 0)
    lAttrs = lRefBlock.GetAttributes
    lAttrs(0).TextString = CStr(lInputData(I1, 1))
    lAttrs(1).TextString = CStr(lInputData(I1, 2))
  Next I1
  Set lDoc = Nothing
  Set lAcad = Nothing
End Sub


Alt+F11, вставить модуль, вставить код в модуль (при этом может кириллица исказиться - нестрашно, руками по месту вписать название блока).
Работает: выделить набор столбцов {ATT1, ATT2, X, Y, Z} со значениями на листе экселя (только сами данные!), нажать ALT-F8 и там выбрать макрос. Естественно, чертеж должен быть открыт в акаде и присутствовать определение блока в чертеже.
Сергей812 вне форума  
 
Непрочитано 09.03.2023, 19:12
#6
Dinoxromniy


 
Регистрация: 14.09.2020
Санкт-Петербург
Сообщений: 333


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Set lAcad = GetObject(, "AutoCAD.Application")
Дык в 2021 с большой долей вероятности кина не будет же, он же к гадалке не ходи - на 64 бита? Или это у меня только не работает?
У меня по феншую только так:
Код:
[Выделить все]
GetObject(, "AutoCAD.Application.24")
Dinoxromniy вне форума  
 
Непрочитано 09.03.2023, 19:17
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


ну да, разрядность офиса должна совпадать с акадом. А акад вроде с 2018 года 64-битный только.
Сергей812 вне форума  
 
Непрочитано 09.03.2023, 22:15
1 | #8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


ATTDIA 0
(command "_-insert" "Геологическая скважина" '(10 11 0) 1 1 0 "111" "222")

А лучше вообще хранить скважины в БД
trir вне форума  
 
Автор темы   Непрочитано 10.03.2023, 10:15
#9
Tyhig

Оснащение проходки горных выработок, ПОС, нормоконтроль, КР, АР
 
Блог
 
Регистрация: 30.01.2008
Ленинград
Сообщений: 18,691


Всем большое спасибо.
Krieger, Сергей812, trir, отдельное большое спасибо.

В итоге больше понравился способ пакетом из блокнота отдельными строками по методу trir.
Надо только вводить ровно то, что он написал. Со скобками и прочим.
__________________
"Безвыходных ситуаций не бывает" барон Мюнхаузен
Tyhig вне форума  
 
Непрочитано 10.03.2023, 12:09
1 | #10
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


если в Excel поменять разделитель на точку - то можно сразу копипастить из Excel в AutoCAD
trir вне форума  
 
Непрочитано 10.03.2023, 16:25
1 | #11
peshkoff


 
Регистрация: 11.06.2014
Юбутово@Москва
Сообщений: 78


Цитата:
Сообщение от trir Посмотреть сообщение
если в Excel поменять разделитель на точку - то можно сразу копипастить из Excel в AutoCAD
это нужно сделать в системе, а не в екселе. и сразу после установки винды.
peshkoff вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > AutoCAD 2021, Как вставить блок пакетом команд ^C^C_-insert ?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в AutoCAD создать блок с несколькими ручками видимости? МишаИнженер Динамические блоки 15 06.03.2020 16:35
AutoCAD. Можно ли не редактируя и не расчленяя блок подрезать его? Дмитррр Динамические блоки 3 25.05.2018 11:49
Как вставить блок в чертеж по средством lisp? no_ideas LISP 14 12.04.2018 10:31
Как вставить в таблицу динамический блок с параметром видимости и с атрибутами? Profan Программирование 18 06.07.2016 16:41
Как вставить блок в ячейку формулой squadgazzz Динамические блоки 44 13.11.2015 07:17