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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Подскажите плиз, ести ли программка которая из выбранного элемента чертежа создает новый файл?

Подскажите плиз, ести ли программка которая из выбранного элемента чертежа создает новый файл?

Ответ
Поиск в этой теме
Непрочитано 30.05.2013, 15:07 #1
Подскажите плиз, ести ли программка которая из выбранного элемента чертежа создает новый файл?
vkoap
 
Регистрация: 31.03.2010
Сообщений: 23

Алгоритм: Открыть файл, содержащий кучу всяких схематичных узлов ->запустить эту прогу->она выдаст запрос: Выберете элемент->Выбираю->Enter->Прога копирует (вырезает) выбранный элемент из файла, создает новый файл, вставляет в него этот элемент->сохраняет под именем 001.dwg и возвращается на начало
Просмотров: 4225
 
Непрочитано 30.05.2013, 15:11
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


_wblock
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 30.05.2013, 15:16
#3
vkoap


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


Спасибо конечно, но надо на автомате, я запарюсь 300-500 элементов руками выдирать из большого чертежа через эту команду....
vkoap вне форума  
 
Непрочитано 30.05.2013, 15:31
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


@vkoap,
Что ты подразумеваешь под "элементами"? Определения блоков? Или же любой произвольный набор примитивов? Если второй вариант, то как по твоему компьютер должен догадываться, по какому принципу ему формировать выборки?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2013, 15:33
#5
vkoap


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


hwd - запустить эту прогу->она выдаст запрос: Выберете элемент->Выбираю->Enter->
"любой произвольный набор примитивов" который я выбрал мышей
vkoap вне форума  
 
Непрочитано 30.05.2013, 15:42
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от vkoap Посмотреть сообщение
hwd - запустить эту прогу->она выдаст запрос: Выберете элемент->Выбираю->Enter->
"любой произвольный набор примитивов" который я выбрал мышей
И для чего же запускать прогу? "выбрал мышей", ctrl + c - _new - ctrl + v.. Чего, нужно спецпрограмму написать для этого несложного действа?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 30.05.2013, 15:44
#7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от vkoap Посмотреть сообщение
"любой произвольный набор примитивов" который я выбрал мышей
ну и
Цитата:
Сообщение от hwd
как по твоему компьютер должен догадываться, по какому принципу ему формировать выборки?
тогда только так
Цитата:
Сообщение от vkoap
я запарюсь 300-500 элементов руками выдирать из большого чертежа
Тем более, что имена аля "001.dwg" не особо-то информативны...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.05.2013 в 15:50.
hwd вне форума  
 
Автор темы   Непрочитано 31.05.2013, 09:45
#8
vkoap


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


AlexV, HWD- 500 сборок на одном чертеже, представь Выбрать каждый, ctrl + c - _new - ctrl + v, сохранить, ввести имя, не забыть какое имя вводил до этого, Сохранить и так 500 или более раз, скажи просто? a имена пофику лишь бы подряд, потом накину в инструментальную палитру и усе
vkoap вне форума  
 
Непрочитано 31.05.2013, 10:02
#9
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Как то делал что-то похожее для поэтажных планов, возможно Вам пригодится. Смотреть тут: http://experement.spb.ru/wiki/doku.php/copy2dxf
Boxa вне форума  
 
Автор темы   Непрочитано 31.05.2013, 10:07
#10
vkoap


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


Воха - ща гляну
vkoap вне форума  
 
Непрочитано 31.05.2013, 10:37
#11
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


@vkoap,
Ты как-то упорно не читаешь то, что написано...
Пишешь:
Цитата:
я запарюсь 300-500 элементов руками выдирать
Но кроме тебя, никто не знает логику, в соответствии с которой следует формировать выборки (раз уж нет чёткого критерия фильтрации). Т.о. Тебе в любом случае придётся все наборы формировать вручную. Автоматом сохранять их в новых файлах, генерируя новые имена для создаваемых чертежей - это не проблема и легко решается. Однако основная проблема так и остаётся: многократная выборка вручную, которая тебя, собственно, и напрягает. Если бы был критерий фильтрации (например, примитивы объединены в группы, или находятся в составе вхождения блока, или находятся на нужном слое, или и т.д., и т.п.) - тогда другое дело, можно было бы автоматом всё раскидать. А вообще, чтобы не наступать на такие грабли, нужно планировать структуру документа ещё до того, как садишься чертить.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 31.05.2013, 23:17
#12
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Можно попробовать это сделать перебором объектов
(напр. на C#, простейший пример для блоков,
остальные типы закомментированы)
Изначально лучше зуммировать текущую вкладку или модель вручную
Код:
[Выделить все]
        public static SelectionSet GetObjectsSelection(Editor ed)
        {

            string ctab = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("CTAB").ToString();


            TypedValue[] dxfcodes = new TypedValue[2]
            {
                new TypedValue(0, /*"CIRCLE, ARC,LINE,*POLYLINE, */ "INSERT"),
                new TypedValue(410, ctab) 
            };

            SelectionFilter filter = new SelectionFilter(dxfcodes);

            PromptSelectionResult psr = ed.SelectAll( filter);

            if (psr.Status != PromptStatus.OK)

                return null;

            return psr.Value;

        }


        [CommandMethod("mulw", CommandFlags.Session | CommandFlags.Transparent)]
        public static void testWblockObjects()
        {
            bool isOk = true;
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;
            
            string currDir = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("DWGPREFIX").ToString();

            int start = 1;
            using (DocumentLock docklock = doc.LockDocument())
            {
                try
                {
                    using (Transaction tr = db.TransactionManager.StartTransaction())
                    {
                        SelectionSet sset = GetObjectsSelection(ed);
                        foreach (SelectedObject sobj in sset)
                        {
                            ObjectIdCollection ids = new ObjectIdCollection();
                            DBObject obj = tr.GetObject(sobj.ObjectId, OpenMode.ForRead,false,false);
                            ids.Add(obj.ObjectId);
                            if (obj == null) return;
                            using (Database extdb = new Database(true, false))
                            {
                                ObjectId extBtrId = extdb.CurrentSpaceId;
                                db.WblockCloneObjects(ids, extBtrId, new IdMapping(), DuplicateRecordCloning.MangleName, false);
                                extdb.RetainOriginalThumbnailBitmap = true;
                                string dwgname = Path.Combine(currDir, "00" + start.ToString() + ".dwg");
                                extdb.SaveAs(dwgname, false, DwgVersion.AC1800, extdb.SecurityParameters);
                                
                            }
                            start += 1;
                        }

                        tr.Commit();
                    }
                    isOk = true;
                }
                catch (System.Exception ex)
                {
                    isOk = false;
                    ed.WriteMessage(ex.Message + "\n" + ex.StackTrace);
                }
                finally
                {
                    if (isOk)
                    {
                        ed.WriteMessage("\nProgram ended up with success\n");
                    }
                    else
                    {
                        ed.WriteMessage("\nProgram failed");
                    }
                }
            }
        }
Олег (jr.) вне форума  
 
Непрочитано 05.06.2013, 18:41
1 | #13
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,187


Цитата:
Выбрать каждый, ctrl + c - _new - ctrl + v, сохранить, ввести имя, не забыть какое имя вводил до этого, Сохранить и так 500 или более раз
По каждому нажатию CTRL-С Акад формирует в системной папке TEMP временный блок с уникальным именем типа A$C4B1362FA.dwg. По каждому следующему нажатию прежний файл удаляется, и создается новый с другим именем. Но как восстанавливать удаленные файлы - кажется, всем известно.
Цитата:
a имена пофику лишь бы подряд
Отсортировать полученные с помощью CTRL-С файлы по времени создания, потом переименовать подряд типа блок001.dwg, блок002.dwg каким-нибудь файл-менеджером, и все тут.

Последний раз редактировалось kp+, 05.06.2013 в 18:50.
kp+ вне форума  
 
Непрочитано 05.06.2013, 18:51
#14
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от kp+ Посмотреть сообщение
По каждому нажатию CTRL-С Акад формирует в системной папке TEMP временный блок с уникальным именем типа A$54454547.dwg. Удаляются эти файлы только после закрытия проги (или чертежа, откуда скопированы, точно не помню).
Век живи - век учись!
__________________
Алексей
bargool вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Подскажите плиз, ести ли программка которая из выбранного элемента чертежа создает новый файл?