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

Вернуться   Форум 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 возникающих вопросов..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
Просмотров: 121576
 
Непрочитано 30.05.2018, 12:17
#241
kurstep


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
А так не будет работать?
Нет, так не работает. Все что можно вытащить из свойства объекта acad.Obj с помощью точки на картинке
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 38
Размер:	15.6 Кб
ID:	202906  
kurstep вне форума  
 
Непрочитано 30.05.2018, 15:08
#242
Do$

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


Цитата:
Сообщение от kurstep Посмотреть сообщение
Нет, так не работает.
А запускать пробовали?
Цитата:
Сообщение от kurstep Посмотреть сообщение
Все что можно вытащить из свойства объекта acad.Obj с помощью точки на картинке
IntelliSence не будет работать с типом dynamic. Тут суть в том, что свойства динамически определяются только в процессе выполнения программы. Очень удобный механизм для работы с COM-объектами.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 11.06.2018, 19:50
#243
gnuvse


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


Здравствуйте.

Подскажите пожалуйста, с чего начать программирование в autocad на vba или vb.net?
С какого руководство лучше начать?


Спасибо за ваше время и ответы.
gnuvse вне форума  
 
Непрочитано 11.06.2018, 19:55
#244
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


как собираетесь vb.net использовать - Interop или NetApi?
Сергей812 вне форума  
 
Непрочитано 12.06.2018, 10:01
1 | #245
Unfamous

Визайнер-дизуализатор в отставке
 
Регистрация: 12.11.2009
Сообщений: 133


Цитата:
Сообщение от gnuvse Посмотреть сообщение
Подскажите пожалуйста, с чего начать программирование в autocad на vba или vb.net?
VBA - проще
VB.NET - функциональнее
Вот и выбирайте: начать с более легкого, а потом при надобности "перелезть" на более сложное, или сразу из пушки по воробьям.
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук
Unfamous вне форума  
 
Непрочитано 12.06.2018, 10:17
1 | #246
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Если умеете думать и искать информацию, а не просто подбирать работающие куски кода в "говнокод" - то лучше от VBA отказываться сразу в акаде. Это раньше альтернативы не было - или лисп, или VBA (ObjectARX можно не принимать в расчет из-за высоких требований к квалификации программиста вследствие низкоуровневой работы с акадом). Сейчас .Net позволяет программистам-самоучкам реализовать большую часть задач, при этом скрывая низкоуровневую работу с ресурсами и заодно немного страхуя от криворукости за счет наличия оберток над ObjectARX функциями)
Сергей812 вне форума  
 
Непрочитано 12.06.2018, 10:26
2 | #247
Boxa

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


Цитата:
Сообщение от gnuvse Посмотреть сообщение
Подскажите пожалуйста, с чего начать программирование в autocad на vba или vb.net?
С какого руководство лучше начать?
Как человек прошедший путь от QBasic -> VB.6->VBA->VB.NET->C# рекомендую сразу изучать C# и не тратить время. Примеров на С# намного больше и изучать его проще.
Цитата:
Сообщение от gnuvse Посмотреть сообщение
С какого руководство лучше начать?
Если навыки программирования уже есть и надо их именно заточить под автокад, то ничего лучше офф. справки еще не придумали, вот тут можно посмотреть ее перевод: https://sites.google.com/site/bushma...anslate-manual

Если с программированием совсем туго, то рекомендую сначала посмотреть на youtube и выполнить курс CS50, он есть в переводе на русский язык.
Boxa вне форума  
 
Непрочитано 12.06.2018, 10:38
#248
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Boxa Посмотреть сообщение
рекомендую сразу изучать C# и не тратить время. Примеров на С# намного больше и изучать его проще.
можно и любой другой язык с поддержкой .Net. У VBA еще существенный минус - среда разработки осталась на уровне тех годов, где остановилось и само развитие языка. Даже бесплатные студии стали гораздо более удобнее в плане интерфейса за эти годы - а это напрямую влияет на скорость написания кода.
Сергей812 вне форума  
 
Непрочитано 12.06.2018, 11:02
#249
gnuvse


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Как человек прошедший путь от QBasic -> VB.6->VBA->VB.NET->C# рекомендую сразу изучать C# и не тратить время. Примеров на С# намного больше и изучать его проще.

Если навыки программирования уже есть и надо их именно заточить под автокад, то ничего лучше офф. справки еще не придумали, вот тут можно посмотреть ее перевод: https://sites.google.com/site/bushma...anslate-manual

Если с программированием совсем туго, то рекомендую сначала посмотреть на youtube и выполнить курс CS50, он есть в переводе на русский язык.

А полно примеров это по acad или вообще по c#

Вообще c# лучше(я могу быдлокодить на c), но инфы по шарпу не очень много, конкретно для акада
gnuvse вне форума  
 
Непрочитано 12.06.2018, 11:11
1 | #250
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от gnuvse Посмотреть сообщение
но инфы по шарпу не очень много, конкретно для акада
а это уже ваша задача - из типовых "блоков" кода создать свой код под конкретную задачу) Есть взаимодействие с объектной моделью акада, а есть обработка информация. Вторая часть - это уже сам язык программирования (информации в инете более чем), первая часть - к сайту Бушмана Андрея
Цитата:
Сообщение от Boxa Посмотреть сообщение
еще рекомендую офф. сайт для разработчиков от Аутодеска на русском.
Сергей812 вне форума  
 
Непрочитано 12.06.2018, 12:24
#251
Unfamous

Визайнер-дизуализатор в отставке
 
Регистрация: 12.11.2009
Сообщений: 133


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
У VBA еще существенный минус - среда разработки осталась на уровне тех годов, где остановилось и само развитие языка
Зато у VBA есть плюсик - открыл AutoCAD, пишешь, запускаешь, и сразу видишь результат. Это проще для изучения, особенно когда стартуешь с нуля
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук
Unfamous вне форума  
 
Непрочитано 12.06.2018, 12:35
#252
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Unfamous Посмотреть сообщение
Зато у VBA есть плюсик - открыл AutoCAD, пишешь, запускаешь, и сразу видишь результат. Это проще для изучения, особенно когда стартуешь с нуля
а толку - потом придется переучиваться все равно программировать под тот же .Net с совершенно другим подходом к написанию кода. Когда осознаешь, что большую часть времени занят придумыванием костылей для обхода обрезанного функционала VBA вместо самого программирования. А если не решена проблема стабильности в последних версиях х64 VBA7 - то и еще раньше)
Сергей812 вне форума  
 
Непрочитано 12.06.2018, 13:54
| 1 #253
Unfamous

Визайнер-дизуализатор в отставке
 
Регистрация: 12.11.2009
Сообщений: 133


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а толку - потом придется переучиваться все равно программировать под тот же .Net с совершенно другим подходом к написанию кода. Когда осознаешь, что большую часть времени занят придумыванием костылей для обхода обрезанного функционала VBA вместо самого программирования. А если не решена проблема стабильности в последних версиях х64 VBA7 - то и еще раньше)
Все верно. Только с небольшой оговоркой. Немножко отвлекусь экскурс получения своего опыта. В начале я написал нужную мне функцию на VBA. Потом, когда возникла потребность расширить функционал, и привести все в божеский вид, я перешел на .Net, т.к. уже не логично ковыряться с VBA. Так вот, вернись я бы сейчас в прошлое, я все равно себе бы посоветовал реализовать на VBA, т.к. на том же C# я бы запнулся все это сделать, и возможно так и не сделал бы нужную мне функцию. Если конечно же человек чувствует в себе силы потянуть серьезный язык программирования, то конечно же про VBA надо сразу же забыть. Как-то так
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук
Unfamous вне форума  
 
Непрочитано 12.06.2018, 14:39
#254
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Unfamous Посмотреть сообщение
я все равно себе бы посоветовал реализовать на VBA, т.к. на том же C# я бы запнулся все это сделать
дело вкуса. Просто программирование на .Net в начальный момент времени более трудозатратно с VBA, но потом VBA остается на месте - а .Net уходит в отрыв) Если уровень "программиста" - написал строчку и сразу запускать на исполнение (подбор кода методом тыка), то ему до ограничений даже VBA еще пилить и пилить)

Плюс есть бесплатные средства разработки для .Net языков в отличие от привязанных к конкретным библиотекам и приложениям VBA.

----- добавлено через ~4 мин. -----
Offtop: А путь у меня похожий был
Цитата:
Сообщение от Boxa Посмотреть сообщение
QBasic -> VB.6->VBA->VB.NET->C#
только туда еще С++ под DOS и Delphi затесались в свое время) Осталось в памяти только чем более менее активно пользуюсь последние года - C# и VBA для офиса.
Сергей812 вне форума  
 
Непрочитано 12.06.2018, 14:54
#255
Unfamous

Визайнер-дизуализатор в отставке
 
Регистрация: 12.11.2009
Сообщений: 133


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Если уровень "программиста" - написал строчку и сразу запускать на исполнение (подбор кода методом тыка), то ему до ограничений даже VBA еще пилить и пилить)
Видать про меня Только недавно дошел до того, чтобы в VBA написать больше строчки кода, без постоянного запуска. Вот теперь на C# пинаю каждую строку и смотрю как работает, пока местами без особого понимания. Надеюсь со временем будет как с VBA - по увереннее.
Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
VBA для офиса
Я как раз таки в офисе уперся в то, что на VBA не смог написать то, что мне надо, и начал осваивать C#
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук
Unfamous вне форума  
Ответ
Вернуться   Форум 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