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

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

Страницы: [1] 2 3 ... 10
1
AutoCAD .NET API / Re: Сложный Jig.
« Последний ответ от Вильдар 28-01-2022, 21:57:41 »
Посмотри DrawJig, там можно рисовать произвольное количество объектов.
2
AutoCAD .NET API / Сложный Jig.
« Последний ответ от Балиев 28-01-2022, 19:05:24 »
Добрый день,

Есть следующая задача: необходимо многократно копировать выбранный объект (блок) через определенный интервал. При этом необходимо, чтобы копирование проходило динамически в соответствии с расстоянием курсора от начальной точки. Одновременно с этим необходимо, чтобы отслеживался еще и угол поворота линии « начальная точка – текущая точка», и в соответствии с этим углом группа скопированных объектов поворачивалось бы относительно начальной точки.

Я пытаюсь решить эту задачу используя технологию Jig. У  Kean Walmsley я нашёл код, который позволяет динамические вращать выбранный объект: https://through-the-interface.typepad.com/through_the_interface/2008/03/using-a-jig-to.html. Осталось научиться динамически копировать выбранный объект в соответствии с расстоянием от курсора до начальной точки. В этом, собственно, и загвоздка. Я понимаю что в какой то момент мне необходимо переопределять блок таким образом, чтобы объекты в нем заполняли пространство от начальной точки до текущего положения курсора, Но мне совершенно непонятно в каком месте кода мне нужно выполнять это переопределение.

Заранее благодарен за любые идеи решения этой задачи.
3
Посмотреть
oRow.ComponentDefinitions.count

как на уровне oRow выудить информацию о том, что деталь погашена?
Наверное все таки деталь подавленная, а не погашенная. Погашенная, это когда она не видимая.
Подавленная в версиях до 2022 в память компьютера вообще не загружалась, поэтому попытка к ней обратиться выдаёт ошибку.
В 2022 ситуация другая
 


А так можно по полному имени из BomRow.ReferencedFileDescriptor.FullFileName поискать сборке AssemblyComponentDefinition.Occurences там можно найти свойство Occurence.Suppressed
4
еще есть вопрос. Если деталь погашена, то при попытке получить
Код - vb.net [Выбрать]
  1. Dim oCompDef As ComponentDefinition = oRow.ComponentDefinitions.Item(1)
выскакивает ошибка и при поиощи Try Catch я могу вычислить погашенную деталь. Но использовать Try Catch не комильфо, моло ли по каким причинам ошибка выскочила. как на уровне oRow выудить информацию о том, что деталь погашена?
Код - vb.net [Выбрать]
  1. Dim oRow As BOMRow = oBomRows.Item(i)
5
Не помогает...
Если в строке "Dim oBOMView As BOMView = oBOM.BOMViews.Item("Структурированный")" написать вместо "Структуированный " какой нибудь бред вроде "йцукен"
А так пробовали? :
Код - vb.net [Выбрать]
  1.             Dim lang As String = ""
  2.             If m_inventorApplication.LanguageName = "English" Then
  3.                 lang = "Structured"
  4.             ElseIf m_inventorApplication.LanguageName = "Russian" Then
  5.                 lang = "Структурированный"
  6.             End If
  7.             fBOMView = fBOM.BOMViews.Item(lang)
А смысл? У меня русский. И если вписать "Структуированный" то все работает. Но не везде. Если поставить циферку 1 то все работает везде.
6
Не помогает...
Если в строке "Dim oBOMView As BOMView = oBOM.BOMViews.Item("Структурированный")" написать вместо "Структуированный " какой нибудь бред вроде "йцукен"
А так пробовали? :
Код - vb.net [Выбрать]
  1.             Dim lang As String = ""
  2.             If m_inventorApplication.LanguageName = "English" Then
  3.                 lang = "Structured"
  4.             ElseIf m_inventorApplication.LanguageName = "Russian" Then
  5.                 lang = "Структурированный"
  6.             End If
  7.             fBOMView = fBOM.BOMViews.Item(lang)
7
Давайте пример вашей сборки небольшой в виде файла, и я так понимаю надо просто доступ к структурированному списку
я посмотрю что там не так
Мне кажется дело не в сборке, а в моем коде или инвенторе. Инвентор у меня 2020.
8
Код - vb.net [Выбрать]
  1.     Dim oBOMView As BOMView = oBOM.BOMViews.Item("Без имени"
)
не работает.
Работает только так:
Код - vb.net [Выбрать]
  1.     Dim oBOMView As BOMView = oBOM.BOMViews.Item(1)

Если написать так:
Код - vb.net [Выбрать]
  1.         oBOM = _InvDoc.ComponentDefinition.BOM          'Получаем ссылку на объект BOM, предоставляемый описанием сборки — её объектом ComponentDefinition.
  2.         oBOM.StructuredViewEnabled = True
  3.         oBOM.StructuredViewFirstLevelOnly = True
  4.         Dim oBOMView As BOMView = oBOM.BOMViews.Item(1)
то ошибка выпадает на строке:
Код - vb.net [Выбрать]
  1. oBOM.StructuredViewFirstLevelOnly = True
при уровне детализации "Главный" эта строка ничего не меняет True, False, без разницы. Получаю одно и то же. Впрочем как и строка
Код - vb.net [Выбрать]
  1.      oBOM.StructuredViewEnabled = True
почему то ни на что не влияет... Беда.
9
Давайте пример вашей сборки небольшой в виде файла, и я так понимаю надо просто доступ к структурированному списку
я посмотрю что там не так
10
Написал такие строчки:
Код - vb.net [Выбрать]
  1.         ListBox1.Items.Add(oBOM.BOMViews.Item(1).Name)      ' Без имени
  2.         ListBox1.Items.Add(oBOM.BOMViews.Item(2).Name)      ' Структурированный
Отклик в коментарии.
В общем так получается. Если я заменяю строку
Код - vb.net [Выбрать]
  1. Dim oBOMView As BOMView = oBOM.BOMViews.Item("Структурированный")
на:
Код - vb.net [Выбрать]
  1. Dim oBOMView As BOMView = oBOM.BOMViews.Item(2)
то работает как и раньше. Если я заменяю на:
Код - vb.net [Выбрать]
  1. Dim oBOMView As BOMView = oBOM.BOMViews.Item(1)
то все работает вне зависимости от выбранного уровня детализации. Получается правильная строка:
Код - vb.net [Выбрать]
  1. Dim oBOMView As BOMView = oBOM.BOMViews.Item("Без имени")
Бредятина какая-то... Такое очучение, что кто-то где-то что-то напутал... Только не пойму кто и где...
Страницы: [1] 2 3 ... 10