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

Вернуться   Форум 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
 
Непрочитано 30.08.2013, 12:16
#181
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Олег (jr.)
ХЗ все работаетс....
Код:
[Выделить все]
        Dim reer As IList(Of String)
        Dim dsDataSet As SysD.DataSet = New SysD.DataSet("DocumentDataSet")
        Dim dtDataTable As SysD.DataTable = New SysD.DataTable("Documents")
        dtDataTable.Columns.Add("Name", GetType(String))
        dtDataTable.Columns.Add("Atrib", GetType(IList(Of String)))
        dtDataTable.NewRow()
        dtDataTable.Rows.Add()
        dtDataTable.Rows(0).Item(0) = "ewf"
        dtDataTable.Rows(0).Item(1) = {"few", "wef"}
        MsgBox(dtDataTable.Rows(0).Item(1)(1))
        reer = dtDataTable.Rows(0).Item(1)
        MsgBox(reer.Count)
правда работать с этими ячейками через попу получается...
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.

Последний раз редактировалось DEM, 30.08.2013 в 13:12.
DEM вне форума  
 
Непрочитано 30.08.2013, 18:38
#182
Олег (jr.)

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


Ну тогда и программа будет ХЗ, делай как тебе нравится
Олег (jr.) вне форума  
 
Непрочитано 02.09.2013, 06:37
#183
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Олег (jr.)
Ну так и получается
Работать дальше с этими данными фактически не возможно....
Решил хранить их в списке, и дальше выводить обрабатывать с помошью стрингсплит...
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.10.2013, 08:16
#184
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


НЕ подскажете как сделать фильтр выбора объектов по тегам атрибутов, и выбор поллинии принадлежащей определенному слою...
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.10.2013, 11:08
#185
Дима_

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


т.к. ты калач уже тертый - по упрощенке - Editor.GetSelection(SelectionFilter [TypedValue(xxx,yyy);...]) xxx,yyy - аналогично DXF - [(0,"INSERT");(8,"Рельсы")] - фильтр на вхождение блоков на слое рельсы.
з.ы. а простите - мы же из-под "умного" языка делаем - вместо отсталых 0 и 8 -> int DxfCode.Start, int DxfCode.LayerName...
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 30.10.2013 в 11:18.
Дима_ вне форума  
 
Непрочитано 30.10.2013, 13:51
#186
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Дима_
Дык нее я ж не постоянно занимаюсь программированием..
Перерывчик вышел, и вернулся к коду, ща смотрю на него критически и собираюсь переделать...
Обернуть все в функции и убрать перебор блоков...
Код:
[Выделить все]
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()    '' Создание массива TypedValue для определение критериев фильтра
            Dim acTypValAr(1) As TypedValue 'Выбираем только Блоки
            acTypValAr.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0)
            acTypValAr.SetValue(New TypedValue(DxfCode.AttributeTag, "НАИМЕНОВАНИЕ"), 1)

            Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr) '' Запрос выбора объектов в области чертежа
            Dim acSSPrompt As PromptSelectionResult = acDoc.Editor.GetSelection(acSelFtr)            '' Если статус запроса равен OK, объекты выбраны
            If acSSPrompt.Status = PromptStatus.OK Then
            Else
                Exit Sub
            End If
            Dim acSSet As SelectionSet = acSSPrompt.Value
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.

Последний раз редактировалось DEM, 30.10.2013 в 15:58.
DEM вне форума  
 
Непрочитано 30.10.2013, 15:58
#187
Do$

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


Не работает - это не создается массив или не выбираются атрибуты?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 30.10.2013, 15:59
#188
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


брал за основу вот эту функцию...
Код:
[Выделить все]
Public Function getBlockInsPoints(ByVal tag As String) As List(Of Point3d)
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Edit​or
        Dim db As Database = doc.Database

        Dim ipoints As New List(Of Point3d)

        Dim p1, p2 As Point3d

        Using acTrans As Transaction = db.TransactionManager.StartTransaction()
            Dim acTypValAr(1) As TypedValue
            Dim blkref As BlockReference

            acTypValAr.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0)
            acTypValAr.SetValue(New TypedValue(DxfCode.AttributeTag, tag), 1)

            Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)
            Dim acSSPrompt As PromptPointResult = doc.Editor.GetPoint("Select First Point:")

            If acSSPrompt.Status = PromptStatus.OK Then
                p1 = acSSPrompt.Value
                acSSPrompt = doc.Editor.GetCorner("Select Second Point: ", p1)
                If acSSPrompt.Status = PromptStatus.OK Then
                    p2 = acSSPrompt.Value
                    Dim wssprompt As PromptSelectionResult

                    wssprompt = ed.SelectCrossingWindow(p1, p2, acSelFtr)
                    If wssprompt.Status = PromptStatus.OK Then
                        Dim wss As SelectionSet = wssprompt.Value
                        For Each acSSObj As SelectedObject In wss
                            If Not IsDBNull(acSSObj) Then
                                blkref = acSSObj.ObjectId.GetObject(OpenMode.ForRead)
                                ipoints.Add(blkref.Position)
                            End If
                        Next
                    End If
                End If
            End If
            acTrans.Commit()
        End Using
        Return ipoints
    End Function
----- добавлено через 28 сек. -----
Не работает фильтр....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.10.2013, 16:39
#189
Дима_

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


#186 - как именно не работает фильтр (ничего не выбирает или все подряд) - на всякий случай - у тебя написанно выбирать только блоки (причем если динамический - то только "не тронутый") с именем "НАИМЕНОВАНИЕ" - только почему-то ты используешь AttributeTag, вместо BlockName = но и то и то двойке равно.
з.ы. если ты таким образом хочешь вытащить только блоки с аттрибутами с именем "НАИМЕНОВАНИЕ" - то так не прокатит, на стадии выборки, можно отсеять, только по критериям доступных из непосредственного вхождения DXF (например проверить флаг, еслть ли в принципе аттрибуты - DxfCode.HasSubentities что есть DXF 66), можно дабавить коомбинацию логики "<OR" "OR>" "<AND" "AND>" и пр., но только на непосредственные значения выбираемого примитива (отделить на стадии выбора, например, тела объемом=XXX - не получится, только постфильтрация, либо создавать самому аналог GetSelection - если будешь заморачиваться на такое - не забудь выложить).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 30.10.2013, 16:43
#190
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от Дима_ Посмотреть сообщение
з.ы. если ты таким образом хочешь вытащить только блоки с аттрибутами с именем "НАИМЕНОВАНИЕ" - то так не прокатит, на стадии выборки, можно отсеять, только по критериям доступных из непосредственного вхождения DXF (например проверить флаг, еслть ли в принципе аттрибуты - DxfCode.HasSubentities что есть DXF 66),
Угу так и хотел, чтобы выбрал динамические блоки с наименованием атрибута "Наименование"
Просто потом выборку не хотел делать....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.10.2013, 16:47
#191
Дима_

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


ну че - так как насчет расширенного GetSelection?? что-то типа выбирать только те, на которые заданный делегат возвращает true?
з.ы. - мне лень.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 30.10.2013, 16:55
#192
Boxa

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
з.ы. а простите - мы же из-под "умного" языка делаем - вместо отсталых 0 и 8 -> int DxfCode.Start, int DxfCode.LayerName...
Сколько желчи =)
Boxa вне форума  
 
Непрочитано 30.10.2013, 17:04
#193
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от Дима_ Посмотреть сообщение
ну че - так как насчет расширенного GetSelection?? что-то типа выбирать только те, на которые заданный делегат возвращает true?
Мне пока проще тогда выбрать только динамические блоки, а потом во время перебора блоков оставить только те, что с атрибутом Наименование....
Цитата:
Сообщение от Дима_ Посмотреть сообщение
ну че - так как насчет расширенного GetSelection?? что-то типа выбирать только те, на которые заданный делегат возвращает true?
Та я уж и не знаю, что лучше, мне то еще бы с С++ разобраться, есть просто АПИ СКАДа а оно на С++
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 30.10.2013, 17:18
#194
Дима_

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


То Boxa - да не - тут все правильно - с цифрами удобней до поры, до времени - это уже этап пройденный. В MSDos'овские временна были только цифры - да так и вызывались функции с прединициализированными регистрами с числовыми значениями - да еще в документации они всегда были шестнадцетиричными - так удобней было (количество символов одинаковое). Но когда количество функций перескочило всего-лишь за сотню (в MSDos практически все функции "висели" на 21h - (HEX) прерывании, да были еще функции биос (на 10h, 13h и пр.), но в самом досе почти все использовалось только с 21h (на остальном небольшом количестве прерываний (interput - основной метод вызова внешних "системных" функций того времени) - было по 1 - 2 функции, или вобще не было, а просто оно использовалось в определенных целях как таковое), то стало очевидно что в них (и их подфункциях) уже не создать такой типизированной структуры с четким принципом разделения регистров. Оно-же и с DXF - чем более новые навороты в ней описываються, тем геморней их достать - т.к. "поверхостными", схожими по смыслу полями (как в ранних версиях DXF) все описать не получается.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 08.05.2014, 13:02
#195
alex8888

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


Подскажите пожалуйста по простому примеру, как здесь организовать вызов команды AddLine, чтобы она принимала значения точек x1,y1 и x2,y2 в качестве параметров или "тыком" на рабочем поле АвтоГада.
Пробовал написать
Код:
[Выделить все]
 public static void AddLine(double x1, double y1, double x2, double y2)
, но не пойму, как вызвать в АвтоГаде. Если просто AddLine -> полет к дяде Биллу, а остальные варианты типа AddLine(100,200,300,400) не проходят. До чего еще я не додумался?


Код:
[Выделить все]
 #region "Imports"
//system
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Collections;
//acad
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;
#endregion


namespace AddLine
{
    public class Class1
    {
        [CommandMethod("AddLine")]
        public static void AddLine()

        {
            double x1; double y1; double x2; double y2;
            x1 = 0; y1 = 0; x2 = 200; y2 = 400;
            //Получение текущего документа и базы данных чертежа
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            //Начало транзакции
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                //Открыть таблицу блоков для чтения
                BlockTable acBlkTbl;
                acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
                                                  OpenMode.ForRead) as BlockTable;

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

                // Создание линии по точкам x1,y1 и x2,y2
                Line acLine = new Line(new Point3d(x1, y1, 0),new Point3d(x2, y2, 0));
                acLine.SetDatabaseDefaults();

                // Добавление нового объекта в базу и транзакция
                acBlkTblRec.AppendEntity(acLine);
                acTrans.AddNewlyCreatedDBObject(acLine, true);

                // Сохранение нового объекта в базе данных чертежа
                acTrans.Commit();
            }
        }
    }
}
alex8888 вне форума  
 
Непрочитано 08.05.2014, 15:29
#196
Boxa

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


Цитата:
Сообщение от alex8888 Посмотреть сообщение
"тыком" на рабочем поле АвтоГада
Код:
[Выделить все]
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();
            }
        }
    }
}
PS.
Забавно в теме "VB.net для чайников". Вопросы программирования под Autocad и © читать код на C# =)
Boxa вне форума  
 
Непрочитано 08.05.2014, 16:10
#197
alex8888

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


Boxa, спасибо, пойду дальше разбирать

Цитата:
Забавно в теме "VB.net для чайников".
Упс, прошу прощения, немного обшибся
alex8888 вне форума  
 
Непрочитано 08.05.2014, 17:39
#198
gomer

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


Может быть закрепить эту тему?
gomer вне форума  
 
Непрочитано 25.12.2014, 19:10
#199
Борейша Константин

Инженер
 
Регистрация: 18.12.2014
Сообщений: 1


Друзья, помогите разобраться!
Раньше по мере необходимости писал приложения для AutoCad на VBA.
И каждая новая версия AutoCad заставляла перерабатывать написанное всё заново.
Прочитал много тем на этом и других форумах. Все переходят на -.NET
Который, как я понимаю, позволяет писать на любом удобном языке и компилировать в одно приложение.
Размышления - вопросы у меня такие. Если в редакторе VBA, непосредственно я мог посмотреть результат сразу
что там делает программа, то теперь мне нужно кучу действий совершить чтобы посмотреть как программа работает в AutoCad?
Потом, если я продолжу создавать приложения в VB, на базе -.NET то нет гарантии, что в следующей версии
опять не изменятся имена классов, объектов или что там они меняют, что не работают программы.
Могу ли я поставить старый AutoCad 2010 и скомпилировать dll, подгрузив те старые библиотеки и новые из AutoCad 2013, будет ли это работать?
И по скольку придётся изучать по новому синтаксис и многие другие вещи, если перейду под .NET , то может лучше
VisualLISP изучить, на сколько я понимаю приложения на нём более долговечнее в AutoCad, чем написанные на VBA?

Спасибо.
Борейша Константин вне форума  
 
Непрочитано 30.12.2014, 09:37
#200
Александр Ривилис

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


Если главный критерий - долговечность, то лисп. А если гибкость, скорость работы, возможность создания красивого и удобного интерфейса - то один из .NET языков. Лучше C# - как минимум больше примеров.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум 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