Перейти к содержанию

MosS

Пользователи
  • Публикаций

    6
  • Зарегистрирован

  • Посещение

Репутация

3 Обычный

Информация о MosS

  • Звание
    Новичок

Контакты

  • Сайт
    http://www.timag.org

Информация

  • Пол
    Мужчина
  • Город
    Запорожье
  • Интересы
    в т.ч. САПР
  1. 2 ISL: скажите плз. а какой тип данных используется для хранения координат? просто у меня иногда возникает: TeighaX: Arithmetic overflow иногда при работе с числами порядка 10**9 а иногда и с числами порядка 10**6
  2. да, спасибо, я поймал. просто ещё руки не дошли..
  3. При создании модулей расширения nanoCAD возникли следующие проблемы: 1) не удалось получить атрибуты блока (AcadBlockReference.GetAttributes(), см. тему тынц) 2) не удалось получить код класса объекта (AcadEntity.GetEntityType(), см. там-же (решение есть)) 3) объект SelectionSet ведёт себя не так, как в автокаде и вообще, поведение этого метода доставляет. При первом вызове метода Select происходит выделение требуемых объектов; при повторном вызове - происходит очистка SelectionSet-a и, затем, выделение новых объектов; в автокаде каждый последующий вызов Select - добавляет новые объекты ко множеству уже выделенных (я считаю, что в автокаде - логичнее и более гибко, т.к. перед Select-ом всегда можно вызвать Clear, если это нужно). Кроме этого, данный метод не работает (не происходит выделения), если приложение невидимо (Application.Visible == false) - в автокаде абсолютно такое-же поведение, но у нанокада ситуация лучше, т.к. автокад не выделяет объекты даже если они не в текущей видимой области, а нанокад - выделяет в этом случае. Вообще странно, что у нанокада похожее поведение, т.к. он использует библиотеку Teigha (в миру DWGDirect), которая, якобы, написана именно путём обратной разработки dwg - формата (http://ru.wikipedia.org/wiki/Open_Design_Alliance) 4) не ясна ситуация с координатами и их передачей в качестве параметров. В автокаде координаты передаются в функции через массив из 3-х элементов. Члены массива - варианты, с типом данных double. В нанокаде - координаты точки передаются ввиде строки: "1345.001,4523.0349,873.000" Всё бы ничего, но при передаче чисел, превышающих 10 000 000 000 возникает ошибка: TeighaX: Arithmetic overflow В некоторых случаях эта ошибка возникает даже при числах выше 1 000 000 (что печально)
  4. Насчёт AcadEntity.GetEntityType() - есть другой выход, можно использовать свойство AcadEntity.ObjectName а потом текстовой строке (результату) поставить в соответствие константу из множества AcEntityName. Ex: "AcDbMText" == acMtext (21) Насчёт GetEntityType - в автокад микеникал - для половины объектов подобная лажа имеет место быть. Очевидно тенденция Есть ещё ряд замечаний по поводу АктивХ предлагаю публиковать их в теме Проблемы ActiveX.
  5. Кроме этого не работает критичный для автоматизации метод AcadEntity.GetEntityType()
  6. Добрый день. Есть необходимость получения атрибутов блока. При этом вызов метода GetAttributes() объекта AcadBlockReference приводит к исключению. Вот пример кода на VBS (под word-ом), который гарантированно приводит к ошибке: (документ "G:\testprj\g1\x.dwg" в 6-ом элементе ModelSpace содержит блочную ссылку блока с атрибутами (это точно )) в момент вызова varAttributes = br.GetAttributes происходит ошибка: Class doesn't support Automation (Error 430), или из Qt: First-chance exception at 0x7d4e2366 in nCad_Test1.exe: 0x80004002: Интерфейс не поддерживается. QAxBase: Error calling IDispatch member GetAttributes: Unknown error Sub p1() Dim nc As nanoCAD.Application Dim d As nanoCAD.Document Dim e As OdaX.AcadEntity Dim br As OdaX.AcadBlockReference Set nc = New nanoCAD.Application nc.Visible = True Set d = nc.Documents.Open("G:\testprj\g1\x.dwg", True) Set e = d.ModelSpace.Item(6) Set br = e Dim strAttributes As String Dim i As Integer Dim varAttributes As Variant varAttributes = br.GetAttributes strAttributes = "" For i = LBound(varAttributes) To UBound(varAttributes) strAttributes = strAttributes & " Tag: " & varAttributes(i).TagString & _ " Value: " & varAttributes(i).TextString & " " Next MsgBox strAttributes End Sub всё проверено и перепроверено (документ открыт, выбрана блочная ссылка, атрибуты присутствуют; br.HasAttributes = true) Спасибо.
×
×
  • Создать...