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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA в AutoCAD

VBA в AutoCAD

Закрытая тема
Поиск в этой теме
Непрочитано 27.12.2005, 21:04 #1
VBA в AutoCAD
alle
 
Регистрация: 11.08.2005
Сообщений: 921

Уважаемые коллеги
Посоветуйте литературу и проч. по использованию VBA для разработки пользовательских приложений применительно к AutoCAD
Просмотров: 17341
 
Непрочитано 27.12.2005, 23:36
#2
C1


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


Мне вполне достаточно примеров в справке AutoCAD и самой этой справки (и опыта в Visual Basic). Копирую пример, вставляю в новый модуль и все проверяю вживую.
C1 вне форума  
 
Непрочитано 28.12.2005, 08:52
#3
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


в vba получается косовато: нет динамического вида создаваемых объектов (максимум резиновая лента). если есть оригинальные задумки лучше сразу изучать си и писать .arx приложения.
если получится изучить .arx, и понравилась идея: http://dwg.ru/dwl/453 , то можно будет переписать (самому времени не хватает).
p_sh вне форума  
 
Непрочитано 28.12.2005, 10:28
#4
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,752
Отправить сообщение для Огурец с помощью Skype™


Уважаемые коллеги!
Противоположный вопрос - а как отключить VBA в автокаде? У одной из наших сотрудниц он автоматически грузится во все файлы, создаёт ненужные и непонятные макросы, x-refы и откровенно мешает работать. Отключить не сумел, загружаеется и довольно долго при входе в ACAD.
Огурец вне форума  
 
Непрочитано 28.12.2005, 13:07
#5
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


1. при установке автокада отключите опцию vba.
2. просто удалите acvba.arx из каталога автокада (но это хуже 1)
p_sh вне форума  
 
Непрочитано 28.12.2005, 13:14
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Можно не так жестоко, по-моему:
- поискать файл acad.dvb и снести его, если он находится по путям поддержки када.
- где-то на autocad.ru вроде как была тема по поводу отключения vba-макросов. Но как это делать, я чего-то не усек - даже в какой области копаться.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.12.2005, 15:07
#7
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


может быть в dwt шаблоне есть встроенный макрос, и по этому vba грузится автоматом. (соответственно он есть и вовсех созданных по этому шаблону файлах. и при их загрузке автоматом подгружаются vba.
Выковырять их можно так:
запустить диспетчер vba: сервис->макросы-> диспетчер vba
в диалоговом окне - кнопка в рамке "Рисунок" - ИЗВЛЕЧЬ
или по п 2. см выше.
хотя обычно макросы (хорошие) позволяют несколько расширить акад и повысить производительность.
опущусь до саморекламы
http://dwg.ru/dwl/453
p_sh вне форума  
 
Непрочитано 28.12.2005, 15:26 Re: VBA в AutoCAD
#8
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


Цитата:
Сообщение от alle
Уважаемые коллеги
Посоветуйте литературу и проч. по использованию VBA для разработки пользовательских приложений применительно к AutoCAD
я частенько заглядывал в Интернет учебники vbnet.ru и т.п. по vb- очень помогало.
p_sh вне форума  
 
Непрочитано 28.12.2005, 20:58
#9
C1


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


Цитата:
Сообщение от p_sh
в vba получается косовато: нет динамического вида создаваемых объектов (максимум резиновая лента). если есть оригинальные задумки лучше сразу изучать си и писать .arx приложения.
Использую для динамической вставки создаваемых объектов буфер обмена через SendCommand:
"_copybase 0,0,0 l "
"_erase l "
"_pasteclip"
C1 вне форума  
 
Непрочитано 04.05.2009, 13:55
#10
Agens


 
Регистрация: 24.06.2007
Minsk
Сообщений: 34


Может есть тут специалисты по VBА, хочу для ACADа на VBA реализовать след. вещь - поиск элементов (линий, блоков и т.д.) аналог команды - "_qselect". Для начала надо найти в чертеже все блоки с именем "*Ux", где х - лубое число от 0 до 1000 и выбрать их... можте кто поможет, подскажет...
или может кто пример скинет, чтобы просто выбирал все линии, а я потом разберусь как нить... Спасибо... Жду...
Agens вне форума  
 
Непрочитано 12.05.2009, 18:00
#11
Сергей Дубина


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


Sub Example()
Dim BlockObj As AcadBlockReference
Dim entry As AcadEntity

For Each entry In ThisDrawing.ModelSpace

If entry.ObjectName = "AcDbBlockReference" Then
Set BlockObj = entry
MsgBox BlockObj.Name 'имя текущего блока, дальше делай с ним что нужно
'(перебираются все вхождения блоков в модели)
End If
Next
End Sub
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 15.03.2010, 11:16 Вывод координат
#12
Dima13


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


Друзья, подскажите пожалуйста начинающему программисту.
У меня есть фрагмент программного кода, который ищет первый приметив и выводит его имя:
Код:
[Выделить все]
[size=3]Sub FindFirstEntity()[/size]
[size=3]On Error Resume Next[/size]
[size=3]Dim entity As AcadEntity[/size]
[size=3]If ThisDrawing.ModelSpace.count <> 0 Then[/size]
[size=3]Set entity = ThisDrawing.ModelSpace.Item(0)[/size]
[size=3]MsgBox entity.ObjectName + " первый примитив в пространстве модели."[/size]
[size=3]Else[/size]
[size=3]MsgBox "Нет ни одного объекта в пространстве модели."[/size]
[size=3]End If[/size]
[size=3]End Sub[/size]
[size=3]А как мне вывести не имя, а его координаты (x, y)? Заранее благодарю![/size]

Последний раз редактировалось Кулик Алексей aka kpblc, 15.03.2010 в 11:37.
Dima13 вне форума  
 
Непрочитано 15.03.2010, 11:43
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Интересно... а какие координаты должны быть в результате, например, у выноски? Или у размера?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2010, 12:42
#14
Dima13


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Интересно... а какие координаты должны быть в результате, например, у выноски? Или у размера?
Да, вы правы, но меня интересуют координаты только текста.
Dima13 вне форума  
 
Непрочитано 15.03.2010, 13:03
#15
AlexV

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


Цитата:
Сообщение от Dima13 Посмотреть сообщение
Да, вы правы, но меня интересуют координаты только текста.
Добавь после
Код:
[Выделить все]
Set entity = ThisDrawing.ModelSpace.Item(0)
:
Код:
[Выделить все]
Dim pnt
If TypeName(entity) = "IAcadText" Then
  pnt = entity.InsertionPoint
  MsgBox "X=" & pnt(0) & " Y=" & pnt(1)
End If
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 15.03.2010, 15:02
#16
Dima13


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


Цитата:
Сообщение от AlexV Посмотреть сообщение
Добавь после
Код:
[Выделить все]
Set entity = ThisDrawing.ModelSpace.Item(0)
:
Код:
[Выделить все]
Dim pnt
If TypeName(entity) = "IAcadText" Then
  pnt = entity.InsertionPoint
  MsgBox "X=" & pnt(0) & " Y=" & pnt(1)
End If
Спасибо, получилось
Dima13 вне форума  
 
Непрочитано 15.03.2010, 15:15
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Это "получилось" до тех пор, пока у текста (если, конечно, имеется в виду именно однострочный текст) выравнивание установлено "вниз-влево".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2010, 16:52
#18
AlexV

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Это "получилось" до тех пор, пока у текста (если, конечно, имеется в виду именно однострочный текст) выравнивание установлено "вниз-влево".
Ну, ошибки код не выдает и при другом выравнивании..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 15.03.2010, 20:46
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ошибку-то он не выдаст. Но вот какие результаты?
Создаем примитив TEXT следующим лиспом (ну так, чтобы запутать ):
Код:
[Выделить все]
(defun test ()
  (entmakex '((0 . "TEXT")
	      (100 . "AcDbEntity")
	      (100 . "AcDbText")
	      (10 0. 0. 0.0)
	      (40 . 2.5)
	      (1 . "qwerty")
	      (50 . 0.0)
	      (41 . 0.75)
	      (51 . 0.0)
	      (71 . 0)
	      (72 . 1)
	      (11 17457.5 15522.3 0.0)
	      (210 0.0 0.0 1.0)
	      (100 . "AcDbText")
	      (73 . 2)
	      )
	    ) ;_ end of entmakex
  ) ;_ end of defun
И прочитай его InserionPoint Я сейчас проверить и написать код не могу, но сильно подозреваю, что результатом будет значение 10 группы...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2010, 22:12
#20
AlexV

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ошибку-то он не выдаст. Но вот какие результаты?
Создаем примитив TEXT следующим лиспом (ну так, чтобы запутать ):
И прочитай его InserionPoint Я сейчас проверить и написать код не могу, но сильно подозреваю, что результатом будет значение 10 группы...
...Я не знаю, кто такая Чили... и какое значение у 10 группы.. но у созданного текста есть значение InserionPoint... (фиолетовая точка на рисунке). Можно использовать TextAlignmentPoint, тогда получим координаты зеленой точки. Можно через
Код:
[Выделить все]
entity.GetBoundingBox p1, p2
pnt(0) = (p1(0) + p2(0)) / 2
pnt(1) = (p1(1) + p2(1)) / 2
получить красную точку.. Смотря что нужно..

__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA в AutoCAD

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск