Как объединить файлы автокад в один
Перейти к содержимому

Как объединить файлы автокад в один

  • автор:

У вас большие запросы!

Точнее, от вашего браузера их поступает слишком много, и сервер VK забил тревогу.

Эта страница была загружена по HTTP, вместо безопасного HTTPS, а значит телепортации обратно не будет.
Обратитесь в поддержку сервиса.

Вы отключили сохранение Cookies, а они нужны, чтобы решить проблему.

Почему-то страница не получила всех данных, а без них она не работает.
Обратитесь в поддержку сервиса.

Вы вернётесь на предыдущую страницу через 5 секунд.
Вернуться назад

объединить dwg файлы

Если точно уверены, что вам их надо собрать в один файл, то можно это сделать через вставку блока. Вставить все по очереди в 0,0 и разбить.

#3 Ответ от Анвар 13 мая 2006г. 10:56:13

Re: объединить dwg файлы

Ольга,
Я впервые работаю с автокадом, можно описать поподробнее. Мне необходимо сохранить координатную привязку(чтобы все слои(файлы)легли на свое место), при вставке блока координаты по ходу теряются.
Как бы это сделать?, заранее спасибо!

#4 Ответ от Ольга_@@@ 13 мая 2006г. 13:20:36

Re: объединить dwg файлы

Зайдите в окно вставки блока (Insert Block). Нажмите кнопку Brouse. и в качестве блока укажите нужный вам файл. Потом снимите все галки Specify On-screen и поставте галку Explode. Все — ОК.

#5 Ответ от Александр И 14 мая 2006г. 04:13:40

Re: объединить dwg файлы

Можно еще проще.
Копируем то, что надо вставить.
Далее «Вставить с исходными координатами».

#6 Ответ от Valery Brelovsky 14 мая 2006г. 10:04:06

  • Valery Brelovsky
  • Активный участник
  • Откуда: Израиль / Север Израиля / Кирь
  • На форуме с 3 июня 2005г.
  • Сообщений: 2,359
  • Спасибо: 19
Re: объединить dwg файлы

> Александр И
Тут что проще трудно сказать. Вставить 10 файлов как блоков не открывая их или открыть 10 файлов скопировать и потом вставить. Как по мне так проще вставить файл как блок не открывая его.

#7 Ответ от топограф 15 мая 2006г. 12:24:43

Re: объединить dwg файлы

> Анвар
Не сомая большая, но все таки глупость — объединять топографические файлы в один. Тем более, если каждый файл — планшет.
Очень большая глупость, когда проектировщик начинает работать в топографическом файле ( очень часто — даже не оставив копии).
И полный «отпад», когда топофайлы начинаю произвольно крутить и масштабировать, подгоняя под свои нужды.
Если топоплан сделан правильно, то он «сдит» на своих координах и при подключении в «0,0» все файлы будут на своих местах.
Проектировщик к СВОЕМУ ФАЙЛУ будет подключать (или отключать) топо по мере необходимости. Таким образом, свой файл не «раздувается» и при глюках топография не теряется и не деформируется. И, при необходимости, всегда можно выдать заказчику объект в координатах, а не от ближайшего фонаря.

Как собрать несколько файлов dwg в один файл dwg?

Форумы CADUser → Autodesk → AutoCAD → Как собрать несколько файлов dwg в один файл dwg?

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 12

#1 Тема от SID 27 сентября 2006г. 09:25:55

Тема: Как собрать несколько файлов dwg в один файл dwg?

У меня 50 акадовских файлов (формат А3).
Мне надо собрать эти форматки в один файл.
Подскажите, пожалуйста, как это сделать быстро.

#2 Ответ от VVA 27 сентября 2006г. 09:37:16

Re: Как собрать несколько файлов dwg в один файл dwg?

В порядке предпочтения
1. _xref (если в один, то потом внедрить)
2. _insert (могут быть артефакты с повторным определением блоков)

#3 Ответ от Vova 28 сентября 2006г. 05:29:50

Re: Как собрать несколько файлов dwg в один файл dwg?

Зачем столько много чертежей грузить в один файл? Гораздо продуктивней оставить как было, но собрать в один фолдер. Или по тематике но не в один, а в несколько файлов, а те-в один фолдер. И похоже, все сделано без использования пространства листа. Без анализа файлов могут быть проблемы, на которые указал VVA. Если в разных файлах одинаковым именем названы разной конфигурации блоки, получится бардак. Если одинаково названы слои, но имеют разные цвета, тоже будет бардак. То-же с масштабом линий, и так далее.

#4 Ответ от SID 12 октября 2006г. 05:58:08

Re: Как собрать несколько файлов dwg в один файл dwg?

> Vova
У меня по проекту 3000 файлов и просмотр затруднителен, когда они в разных файлах. В папках по одной тематики до 80 файлов и смотреть их удобней когда они собраны в один файл. Проблем с блоками, слоями, цвет линии и т.д. нет.

#5 Ответ от SID 12 октября 2006г. 06:00:03

Re: Как собрать несколько файлов dwg в один файл dwg?

> VVA
Спасибо за информацию, но не подходят эти варианты.

#6 Ответ от LeonidSN 12 октября 2006г. 21:37:28

Re: Как собрать несколько файлов dwg в один файл dwg?

#7 Ответ от BigScrew 12 октября 2006г. 22:40:32

Re: Как собрать несколько файлов dwg в один файл dwg?

> SID
Интересно, отчего совет VVA не подходит?

#8 Ответ от SID 13 октября 2006г. 12:49:35

Re: Как собрать несколько файлов dwg в один файл dwg?

> LeonidSN
copy -> paste
долго

#9 Ответ от SID 13 октября 2006г. 12:59:40

Re: Как собрать несколько файлов dwg в один файл dwg?

> BigScrew
1 Вариант – долго растаскивать изображения по чертежу. Мне желательно чтобы чертежи шли друг за другом, и весь этот процесс хотелось бы автоматизировать.
2 Вариант – рутинная работа (долго) copy -> paste.

#10 Ответ от SID 13 октября 2006г. 13:07:43

Re: Как собрать несколько файлов dwg в один файл dwg?

Я так понимаю, нужен макрос для выполнения задуманного.

#11 Ответ от VVA 13 октября 2006г. 14:47:35

Re: Как собрать несколько файлов dwg в один файл dwg?

> SID
Пробуй

;|============================================================================= * функция z-files-in-directory возвращает список файлов находящаяся в заданной * директории * Автор : Зуенко Виталий (ZZZ) * Параметры: * directory путь к папке например "D:\\Мои документы\\ZEF\\Lisp" * pattern шаблон например "*.lsp" или список '("*.dwg" "*.dxf") * nested искать в вложенных папках: t (да) или nil (нет) * Пример вызова: (z-files-in-directory "D:\\Мои документы\\ZEF\\Lisp" "*.dwg" t) (z-files-in-directory "D:\\Мои документы\\ZEF\\Lisp" '("*.dwg" "*.dwt") t) =============================================================================|; (defun z-files-in-directory (directory pattern nested /) (if (not (listp pattern))(setq pattern (list pattern))) (if nested (apply 'append (append (mapcar '(lambda (_pattern) (mapcar '(lambda (f) (strcat directory "\\" f)) (vl-directory-files directory _pattern 1))) pattern) ;_ mapcar (mapcar '(lambda (d) (z-files-in-directory (strcat directory "\\" d) pattern nested)) (vl-remove "." (vl-remove ".." (vl-directory-files directory nil -1)))))) (apply 'append (mapcar '(lambda (_pattern)(mapcar '(lambda (f) (strcat directory "\\" f)) (vl-directory-files directory _pattern 1))) pattern)))) (defun C:LotXref ( / col icol dX dY dYmax fil dwglist pt ptv adoc p1 p2) (vl-load-com) (setq adoc (vla-get-activedocument (vlax-get-acad-object))) (vla-StartUndoMark adoc) (setvar "CMDECHO" 0) (setq col 10 ;_По 10 элементов в строку icol 0 dX 0 dY 0 dYmax 0) (if *LAST_DIR* (setq fil (getfiled "Выберите файл для вставки" *LAST_DIR* "dwg" 16)) (setq fil (getfiled "Выберите файл для вставки" "" "dwg" 16)) ) ;_ end of if (if fil (progn (setq *LAST_DIR* (strcat (vl-filename-directory fil) "\\")) (VL-PROPAGATE '*LAST_DIR*) (setq dwglist (z-files-in-directory (vl-filename-directory fil) '"*.dwg" nil)) (setq pt '(0 0 0) ptv pt) (foreach dwg dwglist (if (= icol col) (setq ptv (list (car pt)(cadr ptv)) ptv (polar ptv (* 0.5 pi)(+ dYmax 50)) dYmax 0 dX 0 dY 0 icol 0)) (setq ptv (polar ptv 0 (+ dX 50))) (princ "\nОбрабатываю ")(princ dwg) (vl-cmdf "_-XREF" "_Attach" dwg ptv "1" "1" "0") (setq xref (vlax-ename->vla-object (entlast))) (vla-GetBoundingBox xref 'p1 'p2) (vla-move xref p1 (vlax-3d-point ptv)) (setq minpt (vlax-safearray->list p1)) (setq maxpt(vlax-safearray->list p2)) (setq dY (abs (- (cadr maxpt)(cadr minpt)))) (setq dX (abs (- (car maxpt)(car minpt)))) (if (or (null dYmax)(< dYmax dY))(setq dYmax dY)) (setq icol (1+ icol))))) (vla-StartUndoMark adoc) (vl-cmdf "_ZOOM" "_ALL") (princ)) (princ "\nНаберите LotXref")

#12 Ответ от Миша 13 октября 2006г. 18:49:45

Re: Как собрать несколько файлов dwg в один файл dwg?

Скопируй этот текст в модуль и запусти макрос "ОбединитьФайлы"

Option Explicit Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" _ (pOpenfilename As OPENFILENAME) As Long Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _ (pOpenfilename As OPENFILENAME) As Long Const OFN_ALLOWMULTISELECT = &H200 Const OFN_EXPLORER = &H80000 'Don 't change Windows's current directory to match the one chosen in the dialog box. Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Const mstrНазваниеПрограммы As String = "Объединение файлов" Dim mlngОтвет As Long Public Sub ОбъединитьФайлы() 'Подпрограмма просит выделить несколько чертежей и вставляет их в виде блоков в текущий чертёж в одну линию Dim intНомЧертежа As Integer, intКолвоЧертежей As Integer Dim colСписокЧертежей As Collection, vСписокФайлов As Variant Dim objБлокЧертежа As AcadExternalReference Dim insertionPnt(0 To 2) As Double Dim vТочка As Variant Dim lngНомОбъекта As Long, objОбъектЧертежа As AcadObject Dim vminExt As Variant, vmaxExt As Variant, blnПризнакПолученияНачКоординат As Boolean Dim dblЛеваяНижняяТочка(0 To 2) As Double, dblПраваяВерхняяТочка(0 To 2) As Double Dim dblШирина As Double, dblВысота As Double On Error GoTo ОбработкаОшибок 'Выведем диалоговое окно открытия файлов и попросим выбрать чертежи Set vСписокФайлов = ShowOpen("Чертежи AutoCAD (*.dwg)" + Chr$(0) + "*.dwg" + Chr$(0) + _ "Чертежи AutoCAD (*.dxf)" + Chr$(0) + "*.dxf" + Chr$(0), "Выбери файлы объединяемых чертежей") If VarType(vСписокФайлов) = vbEmpty Then MsgBox "Наверное выбрано слишком много файлов", vbInformation, mstrНазваниеПрограммы Exit Sub End If 'Получим точку вставки ПолучитьТочкуВставки: vТочка = ThisDrawing.Utility.GetPoint(, "Укажи точку вставки:") If Err.Number <> 0 Then mlngОтвет = MsgBox("Продолжать выбирать точку вставки?", vbYesNo, mstrНазваниеПрограммы) If mlngОтвет = vbYes Then Err.Clear GoTo ПолучитьТочкуВставки ElseIf mlngОтвет = vbNo Then Exit Sub End If End If 'Для каждого чертежа определим ширину и вставим блок For intНомЧертежа = 2 To vСписокФайлов.Count 'Создадим новый блок Set objБлокЧертежа = ThisDrawing.ModelSpace.AttachExternalReference(vСписокФайлов(1) & "\" & vСписокФайлов(intНомЧертежа), vСписокФайлов(intНомЧертежа), vТочка, 1, 1, 1, 0, False) 'Получим координаты крайних точек чертежа objБлокЧертежа.GetBoundingBox vminExt, vmaxExt dblЛеваяНижняяТочка(0) = vminExt(0) dblЛеваяНижняяТочка(1) = vminExt(1) dblПраваяВерхняяТочка(0) = vmaxExt(0) dblПраваяВерхняяТочка(1) = vmaxExt(1) dblШирина = (dblПраваяВерхняяТочка(0) - dblЛеваяНижняяТочка(0)) ' dblВысота = (dblПраваяВерхняяТочка(1) - dblЛеваяНижняяТочка(1)) ThisDrawing.Blocks.Item(objБлокЧертежа.Name).Bind False vТочка(0) = vТочка(0) + dblШирина Next intНомЧертежа MsgBox "Было вставлено " & vСписокФайлов.Count - 1 & " файлов", vbInformation, mstrНазваниеПрограммы Exit Sub ОбработкаОшибок: MsgBox "При объединении файлов произошла ошибка:" & vbLf & _ "номер = " & Err.Number & vbLf & _ "с описанием: " & Err.Description, vbExclamation, mstrНазваниеПрограммы Resume Next End Sub '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@ ' Display and use the File open dialog '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@ Private Function ShowOpen(strFilter As String, strTitle As String) As Variant Dim strTemp As String Dim VertName As OPENFILENAME VertName.lStructSize = Len(VertName) VertName.hwndOwner = ThisDrawing.hWnd VertName.lpstrFilter = strFilter VertName.lpstrFile = Space$(254) VertName.nMaxFile = 255 VertName.lpstrFileTitle = Space$(254) VertName.nMaxFileTitle = 255 VertName.lpstrInitialDir = CurDir VertName.lpstrTitle = strTitle VertName.flags = OFN_ALLOWMULTISELECT + OFN_EXPLORER If GetOpenFileName(VertName) Then strTemp = (Trim(VertName.lpstrFile)) Set ShowOpen = ПолучитьСемействоПодстрок(Left(strTemp, Len(strTemp) - 1), Right(strTemp, 1)) End If End Function Private Function ПодсчётКоличестваЛексем(ByVal strТекст As String, ByVal strРаделитель As String) As Long 'Фунция определения числа появлений строки strРаделитель в строке strТекст (стр. 61 "Программирование в Microsoft Office. Полное руководство по VBA") Dim lngКоличество As Long Dim lngНачПозиция As Long 'Если не задана строка для поиска, то, естественно, 'ничего не может быть найдено, таким образом возвращается 0 If VBA.Len(strТекст) > 0 Then lngНачПозиция = 1 Do lngНачПозиция = VBA.InStr(lngНачПозиция, strТекст, strРаделитель, vbTextCompare) If lngНачПозиция > 0 Then lngКоличество = lngКоличество + 1 lngНачПозиция = lngНачПозиция + VBA.Len(strРаделитель) End If Loop While lngНачПозиция > 0 Else lngКоличество = 0 End If ПодсчётКоличестваЛексем = lngКоличество End Function Private Function ВыделениеЗаданнойПодстроки(ByVal strТекст As String, ByVal lngНомСлова As Long, _ ByVal strРазделители As String) As String 'Функция выделения лексем из списка с разделителями (стр. 85 "Программирование в Microsoft Office. Полное руководство по VBA") 'Список содержится в переменной strТекст 'а параметр lngНомСлова определяет, какой из фрагментов выделять Dim lngНомПозиции As Long Dim lngПрошлаяПозиция As Long Dim lngНомНайденногоСлова As Long Dim lngНайденнаяПозиция As Long lngНомПозиции = 1 lngПрошлаяПозиция = -Len(strРазделители) + 1 lngНомНайденногоСлова = lngНомСлова Do While lngНомНайденногоСлова > 0 lngПрошлаяПозиция = lngНомПозиции lngНайденнаяПозиция = VBA.InStr(lngНомПозиции, strТекст, strРазделители) If lngНайденнаяПозиция > 0 Then lngНомПозиции = lngНайденнаяПозиция + Len(strРазделители) lngНомНайденногоСлова = lngНомНайденногоСлова - 1 Else Exit Do End If Loop 'Если искомой строки не обнаружено, 'Данная итерация не была первой '(в этом случае значения lngНомНайденногоСлова и lngНомСлова были бы равны) 'и lngНомНайденногоСлова > 1, то вы закончили просмотр лексем, не найдя нужную 'Это означает, что номер лексемы был слишком большим 'В таком случае возвращается "" If (lngНайденнаяПозиция = 0) And (lngНомНайденногоСлова <> lngНомСлова) And (lngНомНайденногоСлова > 1) Then ВыделениеЗаданнойПодстроки = "" Else ВыделениеЗаданнойПодстроки = VBA.Mid$(strТекст, lngПрошлаяПозиция, lngНайденнаяПозиция - lngПрошлаяПозиция) End If End Function Private Function ПолучитьСемействоПодстрок(ByVal strТекст As String, ByVal strРаделитель As String) As Variant 'Возвращает семейство, содержащее все лексемы строки, 'используя указанные разделители (стр. 91 "Программирование в Microsoft Office. Полное руководство по VBA") Dim colКоллекцияЛексем As New Collection Dim lngНомЛексемы As Long Dim strВременнаяСтрока As String Dim lngКолвоЛексем As Long Dim strСимвол As String * 1 'Определяется количество лексем в заданной строке lngКолвоЛексем = ПодсчётКоличестваЛексем(strТекст, strРаделитель) 'Цикл по всем лексемам с добавлением их к выходному семейству For lngНомЛексемы = 1 To lngКолвоЛексем strВременнаяСтрока = ВыделениеЗаданнойПодстроки(strТекст, lngНомЛексемы, strРаделитель) colКоллекцияЛексем.Add strВременнаяСтрока, strВременнаяСтрока Next lngНомЛексемы 'Возврат выходного семейства Set ПолучитьСемействоПодстрок = colКоллекцияЛексем End Function

Merge Drawings

Merge Drawings

At present, if you want to combine drawings into one single DWG, it has to be combined manually or by importing each drawing as a block/xref. This Add-in will make your work easier. You can merge drawings multiple times and choose the position of the drawing in the model space. Other features: - You also can convert all raster images to OLE objects in the drawing. - Convert object color to layer color - Export Layer information to a text file - Convert all raster images to OLE objects in the drawing

About This Version

Version 2.2.0, 11/23/2023

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *