Обозначение ценра отверсий

Автор injener, 04.04.16, 23:01:07

« назад - далее »

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

dimak222

Цитата: FR347 от 23.11.22, 16:10:26поменьше выступало

"Простановка обозначений центров, точек и условных знаков v0.6.2.0"

Что нового:
1. Добавил опцию "Centre_JutLength" (длину выступления ОЦ).
2. Добавил совместимость с Python 2.X.

FR347

Цитата: dimak222 от 23.11.22, 16:22:10Могу сделать опцией, сейчас у меня и так стандартная длина 5 мм.


В чертеже если ставить, то да, все выступает как надо!

Просто я в модели попробовал проставить, а не в чертеже, плюс в том, что они будут на всех проекциях при включении в параметрах вида.

Но если ставить в модели, то они обрезанные получаются в чертеже, до окружности отверстия...
Да есть еще стандартная галочка, но компас поставит везде)))


Михаил88

Мой проект 1 2022-11-23_18-32-05.gif

проблема не у меня в коде

Михаил88

Цитата: dimak222 от 23.11.22, 16:20:14Я доходил до ivariable7, но у меня ничего...

а что вот это значит.
Почему не выполнили полностью?
Последняя строчка kompas_document_2d_1.RebuildDocument()

dimak222

Цитата: Михаил88 от 23.11.22, 16:47:43а что вот это значит.
Почему не выполнили полностью?
Извиняюсь, не так выразился, имел ввиду, что уже пытался менять через IFeature7, ничего не получалось:
Цитата: dimak222 от 23.11.22, 11:18:432. Не могу изменять размер УЗ (Значение только для чтения, и через IFeature7 поменять не получилось).

dimak222

Цитата: Михаил88 от 23.11.22, 16:42:17проблема не у меня в коде
Похоже  в КОМПАСе беда.
Завтра постараюсь запилить, останется только с привязкой решить вопрос.

Михаил88

Цитата: dimak222 от 23.11.22, 16:55:13Извиняюсь, не так выразился, имел ввиду, что уже пытался менять через IFeature7, ничего не получалось:

так у меня IFeature7 и не используется.

Михаил88

#167
Цитата: dimak222 от 23.11.22, 16:59:47останется только с привязкой решить вопрос.
# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache

#  Получи константы
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(
    Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID,
                                                            pythoncom.IID_IDispatch))

kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
kompas_document_2d_1 = kompas_api7_module.IKompasDocument2D1(kompas_document_2d)

iInsertionsManager = kompas_api7_module.IInsertionsManager(kompas_document)

iViewsAndLayersManager = kompas_document_2d.ViewsAndLayersManager
iViews = iViewsAndLayersManager.Views
view = iViews.ActiveView
drawing_container = kompas_api7_module.IDrawingContainer(view)

objects = drawing_container.Objects(kompas6_constants.ksDrCircle)
circle = objects[0]
radius = circle.Radius
xc = circle.Xc
yc = circle.Yc

insertionObjects = drawing_container.InsertionObjects
'''
# ksTUnknown -1 Неизвестный
# ksTBodyFragment 0 Вставка внешнего фрагмента. Взять в документ
# ksTReferenceFragment 1 Вставка внешнего фрагмента. Внешней ссылкой
# ksTLocalFragment 3 Вставка локального фрагмента
# ksTBodyView 4 Вставка вида другого чертежа. Взять в документ
# ksTReferenceView 5 Вставка вида другого чертежа. Внешней ссылкой
'''
iInsertionDefinition = iInsertionsManager.AddDefinition(kompas6_constants.ksTBodyFragment, 'Условный знак 1_1',
                                                        r'C:\Program Files\ASCON\KOMPAS-3D '
                                                        r'v18\Libs\Shapes_and_signs.kle|Условный знак 1_1.frw')
iInsertionObject = insertionObjects.Add(iInsertionDefinition)
iInsertionObject.SetPlacement(xc, yc, 0.0, False)
insertionDefinition = iInsertionObject.InsertionDefinition
insertionDefinition.FileName = r'C:\Program Files\ASCON\KOMPAS-3D v18\Libs\Shapes_and_signs.kle|Условный знак 1_1.frw'
iInsertionFragment = kompas_api7_module.IInsertionFragment(iInsertionObject)
ivariable7 = iInsertionFragment.Variable('D')
name = ivariable7.Name
ivariable7.Value = radius * 2
iInsertionObject.Update()

# Создай параметрические ограничение совпадение точек
drawing_object = kompas_api7_module.IDrawingObject1(circle)
parametritic_constraint = drawing_object.NewConstraint()
parametritic_constraint.ConstraintType = kompas6_constants.ksCMergePoints  # Совпадение двух точек
parametritic_constraint.Index = 0
parametritic_constraint.Partner = iInsertionObject
parametritic_constraint.PartnerIndex = 0
parametritic_constraint.Create()

Мой проект 1 2022-11-23_19-40-18.gif

Для примера сделал для одного отверстия. Теперь условный знак имеет диаметр, как и у отверстия. Плюсом накладывается ограничение на совпадение центра отв. с центром УЗ.
+ Благодарностей: 1

dimak222

"Простановка обозначений центров, точек и условных знаков v0.6.3.0"

Что нового:
1. Размер и параметризация УЗ работают.
2. Удалена зависимость от вида (переключение на разные виды).
3. Убрана зависимость от масштаба.
4. Удалено определение папки библиотеки.
5. Переписан список УЗ.
6. Убрана группировка объектов (из-за неё не работала параметризация УЗ).
7. Добавлена опция "Conditional_sign_size" (размер УЗ).

Известные ошибки:
1. УЗ неправильно параметризуется с прямоугольником.

Что надо сделать:
1. Автоматическую расстановку разных УЗ в зависимости от размеров выделенных объектов.
Цитата: dimak222 от 23.11.22, 11:44:341. Сортируем диаметры отв. по возрастанию/убыванию (опция).
2. Из списка удаляем отв. если их количество меньше чем "n" (опция).
3. Ставим "n-й" знак для отв. из списка пока не будет другое значение размера отв., для другого размера "n-й + 1",
4. Доходим max до 10-го знака (по количеству усл. знаков в библиотеке).
5. Если не дошли до 10 - всё ок, если дошли выдать сообщение "Закончились усл. знаки"

P.S. В КОМПАС v19 УЗ не изменяют свой размер. Параметризация УЗ была написана правильно, была беда во временной группе (ksNewGroup) - она не даёт сделать параметризацию.
+ Благодарностей: 1

Вират Лакх

Цитата: dimak222 от 24.11.22, 16:14:22Параметризация УЗ была написана правильно, была беда во временной группе (ksNewGroup) - она не даёт сделать параметризацию.
Через API7 пробовали?

vasurnik

появились обозначения центров, но только после запуска Run Module (Простановка обозначений центров, точек и условных знаков v0.6.2.0 и v0.6.3.0):

dimak222

Цитата: Вират Лакх от 24.11.22, 17:16:51Через API7 пробовали?
Это про NewGroup (Рис. 1)? Если честно, то я не понял как получить API экспортных функций :shu:

Цитата: vasurnik от 24.11.22, 20:15:26v0.6.2.0 и v0.6.3.0
Если в обоих версиях одно и тоже, есть предположение:
1. В v16 по другому называется библиотека, тогда её правильное название можно прописать в "Conditional_sign_list_name" (попробуйте вставить УЗ вручную, там в настройках УЗ будет прописан путь к библиотеки).
2. Её вообще нет (маловероятно).

Цитата: vasurnik от 24.11.22, 20:15:26только после запуска Run Module
Я понял в чём дело, "import pythoncom" не добавил...

Михаил88

Цитата: dimak222 от 25.11.22, 11:24:012. Её вообще нет (маловероятно).

B компас 16 еще не было библиотеки .kle. Раньше библиотека фигур и условных знаков имела другое расширение.

Михаил88

Цитата: dimak222 от 25.11.22, 11:24:01Это про NewGroup (Рис. 1)? Если честно, то я не понял как получить API экспортных функций :shu:
для API7
Интерфейс IDrawingGroup
+ Благодарностей: 2

vasurnik

...да, такой библиотеки в Компас V16 просто нет...

Михаил88

#175
.lfr — Компас — библиотеки фрагментов.

Shapes_and_signs.lfr  возможно так называется
+ Благодарностей: 1

vasurnik

Shapes_and_signs.lfr - такая библиотека есть

dimak222

"Простановка обозначений центров, точек и условных знаков v0.6.3.1"

Что нового:
1. Добавил список условных знаков для КОМПАС v16. (необходимо вручную заменить название Conditional_sign_list_name_v16 на Conditional_sign_list_name)
2. Исправил ошибку вставки знаков с 8 по 10.
+ Благодарностей: 2

IgorT

Замечательно!
Вот если бы макрос ставил разные знаки на различные отверстия...
То есть если выбрана группа, то для разных диаметров в выбранном ставились разные знаки.

FR347

Цитата: IgorT от 25.11.22, 14:19:18То есть если выбрана группа, то для разных диаметров в выбранном ставились разные знаки.
Ну тут поможет Выделить по свойствам.
Выделили скажем отверстия диаметром равным 20, там знак 1.
Диаметром 30 знак 2.
Но мы редко используем знаки...
Вот центра полезно.
Ну и точки (для массива по точкам)

Хотя я пользовался другим макросом постоянно... Просто УЗ еще одна хорошая фишка