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

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

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

Ответ
Поиск в этой теме
Непрочитано 13.12.2010, 10:58 #1
"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
 
Непрочитано 13.12.2010, 12:42
#2
Лиспер


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


Ну, хотелось бы и по C# сюда же вопросы засовывать
AlexV, а зачем используешь Interop? Это ж обращение к acad.exe как внешнему приложению, как я понимаю. Попробуй сделать по-другому: обычным образом импортировать acdbmgd.dll и acmgd.dll и писать внутреннюю команду.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 13.12.2010, 12:43
#3
hwd

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


Цитата:
Сообщение от AlexV Посмотреть сообщение
1. Строки "Imports Autodesk.AutoCAD.Interop" импортируют в проект соответствующие "пространства имен" - объектные модели, позволяя использовать их в проекте.. На вкладке "Ссылки" есть также список "Импортированные пространства имен"; - "галочка" на соответствующей библиотеке - аналогична ли строке "Imports Autodesk...." и если да то в чем разница?
У вас в сообщении какая-то картинка-невидимка
Imports и "подключение библиотеки" - это совершенно разные вещи.
Imports используется для того, чтобы вам не набирать полное имя класса, с указаниями всех пространств имён.
Вы можете убрать все Imports и прописывать везде полные имена классов - ваш код будет работать.
Но если вы предварительно ("на вкладке Ссылки" (с)) не подключите библиотеку, то вам не поможет и наличие Imports - код работать не будет, поскольку библиотека не подключена.
Т.о. Imports добавляют для удобства написания кода, но обойтись можно и без неё.
Цитата:
Сообщение от AlexV Посмотреть сообщение
2. Как быть с импортом библиотек, если предполагается использовать программу и под 64, и под 32 бит?
Подключаете соответствующую версию AcDbMgd.dll и AcMgd.dll (х86 или х64). Исходный код останется почти тем же (но в ряде случаев вам могут потребоваться изменения, необходимость которых обусловлена разрядностью версии).
Цитата:
Сообщение от AlexV Посмотреть сообщение
3. В проект библиотеки классов возможно добавлять формы. Каким образом эту самую "Form1" вызвать на экран? Методом тыка попробовал в "Public Sub mAddPnt()" влепить строку "Form1.ActiveForm.Activate()", но эта единственное, к чему она приводит, - к вылету автокада с фатал эррором..
И правильно "вылетает" (с). Прежде чем хвататься использовать технологию WinForms, разберитесь с ней, хотя бы на начальном уровне. Информации на эту тему полно.
Цитата:
Сообщение от AlexV Посмотреть сообщение
4. Нижележащая процедура позволяет получить список установленных языков и замечательно работает в приложениях "Windows Forms". Свойство ".InputLanguage" принадлежит пространству имен "System.Windows.Forms". Возможно ли применить его в случае моего кода?
Вы изобретаете велосипед. Получение списка доступных локализаций, локализация ресурсов и интерфейса легко решается подходом, предложенным Майкрософт (я недавно показывал это в каком-то топике этой же ветки).
Цитата:
Сообщение от AlexV Посмотреть сообщение
5. Строка
<Autodesk.AutoCAD.Runtime.CommandMethod("mAddPnt")> _
"создает" новую команду, при введении имени которой в комстроке автокада выполняется процедура mAddPnt. А как создать процедуру, которая должна реагировать на события приложения Acad-а, - некий аналог "AcadDocument_BeginCommand(ByVal CommandName As String)" в VBA?
Вам сначала следует изучить азы дотнета, прежде чем садиться писать рабочие приложения. По данному вопросу вам нужно читать на тему делегатов и событий.
Цитата:
Сообщение от AlexV Посмотреть сообщение
6. Код снизу дает возможность использовать привычную объектную модель ThisDrawing... А возможно ли аналогично использовать объектную модель ASD при подключенных его библиотеках?
Код:
[Выделить все]
Public ReadOnly Property ThisDrawing() As AcadDocument
        Get
            Return Autodesk.AutoCAD _
            .ApplicationServices.Application. _
            DocumentManager.MdiActiveDocument. _
            AcadDocument
        End Get
    End Property
Этого вопроса я не понял. Что за "ASD"?
Цитата:
Сообщение от AlexV Посмотреть сообщение
вот первые 6 из примерно 1000 возникающих вопросов..
Если так, то я на них пожалуй отвечать не буду, т.к. не поощряю лень, и времени свободного у меня не вагон (Александр Ривилис более добрый на этот счёт, но и у него свободного времени не всегда море). Вам сначала нужно читать азы дотнета, тренироваться на обычных простеньких проектах (начните с консольных), затем определитесь с GUI: (WinForms/WPF) - потом это можно пришивать к автокаду.

По дотнету вопросы лучше задавать на дотнет-форумах, а не здесь. После того, как будете себя уверенно чувствовать в .нете - можно будет браться за автокад - т.е. шлёпать на этот форум.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 13.12.2010, 13:13
#4
AlexV

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Если так, то я на них пожалуй отвечать не буду, т.к. не поощряю лень, и времени свободного у меня не вагон (Александр Ривилис более добрый на этот счёт, но и у него свободного времени не всегда море). Вам сначала нужно читать азы дотнета, тренироваться на обычных простеньких проектах (начните с консольных), затем определитесь с GUI: (WinForms/WPF) - потом это можно пришивать к автокаду. По дотнету вопросы лучше задавать на дотнет-форумах, а не здесь. После того, как будете себя уверенно чувствовать в .нете - можно будет браться за автокад - т.е. шлёпать на этот форум.
Да я понимаю, что разжевывать азы по нескольку раз начинающим - дело неинтересное и не благодарное. Я, тему создавая, расчитывал на две вещи: - во-первых, есть уже немало вчерашних чайников, которые хоть что-то знают и могут ответить на элементарные вопросы (в конце концов, в автокадовских топиках каждый вопрос про filedia найдет желающего ответить );
- и во-вторых, может кто-то в этой теме задаст более содержательные вопросы (на dwg.ru пока по технологии net информации не много).

Цитата:
Этого вопроса я не понял. Что за "ASD"?
AutoCAD Structural Detailing..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 13.12.2010, 13:16
#5
Лиспер


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


AlexV, лично я сначала бы с "чистым" кадом разобрался (кстати, точно так же, как и ты, я "подвис" на некоторых элементарных вещах). Насколько я понял, вертикальные решения позволяют просто обращаться к собственным объектам при условии импорта соответствующих библиотек.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 13.12.2010, 13:21
#6
hwd

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


>AlexV
Если вам это будет интересно - могу расшарить доступ на некоторые электронные книги по .net-технологиям (одни на русском, другие на английском). Линк на электронный мануал (английский) по .Net API AutoCAD у вас наверняка уже есть.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 13.12.2010, 13:22
#7
AlexV

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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
AlexV, лично я сначала бы с "чистым" кадом разобрался (кстати, точно так же, как и ты, я "подвис" на некоторых элементарных вещах). Насколько я понял, вертикальные решения позволяют просто обращаться к собственным объектам при условии импорта соответствующих библиотек.
Да я понимаю, что надо бы разобраться.. Я, увы, не программист; так, - любитель; может и не замахивался бы на net, просто с переходом на 64-битные системы все накопившиеся vba-шные костыли либо совсем поломались, либо под них надо подставлять еще одни костыли.. Вот и пытаюсь с наскоку хоть что-нибудь начать на vb.net, не зарываясь глубоко в теорию (хотя и понимаю, что зарыться надо бы).. Честно говоря, и у VBA-шных моих проектов было только одно достоинство - они работали и делали то, что я от них хотел; сам же код заставил бы плеваться профессиональных программистов.

Цитата:
Если вам это будет интересно - могу расшарить доступ на некоторые электронные книги по .net-технологиям (одни на русском, другие на английском). Линк на электронный мануал (английский) по .Net API AutoCAD у вас наверняка уже есть.
hwd, заранее спасибо! (на русском желательно..)
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 13.12.2010 в 13:28.
AlexV вне форума  
 
Непрочитано 13.12.2010, 14:14
#8
hwd

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


Цитата:
Сообщение от AlexV Посмотреть сообщение
hwd, заранее спасибо! (на русском желательно..)
До завтрашнего дня открываю доступ для возможности скачивания: тынц. Это из того, что сейчас есть под рукой... Вечером могу дома поискать на тему WinForms (если нет желания изучать WPF). Спецификацию по VB.Net я себе не искал, т.к. пишу на C#, но её можно найти в инете, например тут (нужно только версию смотреть, чтобы не старая была).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 13.12.2010 в 14:25.
hwd вне форума  
 
Автор темы   Непрочитано 13.12.2010, 14:24
#9
AlexV

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


Цитата:
Сообщение от hwd Посмотреть сообщение
До завтрашнего дня открываю доступ для возможности скачивания: тынц. Это из того, что сейчас есть под рукой...
Спасибо! Дома, если успею, скачаю!
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 13.12.2010, 14:30
#10
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


AlexV, напиши каким ПО пользуешься, начиная с винды, NET, студии, акада, и прочее.

От идеологии ThisDrawing нужно отвыкать. И от com interop. Подклучай ссылки на net библиотеки акада (знаешь как, и знаешь какие, наверное уже).
Ссылка на активный документ, типа ThisDrawing на vba.
Код:
[Выделить все]
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Примеры на c#. Но должно быть понятно.

По вопросам. В дополнение к ответам hwd.

1. Андрей разжевал хорошо.

2. Как в одном проекте это увязать, чтобы компилиось под х32 и х64, я хз. Но как-то же компилируют под разные операционки. Нужно матчасть осваивать.

3. Используй метод Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog(). Почему нужно делать так, я точно и не скажу. Действительно читать надо, начиная с того что такое приложение, процессы, ну и про запуск форм. Хорошобы кто-нибудь на пальцах объяснил.

4. Виндовые языки. Или локализацию акада. Уточни.

5. У класса Document есть событие CommandWillStart. На него нужно подписаться.

6. ASD 2011 дома стоит. Посмотрю вечером.

Какие книжки по NET есть, какие начал читать?
Да, и без msdn и не туды и не сюды.
Vildar вне форума  
 
Непрочитано 13.12.2010, 14:40
#11
hwd

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
Но как-то же компилируют под разные операционки.
Как вариант - программно проверить разрядность и на основании этого выполнить тот или иной блок кода (if-else). Мне искать некогда, но при желании можно найти ответ Александра Ривилиса на тему того, как в автокаде определить его разрядность (проанализировав указатель). Тема была на кадюзере (если мне не изменяет память).
MSDN нужен однозначно - я его не упоминал, т.к. подразумевал по умолчанию
Проверить разрядность операционной системы можно разными способами (зависит от версии .NetFamework). Например в .NetFramework 4.0 появилась такая удобная возможность.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 13.12.2010, 15:23
#12
AlexV

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
AlexV, напиши каким ПО пользуешься, начиная с винды, NET, студии, акада, и прочее.
Какие книжки по NET есть, какие начал читать?
Да, и без msdn и не туды и не сюды.
win 7 профессиональная 64 бит, VS2008 ("Microsoft Visual Basic 2008 Express Edition"); автокад 2010 - 2011, ASD 2011.
Книг по Net пока нет.. Заходил пару раз в Буквоед, но то "денег не було", то имевшееся в наличии не особо впечатлило (либо для начинающих, но слишком элементарно - на уровне "hello, word!", без реальных примеров. Либо на уровне справочника для профи.. Много есть уцененного по старым версиям VS.) Вобщем, будем искать!
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 13.12.2010, 15:27
#13
hwd

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


Цитата:
Сообщение от AlexV Посмотреть сообщение
win 7 профессиональная 64 бит, VS2008 ("Microsoft Visual Basic 2008 Express Edition"); автокад 2010 - 2011, ASD 2011.
Если AutoCAD 2011, то имхо лучше сразу использовать VS2010 и .Net 4.0 (не помню, можно ли под 2010 использовать .Net 4.0).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 13.12.2010, 15:42
#14
AlexV

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Если AutoCAD 2011, то имхо лучше сразу использовать VS2010 и .Net 4.0 (не помню, можно ли под 2010 использовать .Net 4.0).
VS2010 вроде Express выпуска нет, только платные Professional..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 13.12.2010, 15:48
#15
hwd

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


>AlexV
А если не гадать, а спросить гугл?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 13.12.2010 в 15:55.
hwd вне форума  
 
Непрочитано 13.12.2010, 15:58
#16
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от AlexV Посмотреть сообщение
win 7 профессиональная 64 бит
Ну все, я пас

Цитата:
Сообщение от AlexV Посмотреть сообщение
Microsoft Visual Basic 2008 Express Edition
че так?

Цитата:
Сообщение от AlexV Посмотреть сообщение
Вобщем, будем искать!
В эл.виде как грязи. Купи из серии для профессионалов, NET 3.5, или 4.

С языком тоже подумай. VB.NET после C# уже не перивариваю.

Цитата:
Сообщение от hwd Посмотреть сообщение
(не помню, можно ли под 2010 использовать .Net 4.0)
Попробовал, можно.
Vildar вне форума  
 
Непрочитано 13.12.2010, 16:05
#17
hwd

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
Попробовал, можно.
Тогда тем более стоит юзать 4.0.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 13.12.2010, 16:19
#18
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


На работе у всех NET 2.0 стоит
Vildar вне форума  
 
Непрочитано 13.12.2010, 16:25
#19
hwd

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
На работе у всех NET 2.0 стоит
Offtop: Я с большой кровью добился, чтобы всем пользователям раскатали .Net 3.5 SP1 (теперь хоть LINQ можно использовать). Но устанавливать .Net 4.0 наотрез отказались - админы боятся "ада dll", не верят, что для .Net Framework этой проблемы не будет. Мне наложили VETO на установку его пользователям и на попытки поднятия этой темы средит IT-шников.

При установке AutoCAD 2009, автоматом накатывается .Net 3.0. Какая же у тебя версия AutoCAD, что фрэймворк только 2.0???
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 13.12.2010, 16:38
#20
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


В нашем отделе у всех Autocad Architecture 2008. А вообще в институте, есть и 2009, не подумал.
Не поверишь, я задолбался просить обновления поставить на акады, на той неделе поставили.
Я с админами боле-менее дружу, но влиять на них не могу.
Цитата:
Сообщение от hwd Посмотреть сообщение
.Net 3.5 SP1 (теперь хоть LINQ можно использовать)
И wpf ты вроде юзал. Или как?
Vildar вне форума  
Ответ
Вернуться   Форум 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