Библиотека для деталей БЧ

Автор Вират Лакх, 19.08.17, 07:32:57

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Вират Лакх

Версия 2.0. Описание программы ReadMe будет позже.
1) Оптимизация кода.
2) Возможность редактировать материал, включая измерение геометрии (например, толщины листа).
3) Вызов файла graphic.dns и выбор материала (с плотностью и штриховкой) или только значение плотности (для соответствующего поля).
4) Вызов списка кнопок выбора стилей штриховки с номерами от 0 до 14.
5) Фон поля стиля штриховки для локальных компонентов меняется и выдается сообщение, что стиль штриховки может быть прочитан неправильно (из-за ошибки API + Компас)
6) При чтении свойств модели проверяется синхронизация МЦХ с источником компонента и выдается сообщение. И добавлено в процедуру Проверки по всем компонентам.
7) Теперь производится чтение материала ИСТОЧНИКА компонента (кроме локальных компонентов при отключенной синхронизации МЦХ).
8) Расширены возможности измерений геометрии (длина любого ребра, диаметры неконцентрических окружностей для "шайб" с отверстием, получение габаритного прямоугольника). Габариты определяются в системе координат плоскости, то есть, если прямоугольник изначально изобразить в эскизе повернутым, то габариты выдаст вдоль осей X и Y, и они не будут соответствовать размерам этого прямоугольника.
9) Снятие цвета фона полей ввода-вывода "неправильных" компонентов при нажатии на клавиатуру в этом поле.
10) Добавлен пункт в контекстном меню "Вставить имя файла".
11) Добавлено сообщение при чтении свойств: "Использование кода документа в моделях может вызвать ошибки с многострочным наименованием" (ошибка Компас).
12) Исправлено неправильное чтение стиля штриховки исполнений компонента.
13) Устранение других мелких недостатков.

Вират Лакх

Стоп! Ахтунг! Версия 2.0 кривая. Вот версия 2.1 вроде нормально должна работать :shu:

Вират Лакх

Эксплуатация в боевых условиях выявила два недостатка версии 2.1, которые исправлены в версии 2.2:
1) Не к месту срабатывал запрос на изменение материала локального компонента пользователем вручную. Решилось округлением получаемой плотности: round(iPart7.Density, 3)
2) Компас по-разному ведет себя с массой компонента, у которого вырезали в сборке отверстие и он стал из-за этого легче. Если включена синхронизация МЦХ с источником, то показывает массу источника без выреза; если установлен в МЦХ компонента расчет по плотности, то при той же плотности компас дает массу уже с вырезом, т.е. которая легче. Нам масса нужна для БЧ исходная при записи её в примечание в спецификации. И это еще не всё. Даже при включенной синхронизации МЦХ с источником, когда мы видим в свойствах модели и в информации об объекте массу источника, IPart7.Mass, IMassInertiaParam7.Mass и IPart.GetMass() (через IEmbodiment не пробовал) выдавали тоже резаную массу. Помог способ через IPropertyKeeper.

Вират Лакх

Версия 2.3. Исправлены две ошибки в работе программы.

Вират Лакх

Версия 2.4. Небольшое обновление:
1) Добавлены сообщения в нижней части окна программы для функции вставки имени файла в название. И теперь еще имя файла вставляется, удаляя в поле старое значение.
2) Для функции чтения свойств компонента добавлен возврат к объектам спецификации. Если открыта сборка, её объекты спецификации и ассоциативный чертеж сборки, то при чтении свойств объекта спецификации компас перекидывает с окна ОС на окно сборки. При записи свойств этот возврат был сделан, теперь похожая ситуёвина для чтения.

Вират Лакх

Версия 2.5 (описание потом когда-нибудь):
1) Переработано окно программы: стало компактнее за счет удаления лишних текстов и кнопки Вставить и закрыть.
2) Исправлена давняя ошибка с очисткой на СКМ полей ввода.
3) Для полей ввода добавлены команды Удалить слева и Удалить справа (см. контекстное меню на ПКМ). Удаление от мигающего курсора.
4) Измерения геометрии теперь на клавиши F11 и F12.
5) Добавлена новая функция получения материала из библиотеки МиС. При вызове команды на соответствующую кнопку вызывается основное окно справочника с разделом Сортаменты для выбора материала. Если материал будет выбран, то включается (если была выключена) галочка Материал, изменяющая материал в источнике. Цвет материала не учитывается. Вызов команды на клавиатуре - F10.
*) И немного подправлена работа команд Ctrl+X, Ctrl+C, Ctrl+V.

Умка

при вызове измерения ошибка:
Traceback (most recent call last):
  File "C:\Program Files\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:\Program Files\Python26\lib\lib-tk\Tkinter.py", line 495, in callit
    func(*args)
  File "C:\Program Files\ASCON\Îáîçíà÷åíèå êîìïîíåíòîâ v2.5.pyw", line 878, in <lambda>
    root.after(200, lambda: selection())                     # после задержки мс провериÑ,ÑŒ выделенносÑ,ÑŒ объекÑ,а
  File "C:\Program Files\ASCON\Îáîçíà÷åíèå êîìïîíåíòîâ v2.5.pyw", line 793, in selection
    xyzA = ksLineSeg3dParam.GetPointFirst()         # КоординаÑ,Ñ‹ первой Ñ,очки ребра
  File "C:\Program Files\Python26\lib\site-packages\win32com\gen_py\0422828C-F174-495E-AC5D-D31014DBBE87x0x1x0.py", line 8792, in GetPointFirst
    , y, z)
com_error: (-2147352571, '\xcd\xe5\xf1\xee\xe2\xef\xe0\xe4\xe5\xed\xe8\xe5 \xf2\xe8\xef\xee\xe2.', None, 1)

ТрындецЪ

Цитата: Умка от 29.10.18, 10:38:53
при вызове измерения ошибка:

Что пытаетесь мерить? Длину отрезка?
Отрезок/объект предварительно выделен или нет?

Умка

29.10.18, 11:17:32 #288 Последнее редактирование: 29.10.18, 12:10:15 от Умка
данные в объекты спецификации при редактировании в окне не вставляются и не удаляются

прямоугольники не измеряются и вылет через 1-2 раза.

К13WXPsp3

Вират Лакх

29.10.18, 12:20:55 #289 Последнее редактирование: 29.10.18, 12:41:58 от Вират Лакх
1) Скиньте свой прямоугольник, напишите, как указываете.
2) В файле SDK.chm поищите GetPointFirst. Есть ли он там вообще. Если есть, то скиньте сюда описание.
upd
3) Попробуйте пару вариантов. Найдите xyzA и xyzB и впишите в скобки (0, 0, 0) или (0.0, 0.0, 0.0) типа того:
xyzA = ksLineSeg3dParam.GetPointFirst(0, 0, 0)
xyzB = ksLineSeg3dParam.GetPointLast(0.0, 0.0, 0.0)
Отпишитесь мне, какой вариант будет работать. Сейчас делаю версию 2.6, внесу туда исправление.

Умка

ksLineSeg3dParam::GetPointFirst
ILineSeg3dParam::GetPointFirst
Интерфейс...

Получить координаты первой точки отрезка.

Синтаксис Automation:

BOOL GetPointFirst (double * x, double *y, double *z);

Синтаксис COM:

BOOL GetPointFirst (double * x, double *y, double *z);

Выходные параметры:

x, y, z
- координаты первой точки отрезка.


Возвращаемое значение:

TRUE
- в случае успешного завершения,

FALSE
- в случае неудачи.


Примечание:

Значения x, y, z возвращаются в системе координат компонента.

Умка

3) оба варианта работают

Измерения стали выполнятся, за исключением высоты цилиндра.
данные в объекты спецификации при редактировании в окне не вставляются и не удаляются

Вират Лакх

По цилиндру замените две строки point_1 и point_2 на эти:
point_1 = ksSurface.GetPoint(0, ksSurface.GetParamVMin(), 0, 0, 0)
point_2 = ksSurface.GetPoint(0, ksSurface.GetParamVMax(), 0, 0, 0)
Добавилась vmin, т.к. скругление у основания цилиндра не учитывалось.
И отпишитесь о результате.

"данные в объекты спецификации при редактировании в окне не вставляются и не удаляются" - в каком окне? В объектах спецификации? Тоже текст ошибки сюда скидывайте.

Умка

замеры выполняются все без вылетов, скругления и фаски не учитываются (это правильно).

данные в объекты спецификации не вставляются и не удаляются во всех случаях сборки  и в деталях. Пайтон ошибки не показывает.

Вират Лакх

Эти скругления учитывались бы как-то однообразно, а то с одной стороны берется, с другой - нет... Поэкспериментируйте, если хотите. Я оставил так, как надежно показывает. То есть с фасками/скруглениями "короче" цилиндр получается.

Ошибки не показывает, т.к. там try стоит на строках с 419 до 458.
Иначе на этой функции косяки в неподходящих случаях вылазят:
ObjectSpc = Description.BaseObjects.GetSpecificationObjectsForGeom(pe[i], False, 20, 0)[0]
Вот ОК2.5 без try. Пробуйте.

Умка

Traceback (most recent call last):
  File "C:\Program Files\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:\Program Files\Python26\lib\lib-tk\Tkinter.py", line 495, in callit
    func(*args)
  File "C:\Program Files\ASCON\Îáîçíà÷åíèå êîìïîíåíòîâ v2.5 wo try.pyw", line 878, in <lambda>
    root.after(200, lambda: selection())                     # после задержки мс провериÑ,ÑŒ выделенносÑ,ÑŒ объекÑ,а
  File "C:\Program Files\ASCON\Îáîçíà÷åíèå êîìïîíåíòîâ v2.5 wo try.pyw", line 793, in selection
    xyzA = ksLineSeg3dParam.GetPointFirst()         # КоординаÑ,Ñ‹ первой Ñ,очки ребра
  File "C:\Program Files\Python26\lib\site-packages\win32com\gen_py\0422828C-F174-495E-AC5D-D31014DBBE87x0x1x0.py", line 8792, in GetPointFirst
    , y, z)
com_error: (-2147352571, '\xcd\xe5\xf1\xee\xe2\xef\xe0\xe4\xe5\xed\xe8\xe5 \xf2\xe8\xef\xee\xe2.', None, 1)
Измерения не выполняются

Вират Лакх

Ну так поставьте нули, где нужно. Вы же знаете. Я скинул версию 2.5 без каких-либо изменений, кроме try, для испытания вами объектов спецификации. Всё новое и исправленное будет в версии 2.6.

Умка

при редактировании отдельной детали БЧ данные в объект спецификации не вставляются,
при редактировании детали в контексте сборки вставка ОС выполняется

в остальном все измерения выполняются , без учёта фасок и скруглений.

Вират Лакх

Объект спецификации в отдельном документе m3d - это рудимент, который отпал в 18-й версии. В силу того, что информация в ОС детали может отличаться от свойств этой же детали, считаю ОС в m3d потенциальным злом, которое может всплыть когда угодно. Поэтому уже давно в этой программе БЧ и кг прописываются только в сборках. Кроме этого, у редактируемой на месте детали, имеющей в сборке ОС, тоже не прописываются БЧ и кг, т.к. хз, как до них добраться при включенном режиме редактирования на месте.
Try надо оставить, с ним тоже должно работать. Он защищает от ошибок при получении ОС, из-за которых программа дальше не работает. В новой версии добавлю сообщение в строке информации программы, которое будет сигнализировать о таком событии. Версия 2.6 не за горами.

Умка

БЧ и кг в сборке не прописываются при любом методе редактирования!

Расположение окна программы заморожено на одном месте, при перезапуске место не запоминает.