DVAD
1

VBA Выбор примитивов AutoCAD с фильтрацией по слоям

06.06.2010, 16:36. Показов 8222. Ответов 3
Метки нет (Все метки)

Поставлена такая следующая задача:
необходимо програмно выделить все мультилинии, находящиеся в определенном слое
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2010, 16:36
Ответы с готовыми решениями:

Разработать функцию (VBA) для обработки примитивов типа отрезок
Раньше не когда не программировал в Бесике. Знаю только Делфи и С,на уровне новичка. А тут...

Информация по VBA B Autocad
Давненько меня здесь не было. Много воды утекло, вот я уже и инженер. Теперь можно и программу...

VBA для AutoCad
Посоветуйте, пожалуйста, хорошую литературу по VBA для AutoCAD.

Не работает Property Get в VBA for AutoCAD
Вот часть описания класса объекта: Private dblStartAngle As Double Public Property Get...

3
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
06.06.2010, 23:02 2
AutoCAD'а, к моему великому сожалению пока не знаю,
но решил попробовать. М.б. мои 'достижения' чем-нибудь и помогут

Dim oLayer As AcadLayer
For Each oLayer In ThisDrawing.Layers
'активизируем интересующий нас слой
If oLayer.Name = 'Имя_слоя' Then ThisDrawing.ActiveLayer = oLayer
'Здесь нужно как-то обратиться к объектам типа мультилиний (или полилиний?),
'но сделать этого я не сумел.
Next oLayer
0
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 7
10.06.2010, 08:41 3
Можно просмотреть все примитивы в чертеже и проверять свойства 'тип примитива' и 'слой' (я забыл как они точно называются) и если они оба удовлетворяют условию, то применить метод Select. Для уточнения синтаксиса названий примитивов создай переменную типа чертеж присвой ей активный чертеж и просмотри ее в Watch окне.
Visual Basic
1
2
3
4
5
6
7
8
9
dim drw as AcadDocument
dim msObj As AcadObject
Set drw = ThisDrawing 
    For i = 0 To drw.ModelSpace.Count 'для всех объектов в простр. модели    
        Set msObj = drw.ModelSpace.Item(i)
        If msObj.ObjectName = 'AcDbPolyline' and msObj.Layer='имя слоя' Then
         msObj.select
        end if
    Next
Как-то так. Компы теперь быстрые, глазом не успеешь моргнуть, а он уже 'прошерстит' весь чертеж
0
DVAD
10.06.2010, 10:23 4
Все оказалось проще:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
intType(0) = -4
intType(1) = 0
intType(2) = 8
intType(3) = -4
 
varType(0) = '<AND'
varType(1) = 'MLine'
varType(2) = 'Layer'
varType(3) = 'AND>'
 
Set objSS = ThisDrawing.SelectionSets.Add('Temp')
objSS.Select acSelectionSetAll, Filtertype:=intType, Filterdata:=varType
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2010, 10:23
Помогаю со студенческими работами здесь

Компонент VBA для autocad 2012 civil 3d
Прилагаю скрин со всеми подробностями. Цель этого сообщения - открыть этот файл. Перехожу по...

3D-пружина, спирали из delphi в Autocad используя VBA
добрый вечер! подскажите пожалуйста, как создать 3d пружину или спираль с помощью VBA обращаясь...

Серединный перпендекуляр определенной длины (VBA-autocad)
есть отрезок, 2 точки заносятся пользователем, нужно провести серединный перпендекуляр , с длиной...

3D-пружина, спирали из delphi в Autocad используя VBA
добрый вечер! подскажите пожалуйста, как создать 3d пружину с помощью VBA обращаясь через Delphi к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru