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

Вернуться   Форум 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 возникающих вопросов..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
Просмотров: 121537
 
Непрочитано 15.08.2013, 00:01
#101
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


я сейчас пишу программку для автоматизации рисования развёрток стен. сегодня решил посчитать строки кода, насчитал ~3200 и обалдел блин, т.к. до этого моя самая большая программа не превышала 100 строк =)
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 15.08.2013, 06:42
#102
DEM

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


swell{d}
Обработчики ошибок делаешь???
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 15.08.2013, 20:17
#103
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


только входной контроль исходных данных, задаваемых пользователем. а дальше - тупо построения.

ещё не доделал. пока так: https://dl.dropboxusercontent.com/u/...8-15-20-12.avi (тормоза построений связаны с тормозами связи экселя с нанокадом. но выглядит забавно)
скоро закончу и будет получаться сразу готовый лист со спецификацией и всеми необходимыми плюшками =)
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 15.08.2013, 20:26
#104
DEM

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


swell{d}
Дык в конце выгружать надоть в эксель...
Я наверное на С++ перейду ща т.к. АПИ СКАДа прислали, а он на С++.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 15.08.2013, 21:42
#105
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


В эксель я ничего не выгружаю, я из экселя подключаюсь к нано и управляю им
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 15.08.2013, 21:49
#106
DEM

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


swell{d}
А чего не сразу на net?
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 15.08.2013, 23:22
#107
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


а в нано есть "net" ?
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 16.08.2013, 07:17
#108
DEM

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


swell{d}
А разве нету????
Ну ты батенька меня удивляешь....
Импорт координат из текстового файла в чертёж nanoCAD на классическом .NET API
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 16.08.2013, 09:12
#109
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


Vba меня всем устраивает и отлично работает
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 16.08.2013, 09:52
#110
DEM

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


Цитата:
Сообщение от swell{d} Посмотреть сообщение
Vba меня всем устраивает и отлично работает
Цитата:
Сообщение от swell{d} Посмотреть сообщение
(тормоза построений связаны с тормозами связи экселя с нанокадом. но выглядит забавно)

Ну не знаю....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 16.08.2013, 21:53
#111
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


Есть другой путь. Сохранить скрипт в текстовый файл, а потом из нано запустить этот скрипт. Отрисовывает мгновенно, но надо нажтмать кнопку в экселе, затем переключаться в нано и там нажимать кнопку. Долго =)
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 17.08.2013, 07:56
#112
DEM

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


А еще вариант, с делать в vb.net и загружать эту dll в Нанокад, вызвать команду и все мгновенно выгрузится в файл экселя....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 17.08.2013, 09:10
#113
AlexV

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


Цитата:
Сообщение от swell{d} Посмотреть сообщение
Есть другой путь. Сохранить скрипт в текстовый файл, а потом из нано запустить этот скрипт. Отрисовывает мгновенно, но надо нажтмать кнопку в экселе, затем переключаться в нано и там нажимать кнопку. Долго =)
А че, кнопка в екселе не может сама нажимать кнопку в нано?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 17.08.2013, 12:19
#114
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


А вот это идея =) попробую..
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 17.08.2013, 12:25
#115
DEM

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


Можно скрипт autoit добавить для этого....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 17.08.2013, 12:48
#116
AlexV

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


Цитата:
Сообщение от swell{d} Посмотреть сообщение
я сейчас пишу программку для автоматизации рисования развёрток стен. сегодня решил посчитать строки кода, насчитал ~3200 и обалдел блин, т.к. до этого моя самая большая программа не превышала 100 строк =)
Задумался.. пересчитал строки в своей екселевской проге для подсчету врс.. Однако, тож примерно 3000 с небольшим! Начал писать "на коленке" и не смог остановиться..
А какой-нить монстр типа hwd небось все это в пару сотен уложил бы..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 19.08.2013, 12:55
#117
DEM

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


Boxa
Вроде с основой твоего кода разобрался, и он у меня работает сейчас, по крайней мере блоки считает...
Но вот как атрибуты перебирать чей то не разберусь...
И еще как с динамическими массивами разобраться...
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.

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

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


Цитата:
Сообщение от DEM Посмотреть сообщение
Но вот как атрибуты перебирать чей то не разберусь...
У вставки блока BlockReference есть свойство AttributeCollection. В нем ID-коллекция всех атрибутов блока.
Вот тут код на C#, в нем это видно. На VB переделать несложно будет: http://adn-cis.org/forum/index.php?topic=113.0
Код:
[Выделить все]
И еще как с динамическими массивами разобраться...
Фишка новая, вряд ли ее кто-то успел программно поковырять.
Do$ вне форума  
 
Непрочитано 19.08.2013, 13:54
#119
DEM

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


Do$
Тогда может программно разбивать эти объекты, а потом востанавливать?
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 19.08.2013, 14:11
#120
Boxa

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


Цитата:
Сообщение от swell{d} Посмотреть сообщение
Есть другой путь.
А почему просто не сделать форму с полями и не трогать excel? Или читать данные о стенах из xml файла?
И все это внутри нанокада.


Цитата:
Сообщение от DEM Посмотреть сообщение
Но вот как атрибуты перебирать чей то не разберусь...
Как то так, хотя дмаю можно и средствами Linq это сделать.
Код:
[Выделить все]
If blr.HasAttributeDefinitions Then
	For Each idAtt As ObjectId In acBlock.AttributeCollection
		Dim obj As DBObject = acTrans.GetObject(idAtt, OpenMode.ForRead)
		If TypeOf obj Is AttributeReference Then
			Dim attRef As AttributeReference = CType(obj, AttributeReference)
			If attRef.Tag.ToUpper() = "ОТМЕТКА" Then
				attRef.UpgradeOpen()
				attRef.TextString = znak_otn & CStr(Format(nov_otn, "0.000"))
				attRef.DowngradeOpen()
			End If
			If attRef.Tag.ToUpper() = "ВТОРАЯ_СТРОЧКА" Then
				attRef.UpgradeOpen()
				attRef.TextString = znak_abs & CStr(Format(nov_abs, "0.000"))
				attRef.DowngradeOpen()
			End If
		End If
	Next
End If
Цитата:
Сообщение от DEM Посмотреть сообщение
И еще как с динамическими массивами разобраться...
а что это?

Последний раз редактировалось Boxa, 19.08.2013 в 14:19.
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