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

Вернуться   Форум 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 возникающих вопросов..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
Просмотров: 121544
 
Непрочитано 30.12.2014, 11:42
#201
Сергей812


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


И если на NetApi - то разделяйте логику программы.. работа с БД чертежа отдельно, обработка данных, взаимодействие с файлами xml, БД и т.д. -отдельно в своих функциях, модулях, классах. В результате даже при изменении методов взаимодействия с БД чертежа придется переписывать и отлаживать лишь часть кода, а не перелопачивать весь проект. Хотя простенькие "макросы" можно писать и в VBA стиле - все в кучу)
Сергей812 вне форума  
 
Непрочитано 30.12.2014, 12:39
#202
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


dotNet, переход с 2013 на 2015 - подключить новые библиотеки + одна новая, изменений классов не заметил, просто некоторые классы ввывели в отдельную библиотеку - очень логично и рационально...
trir вне форума  
 
Непрочитано 30.12.2014, 12:44
#203
Александр Ривилис

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


Цитата:
Сообщение от trir Посмотреть сообщение
переход с 2013 на 2015
Уточнение. Разделение acmgd.dll на acmgd.dll и accoremgd.dll произошло в AutoCAD 2013. Так что новые библиотеки в 2015 по сравнению с 2013 (а не 2012) не нужны.
Александр Ривилис вне форума  
 
Непрочитано 30.12.2014, 14:21
#204
Boxa

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


По поводу долговечности.
У меня такой опыт: Утилиты написанные в 2011 году, работают в акаде 2015 (компилирую под новые версии и все, в код ни разу не лазил). ИМХО, с 2006 года АПИ уже достаточно устоялся.
Boxa вне форума  
 
Непрочитано 30.12.2014, 14:47
#205
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Таки да с 2012 на 2013,2015. И так у меня были проблемы - нужно было добавить accoremgd.dll и всё!
trir вне форума  
 
Непрочитано 30.12.2014, 14:57
#206
Александр Ривилис

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


Цитата:
Сообщение от Boxa Посмотреть сообщение
ИМХО, с 2006 года АПИ уже достаточно устоялся.
Точнее с 2007-го. В 2007-ом появилась возможность писать lisp-функции на .NET и исправили баг с ResultBuffer (в 2006-ом нельзя было использовать вложенные списки и соотвественно была проблема с DXF-кодами)
Александр Ривилис вне форума  
 
Непрочитано 30.12.2014, 15:28
#207
Boxa

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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Точнее с 2007-го.
Я имел в виду. что net api появился в 2006 году
Boxa вне форума  
 
Непрочитано 30.12.2014, 15:33
#208
Александр Ривилис

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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Я имел в виду. что net api появился в 2006 году
Тогда еще одна неточность. .NET API появилась в AutoCAD 2005, т.е. в 2004 году.
Александр Ривилис вне форума  
 
Непрочитано 30.12.2014, 15:40
#209
ur_naz


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Если главный критерий - долговечность, то лисп.
Как показывает практика, долговечность лиспа - миф
ur_naz вне форума  
 
Непрочитано 30.12.2014, 15:43
#210
Александр Ривилис

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


Цитата:
Сообщение от ur_naz Посмотреть сообщение
Как показывает практика, долговечность лиспа - миф
Так как это опровержение моих слов, то жду подтверждения.
P.S.: Какие-то из моих lisp-программ в неизменном виде работают уже 25 лет. Не это ли долговечность?

Последний раз редактировалось Александр Ривилис, 30.12.2014 в 16:17.
Александр Ривилис вне форума  
 
Непрочитано 30.12.2014, 17:24
#211
Do$

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


Цитата:
Сообщение от ur_naz Посмотреть сообщение
Как показывает практика, долговечность лиспа - миф
Если программа - сплошной набор строк (command ...) - то да.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 30.12.2014, 20:04
#212
ur_naz


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
жду подтверждения.
элементарный пример: (command "layer" ...) попадаются и примеры вполне серьезных программ, в которые программисты заложили свинью в виде ограничения по версии автокада. Я уже не говорю о тех лиспах, которые используют ARX-библиотеки
ur_naz вне форума  
 
Непрочитано 30.12.2014, 20:13
#213
Александр Ривилис

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


Цитата:
Сообщение от ur_naz Посмотреть сообщение
элементарный пример: (command "layer" ...) попадаются и примеры вполне серьезных программ
1) Использование (command ...) в том случае когда можно без неё обойтись - это признак непрофессионализма.
2) Это особенность команды _LAYER (кстати, какую именно ты имеешь в виду ?), а не lisp.
Цитата:
Сообщение от ur_naz Посмотреть сообщение
попадаются и примеры вполне серьезных программ, в которые программисты заложили свинью в виде ограничения по версии автокада
Часто это проблемы программистов, а не lisp. Хотя иногда это баги AutoCAD. Но причем здесь lisp???
Цитата:
Сообщение от ur_naz Посмотреть сообщение
Я уже не говорю о тех лиспах, которые используют ARX-библиотеки
А вот это как раз ограничения ARX-технологии, а не lisp. Не путай мух с котлетами.
Александр Ривилис вне форума  
 
Непрочитано 30.12.2014, 20:15
#214
Boxa

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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Тогда еще одна неточность. .NET API появилась в AutoCAD 2005, т.е. в 2004 году.
Да, оплошал.
http://spiderinnet1.typepad.com/blog...al-studio.html
Boxa вне форума  
 
Непрочитано 30.12.2014, 22:14
#215
ur_naz


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


Кстати вот еще из последнего и лисп опять тут не причем. Но ведь пользователю не важно почему его скомпиленная программа вдруг отказывается работать... для него лисп - это более глобальное понятие, чем синтаксис языка.
ur_naz вне форума  
 
Непрочитано 30.12.2014, 22:34
#216
Александр Ривилис

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


Цитата:
Сообщение от ur_naz Посмотреть сообщение
Но ведь пользователю не важно почему его скомпиленная программа вдруг отказывается работать... для него лисп - это более глобальное понятие, чем синтаксис языка.
Ээээ нет. Не нужно переводить стрелки. Мы тут говорим со стороны программистов, а не пользователей (читай название темы). Так вот ARX-файлы совместимы в принципе в лучшем случае в линейке из 3 версий AutoCAD, а lisp-программы могут быть не совместимы в ряде случаев, что чаще всего связано с багами. VBA я совсем не рассматриваю в силу слишком больших его ограничений, проблем с x64 и т.д. Выбор остаётся между .NET и lisp. Так вот программы на lisp действительно долговечней программ на .NET, хотя бы потому что .NET под AutoCAD еще и 10 лет нет, а lisp'у уже > 25 лет.
Александр Ривилис вне форума  
 
Непрочитано 31.12.2014, 01:17
#217
ur_naz


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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
VBA я совсем не рассматриваю в силу слишком больших его ограничений, проблем с x64
Раз уж заговорили о х64. то есть такой objectidtoobject, который вдруг стал objectidtoobject32, а потом вдруг стал снова objectidtoobject и это всего за 3 года...
А еще были такие файлы *.bi4 кто о них сейчас помнит?
ur_naz вне форума  
 
Непрочитано 31.12.2014, 13:14
#218
Александр Ривилис

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


Цитата:
Сообщение от ur_naz Посмотреть сообщение
Раз уж заговорили о х64. то есть такой objectidtoobject, который вдруг стал objectidtoobject32, а потом вдруг стал снова objectidtoobject и это всего за 3 года...
Метод objectidtoobject32 появился в AutoCAD ActiveX/COM модели в 2007-ом году в версии AutoCAD 2008. К lisp это никакого отношения не имеет. И убрали его в AutoCAD 2014, так как он стал неактуален.
Александр Ривилис вне форума  
 
Непрочитано 31.07.2015, 10:55
#219
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Доброго времени суток! Помогите пожалуйста начинаючему разработчику на .NET (это я )
Имеется опыт программирования на VBA, но с недавнего времени решился перейти на .NET. На данный момент практически полностью прочитал сайт "NET Лаборатория", 2 раза пересмотрел все лабораторные работы "DevTV" и наконец перешел к приктике, но к сожалению споткнулся чуть раньше (мягко говоря) чем ожидал. А именно, после настроек программы не удается даже создать процедуру "Hello Word!". Отсутствует атрибут "CommandMethod"(см. вложение). Подскажите, в чем может быть дело?
Win7 x64/VisualStudio 2013/ObjectARX SDK 2016/AutoCAD_2015-2016_DotNet_Wizards/AutoCAD 2016(2015)
Заранее спасибо!
Миниатюры
Нажмите на изображение для увеличения
Название: Helloword.jpg
Просмотров: 58
Размер:	210.2 Кб
ID:	154204  
art_rrc вне форума  
 
Непрочитано 31.07.2015, 11:06
#220
Boxa

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


Цитата:
Сообщение от art_rrc Посмотреть сообщение
Подскажите, в чем может быть дело?
забыл подключить AcCoreMgd.dll (важно для 2013 и выше)
(http://help.autodesk.com/view/ACD/20...8-E00ED139E0D3
http://bushman-andrey.blogspot.ru/20...ms-visual.html
)

Последний раз редактировалось Boxa, 31.07.2015 в 11:13.
Boxa вне форума  
Ответ
Вернуться   Форум 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