Последние сообщения

Последние сообщения

Страницы: 1 ... 8 9 [10]
91
VBA / Как изменить параметр видимости блока через VBA?
« Последний ответ от Slepovatiy 30-12-2021, 17:59:30 »
Добрый день! Начал учиться VBA в связке Autocad и возник вопрос на который не могу который день найти ответ , как  изменить свойства видимости блока.
Добавлю фото блока , и код пример который я начал разбирать. Пытался сделать автоматизированную однолинейную схему

Код - Visual Basic [Выбрать]
  1. Sub Vs()
  2.     'Прописываем переменные
  3.    Dim blockref As AcadBlockReference
  4.     Dim name As String
  5.     Dim pp As Variant
  6.     Dim AP As Excel.Application
  7.     Dim WB As Excel.Workbook
  8.     Dim WS As Excel.Worksheet
  9.     On Error Resume Next
  10.     'Подкл к ексель
  11.    Set AP = Excel.Application
  12.     Set WB = AP.Workbooks.Open("D:\Odnolineyka.xlsm")
  13.     Set WS = WB.Worksheets(1)
  14.     'Получаем точку вставки
  15.    pp = ThisDrawing.Utility.GetPoint(, "Укажите точку вставки")
  16.     'Вставка блока
  17.    name = "МультиФидер"
  18.     Set blockref = ThisDrawing.ModelSpace.insertblock(pp, name, 1, 1, 1, 0)
  19.        
  20.     'Получение атрибутов
  21.    If blockref.HasAttributes = True Then
  22.     att = blockref.GetAttributes
  23.         For i = LBound(att) To UBound(att)
  24.             If att(i).TagString = "НАИМЕНОВАНИЕ_ПОТРЕБИТЕЛЯ" Then
  25.             att(i).TextString = Cells(12, 2)
  26.             ElseIf att(i).TagString = "МАРКА_КАБЕЛЯ" Then
  27.             att(i).TextString = Cells(13, 2)
  28.             ElseIf att(i).TagString = "ДЛИНА_КАБЕЛЯ" Then
  29.             att(i).TextString = Cells(14, 2)
  30.             ElseIf att(i).TagString = "НОМИНАЛ_АВ" Then
  31.             att(i).TextString = Cells(16, 2)
  32.             ElseIf att(i).TagString = "НОМИНАЛ_МП_1" Then
  33.             att(i).TextString = Cells(18, 2)
  34.             ElseIf att(i).TagString = "НОМИНАЛ_МП_2" Then
  35.             att(i).TextString = Cells(20, 2)
  36.             End If
  37.             Next
  38.             End If
  39.             AP.Quit
  40.     End Sub



Сразу прошу прощения что может банальный вопрос.
92
Добрый день!
Вопрос заключается в необходимости хранить идентификаторы объектов, которые являются вложенными в данный; к примеру -- грани солида (Faces).
Зачем это надо? Объясняю - есть необходимость обрабатывать данные чертежа в другом ПО и вернуть их же + доп. параметры, которые потом назначить этим элементам. В настоящем примере - материалы для граней тела.

У них [дочерних элементов] отсутствует ObjectId, у которого можно было бы получить Handle, а наличествующий SubentityId не имеет нужного представления.
Вариант с генерацией FullSubentityPath https://adn-cis.org/podsvetka-segmenta-polilinii.html тоже не совсем подходит, так как для этого придется создавать дополнительную структуру типа словаря/дерева во время нового перебора граней солидов (во время которого заново находить этот FullSubentityPath, преобразовать в строку и искать по ключу в созданной коллекции). С позиции работы с памятью не очень хорошо .... хоть наверное так пока и поступлю.
Аналогично вместо FullSubentityPath могу использовать "строковый кортеж" типа $"{Solid.Handle}_{Face.Index}".
Также я намеревался использовать в качестве идентификатора грани её центроид (усредненную сумму координат по X,Y,Z) - то есть в целом 3 варианта решения всё равно сводятся к необходимости создания коллекции с сопоставлением ключ:доп. параметры солида, а хотелось бы имея некое строчное представления идентификатора как Handle получать его представление в БД чертежа и производить с ним манипуляции без необходимости сопоставления с чем-либо вспомогательным.

Надеюсь, мысль донёс корректно ....
P.S. Хотя вот что интересно - а этот набор будет упорядочен всегда в рамках текущего состояния солида (не изменяя его) и после перезапуска чертежа (solid_id - это ObjectId солида)
Код - C# [Выбрать]
  1. List < Autodesk.AutoCAD.BoundaryRepresentation.Face > faces = new Brep(new FullSubentityPath(new ObjectId[1] { solid_id }, new SubentityId(SubentityType.Null, IntPtr.Zero))).Faces.ToList();
93
AutoCAD .NET API / Re: Программная "подсветка" примитива.
« Последний ответ от Владимир Шу 29-12-2021, 18:42:17 »
У класса Entity есть методы Highlight(); и Unhighlight();
94
AutoCAD .NET API / Программная "подсветка" примитива.
« Последний ответ от Балиев 29-12-2021, 17:14:03 »
Добрый день,

Имеется коллекция отрезков. Как при помощи индекса отрезка осуществить "подсветку" этого отрезка на чертеже?
Это нужно для того, чтобы пользователь знал, для какого отрезка он вводит данные в диалоговом окне. Т.е. подсветка должна сохраняться, пока пользователь вводит данные.

Заранее благодарен
95
Прошло почти 8 лет, ничего не поменялось? Поиск по API 2022 ни к чему не привел, но может я не внимательный, потому и уточняю.
Нет. Эти возможности остались только в ObjectARX.
96
Прошло почти 8 лет, ничего не поменялось? Поиск по API 2022 ни к чему не привел, но может я не внимательный, потому и уточняю.


И на всякий случай закину старые ссылки по теме:
https://adndevblog.typepad.com/autocad/2015/03/creating-associative-dimension-in-paperspace-associated-to-a-modelspace-entity.html
https://adndevblog.typepad.com/autocad/2015/02/making-a-custom-entity-associative-dimension-enabled.html
97
AutoCAD .NET API / Re: api reference 21 и 22
« Последний ответ от Александр Ривилис 28-12-2021, 11:00:09 »
Спасибо, а про ADT?
Увы. Для действительных членов ADN есть OMF. Но это C++ - расширение ObjectARX для ADT.
98
AutoCAD .NET API / Re: api reference 21 и 22
« Последний ответ от Владимир Шу 28-12-2021, 10:47:20 »
Александр Ривилис, Спасибо, а про ADT? Меня в первую очередь интересует работа с проектом...
99
AutoCAD .NET API / Re: api reference 21 и 22
« Последний ответ от Александр Ривилис 28-12-2021, 10:44:59 »
В конце не ENG, а ENU
100
AutoCAD .NET API / Re: api reference 21 и 22
« Последний ответ от Владимир Шу 28-12-2021, 10:40:51 »
Александр Ривилис, видимо этот радел доступен не для всех...
Извините, вам запрещён просмотр содержимого спойлеров.


И еще вопрос, а есть ли такая же ссылка, но на тему архитектурного автокада?

ЗЫ.
Хотя разобрался, там нужно перейти по ссылке на "Developer Reference Help" и там уже будет видна ссылка на API, но про ADT все равно ничего найти не могу.
Страницы: 1 ... 8 9 [10]