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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > С# + AutoCAD для "носорогов".

С# + AutoCAD для "носорогов".

Ответ
Поиск в этой теме
Непрочитано 08.05.2014, 16:33 #1
С# + AutoCAD для "носорогов".
alex8888
 
Инженер
 
Deutschland
Регистрация: 27.04.2009
Сообщений: 208

Как мне справедливо намекнули в соседней теме, VB.Net немного отличается от шарпея, поэтому предлагаю здесь уважаемым гуру высказать свое "фи" не менее уважаемым чайникам и поиздеваться над ними.

Итак у меня возникло желание создать примитив посредством программы на C#. В качестве примера подвернулся код для создания команды рисования линии - проще уж совсем некуда:
Код:
[Выделить все]
 01	#region "Imports"
02	//system
03	using System;
04	using System.Collections.Generic;
05	using System.Text;
06	using System.IO;
07	using System.Threading;
08	using System.Globalization;
09	using System.Runtime.InteropServices;
10	using System.Diagnostics;
11	using System.Collections;
12	//acad
13	using Autodesk.AutoCAD.ApplicationServices;
14	using Autodesk.AutoCAD.DatabaseServices;
15	using Autodesk.AutoCAD.EditorInput;
16	using Autodesk.AutoCAD.Runtime;
17	using Autodesk.AutoCAD.Geometry;
18	#endregion
19	 
20	 
21	namespace AddLine
22	{
23	    public class Class1
24	    {
25	        [CommandMethod("AddLine")]
26	        public static void AddLine()
27	 
28	        {
29	            double x1; double y1; double x2; double y2;
30	            x1 = 0; y1 = 0; x2 = 200; y2 = 400;
31	            //Получение текущего документа и базы данных чертежа
32	            Document acDoc = Application.DocumentManager.MdiActiveDocument;
33	            Database acCurDb = acDoc.Database;
34	            //Начало транзакции
35	            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
36	            {
37	                //Открыть таблицу блоков для чтения
38	                BlockTable acBlkTbl;
39	                acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
40	                                                  OpenMode.ForRead) as BlockTable;
41	 
42	                //Открыть таблицу блоков пространства модели для записи
43	                BlockTableRecord acBlkTblRec;
44	                acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
45	                                                     OpenMode.ForWrite) as BlockTableRecord;
46	 
47	                // Создание линии по точкам x1,y1 и x2,y2
48	                Line acLine = new Line(new Point3d(x1, y1, 0),new Point3d(x2, y2, 0));
49	                acLine.SetDatabaseDefaults();
50	 
51	                // Добавление нового объекта в базу и транзакция
52	                acBlkTblRec.AppendEntity(acLine);
53	                acTrans.AddNewlyCreatedDBObject(acLine, true);
54	 
55	                // Сохранение нового объекта в базе данных чертежа
56	                acTrans.Commit();
57	            }
58	        }
59	    }
60	}
При жестком указании координат работает на ура.

Boxa показал как сделать, чтобы точки начала-конца линии указывались путем "тыка" на чертеже:

Код:
[Выделить все]
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using App = Autodesk.AutoCAD.ApplicationServices;
using cad = Autodesk.AutoCAD.ApplicationServices.Application;
using Db = Autodesk.AutoCAD.DatabaseServices;
using Ed = Autodesk.AutoCAD.EditorInput;
using Gem = Autodesk.AutoCAD.Geometry;
using Rtm = Autodesk.AutoCAD.Runtime;

// [assembly: Rtm.CommandClass(typeof(MyClassSerializer.Commands))]

namespace AddLine
{
    public class Commands
    {
        [Rtm.CommandMethod("AddLine")]
        static public void AddLine()
        {
            // Получение текущего документа и базы данных
            App.Document acDoc = App.Application.DocumentManager.MdiActiveDocument;
            Db.Database acCurDb = acDoc.Database;

            Ed.PromptPointOptions p1Opt = new Ed.PromptPointOptions("\nУкажите первую точку:");
            Ed.PromptPointResult p1Res = acDoc.Editor.GetPoint(p1Opt);
                if (p1Res.Status != Ed.PromptStatus.OK)
                    return;

            Ed.PromptPointOptions p2Opt = new Ed.PromptPointOptions("\nУкажите вторую точку:");
            p2Opt.BasePoint = p1Res.Value;
            p2Opt.UseBasePoint = true;
            Ed.PromptPointResult p2Res = acDoc.Editor.GetPoint(p2Opt);
            if (p2Res.Status != Ed.PromptStatus.OK)
                return;           
            
            // старт транзакции
            using (Db.Transaction acTrans = acCurDb.TransactionManager.StartOpenCloseTransaction())
            {
                // Открытие таблицы Блоков для чтения
                Db.BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, Db.OpenMode.ForRead) as Db.BlockTable;

                // Открытие записи таблицы Блоков пространства Модели для записи
                Db.BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl[Db.BlockTableRecord.ModelSpace],
                                                                                Db.OpenMode.ForWrite) as Db.BlockTableRecord;
                // Создание отрезка
                Db.Line acLine = new Db.Line(p1Res.Value, p2Res.Value);
                acLine.SetDatabaseDefaults();
                // Добавление нового объекта в запись таблицы блоков и в транзакцию
                acBlkTblRec.AppendEntity(acLine);
                acTrans.AddNewlyCreatedDBObject(acLine, true);
                // Сохранение нового объекта в базе данных
                acTrans.Commit();
            }
        }
    }
}
При этом у меня не совсем вышло, выдает ошибку на строке
Цитата:
using System.Threading.Tasks;
- нет такой сборки (где ее искать?)

Остался вопрос как вбивать координаты точек при выполнении команды вручную или передать в качестве параметров из другой команды/программы или диалогового окна? Типа выполнить "AddLine(0,0,100,100), где числа в скобках - точки x1,y1,x2,y2.

Кому то это просто, а у меня что то не ухватывается способ достичь результата.
Просмотров: 11485
 
Непрочитано 08.05.2014, 16:48
#2
Дима_

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


ИХМО Ваши вопросы от незнания C# как такового - к автокаду они пока мало относятся.
з.ы. Я в общем не так категоричен - для меня точно нет разницы на каком .Net языке посмотреть метод решения проблемы под автокад. Тем более у C# и VB семантика абсолютно одинаковая - можете погуглить есть автоматизированные переводчики кода из одного в другое - можно туда и обратно перевсети - код не изменится - то есть практически это два одинаковых языка просто различный синтаксис (алфавит) и правила оформления (группировки).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 08.05.2014, 17:13
#3
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Почему же тогда на System.Threading.Tasks ругается? У меня VS-Express 2012. В помощи Task - класс есть, а в программе нет.

Цитата:
к автокаду они пока мало относятся
То есть рисование примитивов в автоКаде - это не относится к последнему??
Я специально выбрал, что попроще.
Отвлеченные программы как оказалось составлять не так сложно, нежели сделать библиотеку для Када. По крайней мере для меня в данный момент.
Практически от чего то оттолкнуться - дальше по течению вынесет.
alex8888 вне форума  
 
Непрочитано 08.05.2014, 17:15
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Да, согласен с Дима_, тут еще учиться и учиться...
Цитата:
Сообщение от alex8888 Посмотреть сообщение
- нет такой сборки (где ее искать?)
А не надо ее искать, она тут лишняя. Удалить/закомментировать.
Цитата:
Сообщение от alex8888 Посмотреть сообщение
Остался вопрос как вбивать координаты точек при выполнении команды вручную или передать в качестве параметров из другой команды/программы или диалогового окна? Типа выполнить "AddLine(0,0,100,100), где числа в скобках - точки x1,y1,x2,y2.
Выносите построение отрезка в отдельный метод с параметрами. Командный метод можно будет тогда переписать, чтобы после получения точек вызывался метод с параметрами.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 08.05.2014, 17:18
#5
Boxa

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


Цитата:
Сообщение от alex8888 Посмотреть сообщение
При этом у меня не совсем вышло, выдает ошибку на строке
Цитата:
using System.Threading.Tasks;
- нет такой сборки (где ее искать?)
Тебе эти сборки не нужны, просто закоментируй их.
Код:
[Выделить все]
using System;
using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

Цитата:
Сообщение от alex8888 Посмотреть сообщение
Остался вопрос как вбивать координаты точек при выполнении команды вручную
Так же как и при рисовании командой _line? т.е.:
0,0,0 Enter
10,10,0 Enter
тут видео: http://youtu.be/tKnqsROP8bg

Дима_, Полностью согласен.
И в своем шутливом замечании я именно шутил, а не призвал еще одну тему открывать.
Boxa вне форума  
 
Автор темы   Непрочитано 08.05.2014, 17:32
#6
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Цитата:
Сообщение от Boxa Посмотреть сообщение
Тебе эти сборки не нужны, просто закоментируй их.

Дима_, Полностью согласен.
И в своем шутливом замечании я именно шутил, а не призвал еще одну тему открывать.

1. Для чего то ты все же вставил эту сборку. У меня такой не было.

2. Может кому понадобится именно C#, а не VB. Даже при наличии конверторов и похожести.

Код сработал и без Task. Это понятно. Спасибо.

Следующий шаг
Цитата:
Выносите построение отрезка в отдельный метод с параметрами.
Если будет маленький пример на основе приведенных кодов - в смысле указать, где принципиальные отличия, что добавить, что убрать - буду очень признателен.
Для первой поры пойдет. Я уже смогу строить также и окружности и прочие элементы.
Все таки Шарп "немного" непривычен после Лиспа.
alex8888 вне форума  
 
Непрочитано 08.05.2014, 17:39
#7
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


ну, с почином. торжественное событие для начинающих шарпистов. собственная тема! Жаль hwd "не дожил" до этого момента!
gomer вне форума  
 
Автор темы   Непрочитано 08.05.2014, 17:42
#8
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Цитата:
Сообщение от gomer Посмотреть сообщение
ну, с почином. торжественное событие для начинающих шарпистов. собственная тема! Жаль hwd "не дожил" до этого момента!
Издеваешься
А почему hwd не дожил?

Кстати, сам пользуешься C#?
alex8888 вне форума  
 
Непрочитано 08.05.2014, 17:42
#9
Boxa

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


Цитата:
Сообщение от gomer Посмотреть сообщение
ну, с почином. торжественное событие для начинающих шарпистов. собственная тема! Жаль hwd "не дожил" до этого момента!
Он до целого отдельного форума дожил =) Тут: http://adn-cis.org/forum/index.php?board=4.0
Там теперь и сидит =)


alex8888, вообще то, это азы.
Код:
[Выделить все]
 
using App = Autodesk.AutoCAD.ApplicationServices;
using cad = Autodesk.AutoCAD.ApplicationServices.Application;
using Db = Autodesk.AutoCAD.DatabaseServices;
using Ed = Autodesk.AutoCAD.EditorInput;
using Gem = Autodesk.AutoCAD.Geometry;
using Rtm = Autodesk.AutoCAD.Runtime;

namespace AddLine
{
    public class Commands
    {
        [Rtm.CommandMethod("AddLine")]
        static public void AddLine()
        {
            // Получение текущего документа и базы данных
            App.Document acDoc = App.Application.DocumentManager.MdiActiveDocument;
            Db.Database acCurDb = acDoc.Database;

            Ed.PromptPointOptions p1Opt = new Ed.PromptPointOptions("\nУкажите первую точку:");
            Ed.PromptPointResult p1Res = acDoc.Editor.GetPoint(p1Opt);
                if (p1Res.Status != Ed.PromptStatus.OK)
                    return;

            Ed.PromptPointOptions p2Opt = new Ed.PromptPointOptions("\nУкажите вторую точку:");
            p2Opt.BasePoint = p1Res.Value;
            p2Opt.UseBasePoint = true;
            Ed.PromptPointResult p2Res = acDoc.Editor.GetPoint(p2Opt);
            if (p2Res.Status != Ed.PromptStatus.OK)
                return;

            AddLineToModalSpace(p1Res.Value, p2Res.Value);
        }


        static private void AddLineToModalSpace(Gem.Point3d p1, Gem.Point3d p2)
        {
            // Получение текущего документа и базы данных
            App.Document acDoc = App.Application.DocumentManager.MdiActiveDocument;
            Db.Database acCurDb = acDoc.Database;
            // старт транзакции
            using (Db.Transaction acTrans = acCurDb.TransactionManager.StartOpenCloseTransaction())
            {
                // Открытие таблицы Блоков для чтения
                Db.BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, Db.OpenMode.ForRead) as Db.BlockTable;

                // Открытие записи таблицы Блоков пространства Модели для записи
                Db.BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTbl[Db.BlockTableRecord.ModelSpace],
                                                                                Db.OpenMode.ForWrite) as Db.BlockTableRecord;

                // Создание отрезка 
                Db.Line acLine = new Db.Line(p1, p2);
                acLine.SetDatabaseDefaults();
                // Добавление нового объекта в запись таблицы блоков и в транзакцию
                acBlkTblRec.AppendEntity(acLine);
                acTrans.AddNewlyCreatedDBObject(acLine, true);
                // Сохранение нового объекта в базе данных
                acTrans.Commit();
            }
        }
    }
}
Boxa вне форума  
 
Автор темы   Непрочитано 08.05.2014, 17:51
#10
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Цитата:
Сообщение от Boxa Посмотреть сообщение
вообще то, это азы.
Я и не говорил ничего против. Однако использование шарпа в каде уже не совсем азы. Другое дело оконные или терминальные приложения.

За код спасибо. Теперь многое прояснилось.
За ссылку отдельное спасибо. А то я потерял нить от hwd. На прежнем месте его нет. Теперь снова есть!
alex8888 вне форума  
 
Непрочитано 08.05.2014, 21:44
#11
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Издеваешься
Совсем .Net
Такой темы мне очень не хватало, когда я пытался освоить это дело.
Unfortunately (вот нравится это слово) ситуация сложилась так, что теперь мне .нет, как козе гравицапа
gomer вне форума  
 
Автор темы   Непрочитано 09.05.2014, 00:34
#12
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Цитата:
Сообщение от gomer Посмотреть сообщение
Unfortunately (вот нравится это слово) ситуация сложилась так, что теперь мне .нет, как козе гравицапа
чего?
alex8888 вне форума  
 
Автор темы   Непрочитано 14.05.2014, 09:35
#13
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Ребята, подскажите, пожалуйста не в службу, а в дружбу.
Вот например такой список:
Код:
[Выделить все]
 ((-1 . <Objektname: 7ffffb36510>) (0 . "TEXT") (330 . <Objektname: 7ffffb039f0>) (5 . "D4BA9") (100 . "AcDbEntity") (67 . 0) (410 . "Model")
 (8 . "schrift") (100 . "AcDbText") (10 11247.9 -6712.83 0.0) (40 . 30.0) (1 . "Stutzen D=168.3x6 auf Kopf d=219.1x6") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD")
(71 . 0) (72 . 4) (11 11582.0 -6702.33 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
каким образом обрабатывается с помощью средств C# и Автокад? Как будет выглядеть команда для создания объекта по такому списку?
Это чисто спортивный интерес. Есть ли какое преимущество в таком подходе к созданию и манипулированию объектами?
Есть тут ограничения, подводные камни и тп? Интересно ваше мнение.
alex8888 вне форума  
 
Непрочитано 14.05.2014, 10:33
#14
Дима_

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


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Как будет выглядеть команда для создания объекта по такому списку?
Боюсь никак (можно извратиться и послать "команду" лиспу из С# чтоб он создал примитив) - это списочное лисп-представление DXF кодов примитива.
Цитата:
Сообщение от alex8888 Посмотреть сообщение
Интересно ваше мнение.
Вам не хватает теоритической подготовки.
з.ы. формально можно передать этот список .Net плагину, обработать его и на его основе что-то создать - но это как шуроповертом гвозди забивать.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 14.05.2014, 10:39
#15
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Цитата:
Сообщение от Дима_ Посмотреть сообщение
можно извратиться и послать "команду" лиспу из С# чтоб он создал примитив
Примерчик не подкинешь? Если не в лом, конечно.

Offtop:
Цитата:
Вам не хватает теоритической подготовки.
Ее и не будет, если ничего не начинать делать.
alex8888 вне форума  
 
Непрочитано 14.05.2014, 12:08
#16
Дима_

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


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Если не в лом, конечно
Заниматься НИКОМУ не нужным делом - чтоб показать что это таки можно - примените этот список к функции entmakex - и она создаст Вам примитив (если коды взяты из тойже сессии и пр). Хотите из под C# удалите коды с примитивами (-1, 330 и др.) - и передайте список строкой.
Цитата:
Сообщение от alex8888 Посмотреть сообщение
Ее и не будет, если ничего не начинать делать.
Но и бредовые телодвижения ее не улучшают.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.05.2014, 12:22
#17
Boxa

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


Я в С# вообще новичок, но написав эту фигню стер к чертям. Это бред сивой кобылы. Никакого отношения к программированию под акад не имеет.
90% кода, это парсинг строки и вычленение требуемых значений, которые потом задаются вновь создаваемому примитиву.

В общем дурь. ИМХО я понимаю что Вы, Алекс8888, привыкли писать на ЛИСП, но если Вы взялись изучать новую платформу, то изучайте именно ее, а не пытайтесь писать на лисп используя синтаксис С#
Boxa вне форума  
 
Автор темы   Непрочитано 14.05.2014, 12:35
#18
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Boxa, спасибо.
Действительно, до сих пор все у меня на лиспе, но есть задумки, с которыми лисп не справится. Поэтому хотелось бы, чтобы была обратная связь - прога на c# или т.п. и плюс ко всему дополнительно построение в автокад. Поэтому и смотрю, а не будет ли такой подход лучше, пусть хоть и через задний проход. Пусть идеи бредовые - мне же только для себя и нужно - за звездами гнаться не за чем.
alex8888 вне форума  
 
Непрочитано 14.05.2014, 13:25
1 | #19
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Ребята, подскажите, пожалуйста не в службу, а в дружбу.
Вот например такой список:
Код:
[Выделить все]
 ((-1 . <Objektname: 7ffffb36510>) (0 . "TEXT") (330 . <Objektname: 7ffffb039f0>) (5 . "D4BA9") (100 . "AcDbEntity") (67 . 0) (410 . "Model")
 (8 . "schrift") (100 . "AcDbText") (10 11247.9 -6712.83 0.0) (40 . 30.0) (1 . "Stutzen D=168.3x6 auf Kopf d=219.1x6") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD")
(71 . 0) (72 . 4) (11 11582.0 -6702.33 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
каким образом обрабатывается с помощью средств C# и Автокад?
В контексте NET это будет не список а объект типа ResultBuffer. Получить из объекта его можно с помощью P/Invoke: http://adn-cis.org/zerkalnoe-otobraz...-(dbtext).html
Внутри он содержит коллекцию объектов TypedValue - аналог точечной пары на лиспе.
Цитата:
Сообщение от alex8888 Посмотреть сообщение
Как будет выглядеть команда для создания объекта по такому списку?

Цитата:
Сообщение от alex8888 Посмотреть сообщение
Есть ли какое преимущество в таком подходе к созданию и манипулированию объектами?
Если получится создать - опишитесь, мне будет интересно. А там уже обсудим преимущества и недостатки
Цитата:
Сообщение от alex8888 Посмотреть сообщение
Есть тут ограничения, подводные камни и тп?
Одно большое ограничение - нет нормальных NET методов для получения entget - представления. Поэтому, приходится извращаться с P/Invoke. Про создание объекта из entget - представления я пока не слышал, и мне не нужно было это ни разу.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 15.05.2014, 11:00
#20
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Цитата:
Сообщение от Do$ Посмотреть сообщение
Если получится создать - опишитесь, мне будет интересно. А там уже обсудим преимущества и недостатки
С применением SendStringToExecute показалось вполне приемлемым и не сложным:
Код:
[Выделить все]
 string x="'((0 . \"circle\")(62 . 1)(10 0 0 0)(40 . 300))";
            string y="'((0 . \"circle\")(62 . 8)(10 0 0 0)(40 . 500))";
            acDoc.SendStringToExecute("(entmake" + x + ") ", true, false, false);
            acDoc.SendStringToExecute("(entmakex" + y + ") ", true, false, false);
Здесь как пример прорисовка окружностей с заданными значениями.
Вместо x и y можно будет подставить нужный список, который можно создать на основе данных, полученных из диалогового окна.
Кроме того как я понял, таким образом вообще можно вызывать на выполнение лисповские функции, что на первых порах стало бы большим подспорьем, потому что переписывать все на шарп довольно-таки затратно.
alex8888 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > С# + AutoCAD для "носорогов".



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными Андрей Х. AutoCAD 24 27.05.2015 10:17
Интеграция Autodesk СПДС в AutoCAD 2012 bolotov Прочее. Программное обеспечение 24 07.01.2013 20:22
Превратить AutoCAD Map 3D в обычный AutoCAD (по панелям) gizmo_zx Вертикальные решения на базе AutoCAD 3 24.08.2011 11:25
AutoCAD 2009/2010 в ряде вопросов серьёзно курят перед AutoCAD 2007/2008 hwd Баги и пожелания в Autodesk 30 10.11.2010 12:56
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27