Последние сообщения

Последние сообщения

Страницы: 1 2 3 [4] 5 6 ... 10
31
AutoCAD .NET API / Re: Таблица совместимости версий AutoCAD и .NET Framework
« Последний ответ от avc 22-03-2024, 15:41:10 »
Похоже нарочно столько релизов с номером 24 делали, чтоб подогнать к 2025=R25  :D
Вангую: 2026 будет R26 без всяких 25.01. И больше никакой путаницы. Одобряю ;)
32
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от Александр Ривилис 21-03-2024, 15:36:58 »
Скажите пожалуйста, а можно не открывая напрямую чертеж, узнать, есть ли в нем proxi. И если есть, то тогда открыть?
Нет. Более того даже открытие базы без открытия в редакторе AutoCAD не то, что нужно, т.к. открытие в редакторе AutoCAD может приводить к замене proxy на нормальные примитивы при подгрузке соответствующих arx/dbx-файлов.
33
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от alz 21-03-2024, 13:49:24 »
Ну насколько я знаю определить есть что-то в чертеже или нет можно только перебором по базе, соответственно как минимум нужно открыть базу чертежа, код я чуть выше выкладывал. Вчера как раз понадобилось пакетно чертежи обработать, так что код проверил и чутка изменил.
34
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от Захаров Максим 21-03-2024, 13:40:13 »
Скажите пожалуйста, а можно не открывая напрямую чертеж, узнать, есть ли в нем proxi. И если есть, то тогда открыть?
35
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от Захаров Максим 20-03-2024, 08:28:34 »
Спасибо, за ответ Александр. Еще немного попробую, не получится, брошу тогда это "гиблое" дело
36
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от Александр Ривилис 19-03-2024, 17:21:22 »
Подскажите пожалуйста, есть возможность запустить ExplodeProxy на множестве файлов dwg. т.е. создать цикл открыть файл, запустить EXPLODEALLPROXY потом REMOVEALLPROXY, сохранить, закрыть файл.
Если переписать сами EXPLODEALLPROXY и REMOVEALLPROXY, то можно. Но я не рекомендую это делать. Причины объяснять не буду - просто запомните мое мнение. Все остальные варианты использования пакетного запуска ненадежные. Что касается accoreconsole, то в нее arx-файл не грузится и его следует переименовать в  crx-файл (поменять расширение). В этом случае есть шанс, что сработает.
37
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от alz 19-03-2024, 14:25:25 »
Недавно обсуждали, SendStringToExecute это асинхронный метод, команда запустилась и программа не дожидаясь ее окончания сразу переходит к закрытию файла, ну и когда я подобным методом считывал данные из файлов сохранял я через базу данных а не документ, примерно вот такой конструкцией, но тут ориентировочно, давно в эту степь не лазил, аргументы надо бы проверить и не факт что в открытой так базе данных можно использовать командные методы, имхо тут все же лучше через консоль делать, экземпляров консоли параллельно можно открывать несколько, отрабатываю быстро.

Код - C# [Выбрать]
  1. using (Database db = new Database(false, true))
  2. {
  3.     db.ReadDwgFile(fileName, FileShare.ReadWrite, true, String.Empty);
  4.     //действия
  5.     //
  6.     db.SaveAs(fileName, DwgVersion.Current);
  7. }

38
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от Захаров Максим 19-03-2024, 14:09:38 »
Спасибо, я посмотрю
Я пытался вот так решить, но на этапе сохранения вылезает ошибка
Код - vb.net [Выбрать]
  1. <CommandMethod("ExpodeProxyObjectUser")>
  2.     Public Sub ExpodeProxyObjectUser()
  3.         '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  4.         '1. получем доступ к пользовательскому каталогу
  5.         'временный каталог для автосохранения таблицы
  6.         Dim TempDir As String = FuncFiles.FuncGetAbsoluteFolderPathName("Выберите папку", 1)
  7.         '=============================================================================================
  8.         'читаем файлы dwg
  9.         If IO.Directory.Exists(TempDir) = True Then
  10.             Try
  11.                 'создаем дерево в TreeView
  12.                 For Each fileDWG As String In Directory.GetFiles(TempDir)
  13.                     Dim ext As String = Path.GetExtension(fileDWG)
  14.                     If ext Like ".dwg" Then
  15.                         Dim acDoc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(fileDWG, False)
  16.                         Dim docs As DocumentCollection = Application.DocumentManager
  17.                         Dim db As Database = acDoc.Database()
  18.                         acDoc.SendStringToExecute("EXPLODEALLPROXY ", False, False, True)
  19.                         acDoc.SendStringToExecute("REMOVEALLPROXY ", False, False, True)
  20.                         'If acDoc.IsReadOnly Then
  21.                         '    acDoc.CloseAndDiscard()
  22.                         'Else
  23.                         '    If docs.MdiActiveDocument <> acDoc Then
  24.                         '        docs.MdiActiveDocument = acDoc
  25.                         '    End If
  26.                         '    Dim isModified As Integer = System.Convert.ToInt32(Application.GetSystemVariable("DBMOD"))
  27.                         '    If isModified = 0 Then
  28.                         '        acDoc.SendStringToExecute("^C^C ", False, False, True)
  29.                         '        acDoc.CloseAndDiscard()
  30.                         '    Else
  31.                         '        acDoc.SendStringToExecute("^C^C ", False, False, True)
  32.                         '        acDoc.CloseAndSave(acDoc.Name)
  33.                         '    End If
  34.                         'End If
  35.                     End If
  36.                 Next
  37.             Catch ex As IOException
  38.             Catch ex As UnauthorizedAccessException
  39.             Catch ex As ArgumentException
  40.             End Try
  41.         End If
  42.     End Sub
39
AutoCAD .NET API / Re: Работа с ExplodeProxy
« Последний ответ от alz 19-03-2024, 12:32:38 »
По идее через accoreconsole можно сделать.
у меня было примерно вот так реализовано

Код - C# [Выбрать]
  1.            
  2.             using (StreamWriter writer = new StreamWriter("D:\\print.scr", false))
  3.             {
  4.                 //загрузка приложения
  5.                 writer.WriteLine("(arxload \"Приложение\" nil)");
  6.                 writer.WriteLine("команда");
  7.                 writer.WriteLine("_close");
  8.                 writer.WriteLine("_y");
  9.             }
  10.             //запускаем скрипт
  11.             Process start = new Process();
  12.             start.StartInfo.Arguments = "/i " + FileName +  "/s D:\\print.scr";
  13.             start.StartInfo.FileName = accoreconsolePath;
  14.             start.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  15.             start.Start();
  16.             //ждем пока отработает
  17.             start.WaitForExit();
  18.             File.Delete("D:\\print.scr");

Правда были проблемы с кириллицей в названии или в пути к чертежу, решил копированием файла во временный каталог  с названием без кирилицы, и если нужно сохранить то заменял оригинальный файл обработанной копией.
В чате мне объяснили что проблема в кодировке файла скрипта(фиг знает причем если кирилицы в скрипте нет), но тут я ничего не проверял так как все и так работает.
40
AutoCAD .NET API / Работа с ExplodeProxy
« Последний ответ от Захаров Максим 19-03-2024, 10:53:49 »
Добрый день.
Подскажите пожалуйста, есть возможность запустить ExplodeProxy на множестве файлов dwg. т.е. создать цикл открыть файл, запустить EXPLODEALLPROXY потом REMOVEALLPROXY, сохранить, закрыть файл. Я что то попытался, но вот закрытие файла не работает. Может уже есть готовое решение?
Страницы: 1 2 3 [4] 5 6 ... 10