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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > "VB.net для чайников". Вопросы программирования под Autocad и ©.

"VB.net для чайников". Вопросы программирования под Autocad и ©.

Ответ
Поиск в этой теме
Непрочитано 13.12.2010, 10:58
"VB.net для чайников". Вопросы программирования под Autocad и ©.
AlexV
 
Инженер
 
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,685

Есть у нас популярная тема: Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) .. Есть, конечно, и это и, но хотелось бы иметь аналогичную возможность задавать тупые (для начала очень тупые) вопросы по VB.Net здесь..
Простейший пример из ссылки в теме про миграцию VBA - Net посмотрел..
Имеем проект - "библиотеку классов", с подключенными ссылками (на рисунке).



Имеем код, который при загрузке построенной dll-ки "добавляет" в автокад команду mAddPnt, создающую точку..
Код:
[Выделить все]
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
Public Class AdskCom
    Public ReadOnly Property ThisDrawing() As AcadDocument
        Get
            Return Autodesk.AutoCAD _
            .ApplicationServices.Application. _
            DocumentManager.MdiActiveDocument. _
            AcadDocument
        End Get
    End Property
    <Autodesk.AutoCAD.Runtime.CommandMethod("mAddPnt")> _
    Public Sub mAddPnt()
        On Error Resume Next
        Dim location(0 To 2) As Double
        location(0) = 5.0# : location(1) = 5.0# : location(2) = 0.0#
        location = ThisDrawing.Utility.GetPoint(, "Укажите точку")
        ThisDrawing.ModelSpace.AddPoint(location)
    End Sub
End Class
Возникают следующие вопросы:
1. Строки "Imports Autodesk.AutoCAD.Interop" импортируют в проект соответствующие "пространства имен" - объектные модели, позволяя использовать их в проекте.. На вкладке "Ссылки" есть также список "Импортированные пространства имен"; - "галочка" на соответствующей библиотеке - аналогична ли строке "Imports Autodesk...." и если да то в чем разница?

2. Как быть с импортом библиотек, если предполагается использовать программу и под 64, и под 32 бит?

3. В проект библиотеки классов возможно добавлять формы. Каким образом эту самую "Form1" вызвать на экран? Методом тыка попробовал в "Public Sub mAddPnt()" влепить строку "Form1.ActiveForm.Activate()", но эта единственное, к чему она приводит, - к вылету автокада с фатал эррором..

4. Нижележащая процедура позволяет получить список установленных языков и замечательно работает в приложениях "Windows Forms". Свойство ".InputLanguage" принадлежит пространству имен "System.Windows.Forms". Возможно ли применить его в случае моего кода?
Может, надо импортировать эти самые пространства в проект..
Код:
[Выделить все]
 Public Sub GetLanguages()
    ' Gets the list of installed languages.
    Dim lang As InputLanguage
    For Each lang In  InputLanguage.InstalledInputLanguages
        textBox1.Text &= lang.Culture.EnglishName & ControlChars.Cr
    Next lang
End Sub 'GetLanguages
5. Строка
<Autodesk.AutoCAD.Runtime.CommandMethod("mAddPnt")> _
"создает" новую команду, при введении имени которой в комстроке автокада выполняется процедура mAddPnt. А как создать процедуру, которая должна реагировать на события приложения Acad-а, - некий аналог "AcadDocument_BeginCommand(ByVal CommandName As String)" в VBA?

6. Код снизу дает возможность использовать привычную объектную модель ThisDrawing... А возможно ли аналогично использовать объектную модель ASD при подключенных его библиотеках?
Код:
[Выделить все]
Public ReadOnly Property ThisDrawing() As AcadDocument
        Get
            Return Autodesk.AutoCAD _
            .ApplicationServices.Application. _
            DocumentManager.MdiActiveDocument. _
            AcadDocument
        End Get
    End Property
вот первые 6 из примерно 1000 возникающих вопросов..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
Просмотров: 121586
 
Непрочитано 20.12.2010, 15:14
#61
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Лиспер Посмотреть сообщение
(ведь типа основатель)
Не "типа", а основатель.
Цитата:
Сообщение от Vildar Посмотреть сообщение
Первым делом справшивал на форуме, потом писал, а уж потом читал. Шутка.
В каждой шутке...
Александр Ривилис вне форума  
 
Непрочитано 20.12.2010, 15:14
#62
hwd

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
Хотя, есть положительный пример твоему утверждению - Modis. Он все одновременно делал. Первым делом справшивал на форуме, потом писал, а уж потом читал.
Насчёт Modis я согласен (при условии, что не придётся открывать его исходники, хотя и мои исходники с большим натягом на 3-ку тянут, если тянут вообще). У него энергии и фантазии хватает с избытком. Правда читать он не любит - отсюда не всегда "красивый" код + чесание ногой уха.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 20.12.2010, 15:18
#63
Лиспер


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


Александр Ривилис, а понимаю что он основатель. Но пока до второй половины его книги не добрался, ничего не понимал. И потом по идее все надо перечитывать. Это ж уму нерастяжимо
Насчет Modis'a... Пока стараюсь сначала сам разобраться, и только потом спрашивать
P.S. Пока умолкаю, будут вопросы - снова выдам
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 21.12.2010, 12:28
#64
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от hwd Посмотреть сообщение
Насчёт Modis я согласен (при условии, что не придётся открывать его исходники, хотя и мои исходники с большим натягом на 3-ку тянут, если тянут вообще). У него энергии и фантазии хватает с избытком. Правда читать он не любит - отсюда не всегда "красивый" код + чесание ногой уха.
Ну плохо у меня с чтением
Modis вне форума  
 
Непрочитано 21.12.2010, 12:31
#65
hwd

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


Цитата:
Сообщение от Modis Посмотреть сообщение
Ну плохо у меня с чтением
Offtop: разбанили что ли? поздравляю.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 25.12.2010, 10:59
#66
Лиспер


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


Спрошу совета Вопрос вот в чем: некоторые вещи приходится хранить / читать / модифицировать, работая с xml-файлами (при этом, строго говоря, xml-файлы не всегда валидны, и необязательно имеют расширение xml). Подскажите, пожалуйста, какие способы лучше использовать для выполнения таких задач? XmlReader + XmlWriter, работать через DOM (насколько понял, DOM - самый медленный вариант), XmlNavigator, или какие-то сочетания?

Код:
[Выделить все]
<?xml version="1.0" encoding="UTF-8"?>
<Project Name="name" Number="001" ProjectLocation="Some path1" Id="{AF7FC567-70BE-4451-9B70-DA9D95590943}" UseNumberPrefix="No" UseRelativePath="No" SyncSheetWithView="No">
  <Version>55</Version>
  <Description>String</Description>
  <Templates>
    <SystemTemplate>Some file1</SystemTemplate>
    <ElementTemplate>Some file2</ElementTemplate>
    <ViewTemplate>Some file3</ViewTemplate>
    <SectionElevationViewTemplate>Some file4</SectionElevationViewTemplate>
    <DetailViewTemplate>Some file5</DetailViewTemplate>
    <DocumentTemplate>Some path2</DocumentTemplate>
    <ProjectSheetSetTemplate>Some file6</ProjectSheetSetTemplate>
    <ProjectDetailsTemplate>Some file7</ProjectDetailsTemplate>
  </Templates>
  <FileLocations>
    <ProjectImagePath>Some path</ProjectImagePath>
    <ProjectBulletinBoardPath>Some path</ProjectBulletinBoardPath>
    <PropertySetLocation>Some path</PropertySetLocation>
    <PalettesLocation>Some path</PalettesLocation>
    <ContentCatalog SharedWorkspaceCatalog="No" ContentRootPath="Some path">
      <ContentBrowserLibraryPath></ContentBrowserLibraryPath>
    </ContentCatalog>
    <ConstructLocation>Some path</ConstructLocation>
    <ElementLocation>Some path</ElementLocation>
    <ViewLocation>Some path</ViewLocation>
    <SheetLocation>Some path</SheetLocation>
  </FileLocations>
  <Standards>
    <StandardsEnabled>Yes</StandardsEnabled>
    <SyncOption>
      <StandardsSyncMethod>Manual</StandardsSyncMethod>
      <CreateLogFileOnSync>No</CreateLogFileOnSync>
      <ShowIgnoredObjectsOnSync>Yes</ShowIgnoredObjectsOnSync>
    </SyncOption>
    <AECStandards>
      <DisplaySettingsDrawing></DisplaySettingsDrawing>
      <File>
        <Path>Some file</Path>
        <Objects>
          <Object>AECObjectName</Object>
        </Objects>
      </File>
      <File>
        <Path>Some file</Path>
        <Objects>
          <Object>AECObjectName</Object>
          <Object>AECObjectName</Object>
        </Objects>
      </File>
    </AECStandards>
    <ACADStandards/>
  </Standards>
  <DetailComponentDatabases UseOnlyProjectDatabases="No"/>
  <KeynoteDatabases UseOnlyProjectDatabases="No"/>
  <Level Id="25" Name="24" Description="" Elevation="67960" Height="2800" ScheduleId="24"/>
  <Level Id="24" Name="23" Description="" Elevation="65160" Height="2800" ScheduleId="23"/>
  <Division Id="1" Name="1" Description="" ScheduleId="1"/>
  <Division Id="2" Name="2" Description="" ScheduleId="2"/>
</Project>

Спасибо.
---
P.S. Нашел такую статью, но хотелось бы услышать мнение гуру
__________________
(/= RegDate StartReadDate)

Последний раз редактировалось Лиспер, 25.12.2010 в 11:37.
Лиспер вне форума  
 
Непрочитано 25.12.2010, 11:51
#67
hwd

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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
при этом, строго говоря, xml-файлы не всегда валидны, и необязательно имеют расширение xml
При работе с xml-файлами их расширение роли никакой не играет. Насчёт "валидности" не понял.... В моём понимании "валидность", в рамках данного контекста - это соответствие правилам синтаксиса XML. Судя по всему, в вашем понимании это что-то иное.
Цитата:
Сообщение от Лиспер Посмотреть сообщение
Подскажите, пожалуйста, какие способы лучше использовать для выполнения таких задач? XmlReader + XmlWriter, работать через DOM (насколько понял, DOM - самый медленный вариант), XmlNavigator, или какие-то сочетания?
Ответ очевиден: Linq to XML, а использовать DOM - это прошлый век.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 25.12.2010, 12:01
#68
Лиспер


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


hwd, иногда попадаются файлы без первой строки
Код:
[Выделить все]
<?xml version="1.0" encoding="UTF-8"?>
. Насколько я понял, это неверно.
Цитата:
Сообщение от hwd Посмотреть сообщение
Linq to XML
А будет это работать внутри .NET 2.0? Простые примеры использования в MSDN или еще где-то есть? (пока не искал, для меня это недосягаемые материи. Надеюсь, ненадолго). Спасибо.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 25.12.2010, 12:10
#69
hwd

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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
иногда попадаются файлы без первой строки
Код:
[Выделить все]
<?xml version="1.0" encoding="UTF-8"?>
. Насколько я понял, это неверно.
Не то, чтобы "неверно"... Скорее "нежелательно". При чтении всегда можно принудительно указать кодировку (если по умолчанию будет применяться не та, что нужна). Отсутствие данной строки не смертельно, хотя лучше, чтобы она присутствовала.
Цитата:
Сообщение от Лиспер Посмотреть сообщение
А будет это работать внутри .NET 2.0? Простые примеры использования в MSDN или еще где-то есть? (пока не искал, для меня это недосягаемые материи. Надеюсь, ненадолго). Спасибо.
Нет, внутри .Net 2.0 это работать не будет. Эта технология присутствует, если мне не изменяет память, начиная с версии 3.0, в версии 3.5 SP1 она точно есть (именно эту версию я использую для AutoCAD 2009).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 09.01.2011, 03:17
#70
Лиспер


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


Приподниму тему...
Уважаемые, подскажите, как правильно назначать системные переменные в AutoCAD, если эти системные переменные имеют тип double[]? То есть координаты точек?
Как, например, назначить системную переменную "insbase"?
Пытался сделать наподобие:
Код:
[Выделить все]
Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("insbase", new Point3d(10.0, 10.0, 10.0));
В коде VS вроде бы меняется, но после выхода из команды проверяю значение - как было, так и есть. Пните в нужном направлении, пожалуйста...
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 09.01.2011, 14:27
#71
Олег (jr.)

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


Легко
Код:
[Выделить все]
AutoCAD.ApplicationServices.Application.SetSystemVariable("insbase", (object)new Point3d(10.0, 10.0, 10.0));
Олег (jr.) вне форума  
 
Непрочитано 10.01.2011, 00:52
#72
Лиспер


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


Что-то не сработало... Попробовал прогнать код (AutoCAD 2011, VS 2008), после выполнения проверяю:
Код:
[Выделить все]
Command: (getvar "insbase")
(0.0 0.0 0.0)
В чем я ошибаюсь?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 10.01.2011, 01:10
#73
Олег (jr.)

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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Что-то не сработало... Попробовал прогнать код (AutoCAD 2011, VS 2008), после выполнения проверяю:
Код:
[Выделить все]
Command: (getvar "insbase")
(0.0 0.0 0.0)
В чем я ошибаюсь?
Проверил в 2009-м
Работает нормально и после закрытия чертежа все сохраняется
Олег (jr.) вне форума  
 
Непрочитано 10.01.2011, 09:12
#74
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Что-то не сработало...
Значение переменной INSBASE сохраняется в конкретном чертеже. Ты часом не из немодальной формы этот код выполняешь? Может это значение меняется для другого чертежа?
Александр Ривилис вне форума  
 
Непрочитано 11.01.2011, 01:31
#75
Petrov-Vodkin


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


И я, и я теперь тоже хочу задавать глупые вопросы
Выходные провел с толком: прочитал книгу С.Н. Лукина "Понятно о Visual Basik.net" и поглядел AutoCAD .Net Laboratory. Проникся.

Вопрос1: Что дальше порекомендуете прочитать? (такое же хорошее и доходчивое)

Вопрос2:Что за зверь <CommandMethod("______")> и как правильно им пользоваться? (ну кроме как имя команды акада назначить)
А то не могу заставить работать форму и всё тут.
Хотел, чтобы (при вводе команды в ком. строку) сначала вылезала форма для ввода исходных данных, а потом по этим данным чего-нибудь рисуется.
Ну всё уже поперепробовал, а автокад по прежнему ошибку выдает. Событие для кнопки ему не нравится.

Последний раз редактировалось Petrov-Vodkin, 11.01.2011 в 12:19.
Petrov-Vodkin вне форума  
 
Непрочитано 11.01.2011, 08:26
#76
Лиспер


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


Александр Ривилис, да нет, никаких форм нет вообще. Полный код:
Код:
[Выделить все]
using System;

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

namespace dwgruTest
{
	public class test
	{
		[CommandMethod("test")]
		static public void cmdTest()
		{
			Database db = HostApplicationServices.WorkingDatabase;
			using (Transaction tr = db.TransactionManager.StartTransaction())
			{
				Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("insbase", (object)new Point3d(10.0, 10.0, 10.0));
			}
		}
	}
}
После выполнения проверяю обычным getvar - облом-с, значение не изменилось.
Проверял на VisualStudio 2008, AutoCAD 2008 32 bit, AutoCAD 2011 32 bit, AutoCAD 2011 64 bit - эффект нулевой. В чем может быть дело?
Естественно, что acdbmgd.dll и acmgd.dll подключены для соответсвующих версий, CopyLocal установлено в False.
После пошагового прохода увидел, что значение возвращается в исходное состояние после окончания блока using для транзакции. Так и должно быть?

Тупо написал микрокод:
Код:
[Выделить все]
using System;

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;

using AcAp = Autodesk.AutoCAD.ApplicationServices;

namespace test1
{
  public class test
    {
    [CommandMethod("cmd2")]
    static public void cmd2()
    {
      Database db = HostApplicationServices.WorkingDatabase;
      Editor ed = AcAp.Application.DocumentManager.MdiActiveDocument.Editor;
      using (Transaction tr = db.TransactionManager.StartTransaction())
      {
        ed.WriteMessage("\nCurrent \"insbase\" value : " + db.Insbase.ToString());
        db.Insbase = new Point3d(100.0, 100.0, 100.0);
        ed.WriteMessage("\n\"insbase\" value in tr : " + db.Insbase.ToString());
      }
      ed.WriteMessage("\n\"insbase\" value out tr : " + db.Insbase.ToString());
    }
  }
}
В результате лог выполнения в AutoCAD 2008^
Код:
[Выделить все]
Command: cmd2
Current "insbase" value : (0,0,0)
"insbase" value in tr : (100,100,100)
"insbase" value out tr : (0,0,0)

---
Решение: Ну да, все верно... tr.Commit() не было - вот и не работало как надо.
---
Добавлено
И вот еще. Как можно получить имя объекта, который выделил пользователь для 2008 версии? В 2011 достаточно просто:
Код:
[Выделить все]
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
PromptEntityOptions prEntOpt = new PromptEntityOptions("Select an entity");
PromptEntityResult prEntRes = ed.GetEntity(prEntOpt);
// <...>
string sObjectName = prEntRes.ObjectId.ObjectClass.DxfName;
Но в 2008 версии такой код не срабатывает. Как можно обойти?
---
Добавлено 2:
Не уверен, что нашел правильное решение:
Код:
[Выделить все]
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
PromptEntityOptions prEntOpt = new PromptEntityOptions("Select an entity");
PromptEntityResult prEntRes = ed.GetEntity(prEntOpt);
// <...>
Autodesk.AutoCAD.DatabaseServices.Entity ent = (Autodesk.AutoCAD.DatabaseServices.Entity)tr.GetObject(prEntRes.ObjectId, OpenMode.ForRead);
string sObjectName = ent.GetRXClass().Name;
Насколько корректен такой код?
__________________
(/= RegDate StartReadDate)

Последний раз редактировалось Лиспер, 16.01.2011 в 12:20.
Лиспер вне форума  
 
Непрочитано 02.09.2011, 10:20
#77
Кореш

Самоходная нейросеть
 
Регистрация: 12.12.2007
Питер
Сообщений: 1,195


Простите пожалуйста, что не в тему, но как на VB6 в форму добавить таблицу? какой компонент подключить? спасибо
Кореш вне форума  
 
Непрочитано 02.09.2011, 10:54
#78
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Контролов, реализующих таблицы в формах - пруд пруди (в том числе и достаточно простые по функционалу штатные от Microsoft). Ставишь отдельный контрол и понеслась
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.11.2011, 23:26
#79
це ментовозик

Водопровод-канализация
 
Регистрация: 26.09.2011
Минск
Сообщений: 8


Здравствуйте)
Есть несколько Combobox в одной форме. Есть база данных. Как сделать так, чтобы в каждом комбобоксе выбиралось своё значение из базы (сейчас при выборе значения в одном комбобоксе второй принимает такое же значение)?
це ментовозик вне форума  
 
Непрочитано 26.11.2011, 23:47
#80
hwd

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


Цитата:
Сообщение от це ментовозик Посмотреть сообщение
Здравствуйте)
Есть несколько Combobox в одной форме. Есть база данных. Как сделать так, чтобы в каждом комбобоксе выбиралось своё значение из базы (сейчас при выборе значения в одном комбобоксе второй принимает такое же значение)?
Тяжёлый случай
Почитай про ADO.NET/LINQ to Entities (на выбор) - подобного рода вопросы отвалятся сами.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > "VB.net для чайников". Вопросы программирования под Autocad и ©.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Ноутбук б/у и AutoCad 2D - вопросы Elenka AutoCAD 14 23.12.2005 13:47
Ноутбук б/у и AutoCad 2D - вопросы Elenka AutoCAD 1 20.12.2005 21:33
AUTOCAD 2006 Aragorn AutoCAD 14 01.04.2005 00:55
Что нового в AutoCAD 2005 ilka_t AutoCAD 40 19.05.2004 16:48