Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Биржа прикладных разработок => Тема начата: injener от 04.04.16, 23:01:07

Название: Обозначение ценра отверсий
Отправлено: injener от 04.04.16, 23:01:07
     Столкнулся с проблемой простановки обозначения центров отверстий на чертежах, особенно когда их много. Выделять каждое отверстие и проставлять обозначение довольно трудоемко. Затратил полчаса времени, написал библиотеку, протестировал, и теперь три клика мышки и во всех видах и на всех отверстиях появляются обозначения центров. Компас 16 пользуйтесь.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 05.04.16, 10:30:05
Классно! Просто и быстро ) Спасибо!
А теперь с вашего позволения:
1) Если вид повернут, то обозначение тоже повернуто относительно листа
2) Не хватает для эллипсов и дуг окружностей и эллипсов
3) Если не надо всем отверстиям ставить (см. п. 4 и 5), то может в команде предусмотреть: если нет выделенных, то всем, если есть выделенные объекты, то среди выделенных?
4) Если есть отверстия по кругу как у фланца, то обозначения надо же ориентировать в центр круга. Тут уж ничего не поделаешь?..
5) Если у того же фланца две окружности с одним центром, то получим наложение осевых. Проверка наложения элементов не выдает ошибки, т.к. не распространяется на оформительские вещи.
Название: Re: Обозначение ценра отверсий
Отправлено: Дормидонт Евпатьевич от 05.04.16, 10:41:34
Цитата: injener от 04.04.16, 23:01:07
     Столкнулся с проблемой простановки обозначения центров отверстий на чертежах, особенно когда их много.
2011 год

http://support.ascon.ru/download/freeware_users/items/?dl_id=560

Библиотека Дополнительные операции для КОМПАС-3D V11 и выше
Прикладная библиотека предназначена для автоматизации отдельных операций при работе с графическими документами и 3D-моделями в системе КОМПАС-3D.

Библиотека позволяет создать обозначения центров для группы окружностей...
Название: Re: Обозначение ценра отверсий
Отправлено: Sabahs от 05.04.16, 10:44:49

ЦитироватьБиблиотека Дополнительные операции для КОМПАС-3D V11 и выше
Есть в ней одна проблема, она 32-разрядная.
Название: Re: Обозначение ценра отверсий
Отправлено: Алхимик от 05.04.16, 11:31:58
Можно добавить:

- возможность простановки и для дуг;
- проверку на несколько окружностей из одного центра, ставить осевую для самой большой окружности.
Название: Re: Обозначение ценра отверсий
Отправлено: injener от 05.04.16, 12:13:43
Извините не проверил, архив. Высылаю 64-разрядную. Для фланцев будет отдельная библиотека
Название: Re: Обозначение ценра отверсий
Отправлено: Студент 2015 от 05.04.16, 18:25:53
Спасибо, а в чём отличия от этой???
Да ещё дополню предложения, лучше как в этой на картинке 2. Создавать обозначения для текущего вида.  А то создал, сначала для одного вида, потом переключился на второй третий, а на первом уже по три обозначения в одном месте.( заметил удалением одной оси)
Название: Re: Обозначение ценра отверсий
Отправлено: Алхимик от 05.04.16, 18:39:25
что это за библиотека "Дополнительных операций"?
Название: Re: Обозначение ценра отверсий
Отправлено: Студент 2015 от 05.04.16, 19:02:08
Цитата: Алхимик от 05.04.16, 18:39:25
что это за библиотека "Дополнительных операций"?
Вот ссылка http://support.ascon.ru/download/freeware_users/items/?dl_id=560.
Давно уже пользуюсь. Правда не знаю как на 64 будет работать или нет.
Название: Re: Обозначение ценра отверсий
Отправлено: injener от 05.04.16, 19:22:40
  Я очень ленивый человек и по этому, считаю что библиотеки должны выполнять свою функцию максимум четырьмя кликами мышки, или вы ей должны давать ей согласие на выполнение или нет. Создавать универсальное, это глупо, каждой поставлен задачи существует оптимальное решение с точки зрения минимума физических и временных затрат.  Иметь набор библиотек которые в своей совокупности превзойдут одну универсальную и  в зависимости от задачи применять одну или несколько это гораздо удобнее, гибко и производительнее. Да и дорабатывать каждую в отдельности быстрее и проще чем одну универсальную 
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 06.04.16, 04:33:11
Может не несколько библиотек, а несколько разных простых команд в одной библиотеке (как компасная команда Отрезок с разными параметрами)?
Чем отличается новая версия от первой выложенной?
Название: Re: Обозначение ценра отверсий
Отправлено: Sabahs от 06.04.16, 07:41:29
Цитата: Студент 2015 от 05.04.16, 19:02:08
Вот ссылка http://support.ascon.ru/download/freeware_users/items/?dl_id=560.
Давно уже пользуюсь. Правда не знаю как на 64 будет работать или нет.
На 64-разрядной работать не будет, т.к. структура разная.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 19.10.17, 09:25:18
Eсть жалобы на неработоспособность библиотеки в 17 версии программы. Поэтому делюсь макросом, который должен работать в этой версии.

Основное отличие макроса от аналогов - распознавание концентрических окружностей и простановка только центра большей из них. Но, в связи с этим, скорость работы на данный момент очень низкая.
Эта версия макроса работает с выделенной геометрией активного вида: выделяем область, запускаем макрос, получаем обозначения центров.



Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 19.10.17, 10:34:57
Есть еще жалобы на незавершенность существующих библиотек. Те же пункты и для вашего макроса:
1) Если вид повернут, то обозначение тоже повернуто относительно листа.
2) Не хватает для эллипсов и дуг окружностей и эллипсов.
3) Остается в силе предложение: если нет выделенного ничего, то всем видам всем окружностям; если выделен вид, то только в нем всем отверстиям; если есть выделенные объекты, то среди выделенных (как сейчас). Это чтобы объединить все версии библиотек в одну. Не разделяю мнения, что для каждой разновидности команд должна быть своя прога.
4) "Если есть отверстия по кругу как у фланца, то обозначения надо же ориентировать в центр круга. Тут уж ничего не поделаешь?.." Тут я слегка неточен. Обозначения ведь должны быть не центра, а окружность стилем Осевая радиусом положения выделенных окружностей от указанного центра (или центр не указывать, а высчитывать). И обычные осевые для каждого отверстия, направленные на указанный (определенный расчетом) центр. ОЧЕНЬ НЕ ХВАТАЕТ ФЛАНЦЕВОЙ ФУНКЦИИ. Тут уж, действительно, надо другой макрос писать. От injener'а фланцевой библиотеки, видимо, не будет.
5) Проблема наложения решена не полностью. У повернутого вида все-таки происходит наложение осевых линий концентрических окружностей.
6) Я сообщения "Обозначения центров окружностей проставлены" и "Нет выделенных объектов!" сразу же закомментировал, ибо они лишние. По результату видно будет, сработала программа или нет. Тем более, что сообщения заставляют нажимать ОК.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 19.10.17, 12:04:57
Вират Лакх, Ваш неиссякаемый гейзер идей восхищает (https://forum.ascon.ru/proxy.php?request=http%3A%2F%2Fi.smiles2k.net%2Faiwan_smiles%2Fclapping.gif&hash=c8d2c7cbe4b0aa87a5159c3258976cfeb07d4423) и отпугивает одновременно (https://forum.ascon.ru/proxy.php?request=http%3A%2F%2Fi.smiles2k.net%2Faiwan_smiles%2Fshok.gif&hash=b8a78f3ad3d58aa68e6a8e288357791b33779605)
Уважаю Вас за умелое нахождение брешей в любой программе(https://forum.ascon.ru/proxy.php?request=http%3A%2F%2Fi.smiles2k.net%2Faiwan_smiles%2Fhi.gif&hash=d07441cf797b33102acf06967f5ce41a402fd89b), и с опаской встречаю каждое новое Ваше сообщение под моими разработками, ибо оно почти всегда сулит ворох работы. (https://forum.ascon.ru/proxy.php?request=http%3A%2F%2Fi.smiles2k.net%2Faiwan_smiles%2Fswoon2.gif&hash=8958dcc81c1299e6faf630af0a6e8bc3cef1f9b3)
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 19.10.17, 12:38:19
Спасибо за лестный ответ ))
Гейзер, увы, продиктован возможностями компаса...
В свою очередь я Вас и не только Вас, но и PS, Дмитрий22, VladAV и других программистов искренне благодарю за Ваши нелегкие труды и трату личного времени, которого, как всегда, не хватает! Вы заметно облегчаете работу конструкторов.
Не бойтесь моих сообщений, они ни к чему не обязывают )
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 20.10.17, 09:59:26
Тестируем новую версию макроса!

Что нового:
- работает с выделенными видами и выделением активного вида;
- обозначения центров у повёрнутых видов ориентируются параллельно/перпендикулярно листу;
- обозначения центров теперь параметрически привязываются к "окружностям - родителям";
- увеличена скорость работы.

Upd: Обновил версию во вложении.
Добавлено:
- при отсутствии выделения обрабатываются все непогашенные виды.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 21.10.17, 03:33:14
Готовьтесь, ТрындецЪ. Сейчас буду рвать и плющить :)

0) Если будете фланцы делать, то там будет проблема в том, что отверстия пересекаются или касаются выступа и получаются дуги (3D).
1) Когда ничего не выделено, то в IDLE (Python GUI) пишет (при этом проставляет как надо):
Цитировать
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IView instance at 0x70353800>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IView instance at 0x76122504>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IView instance at 0x70355400>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IView instance at 0x76122504>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IView instance at 0x70354952>
<win32com.gen_py.69AC2981-37C0-4379-84FD-5DD2F3C0A520x0x1x0.IView instance at 0x70354184>
Это нормально?
2) Проблема с выделенными ассоциативными видами с модели - не проставляет. В питон шеле ничего не говорит. На 2D видах работает.
3) На повернутых ассоциативных видах на дорисованных "вручную" окружностях не ставит, в то время как на прямых видах - ставит. Это случай, когда ничего не выделено перед запуском макроса.
4) Есть, видимо, какая-то неточность построения или "слишком большая" точность вычисления где-то за пределами 10 знаков после запятой (точнее компас не дает измерить командой Расстояние между двумя точками), из-за которой макрос в 2D видах все же накладывает два обозначения центра друг на друга на концентрических окружностях. Не всегда это проявляется, а, скорее, на повернутых видах, там же всякие синусы-косинусы возникают. Попробуйте ввести округление до 10 знаков после запятой что ли, чтобы считать центра одинаковыми...
upd. Или использовать константу компаса FLT_EPS. Или, наоборот, округлять гораздо грубее. Например, когда вручную пользователь чертит и чуточку промахнулся от центра...
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 21.10.17, 10:29:39
5) Из области фантастики в качестве шутки-прибаутки )
Быстродействие можно увеличить распараллеливанием, аналогично тому, как сделано построение/перестройка ассоциативных видов: один вид - одно ядро/поток.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 21.10.17, 11:37:57
Цитата: Вират Лакх от 21.10.17, 03:33:14
0) Если будете фланцы делать, то там будет проблема в том, что отверстия пересекаются или касаются выступа и получаются дуги (3D).
По этому описанию ничего не понял. Лучше файл приложите, на котором мне будущий код отлаживать.
Вообще эта задача заинтересовала. Нужно подумать, как это должно выглядеть.
Я получаю окружности в виде двух координат центра и радиуса. И вот из этого набора чисел нужно вычислить фланцы.
Для начала попробую сделать это отдельным макросом, т.к. встроить выискивание/фильтрование фланцев в общий код это высокая планка.
Например, пользователь выделяет область чертежа, где есть 1 фланец, макрос собирает инфу с оркужностей(дуг) из этого выделения и...(дальше ещё не придумал).
Upd: Или так. Запускаем макрос, выделяем область, затем указываем точку центра фланца и макрос ищет группу окружностей, равноудаленных от данной точки, а может и несколько групп. Потом создаёт окружность стилем осевая и центры ставит.
Цитировать1) Когда ничего не выделено, то в IDLE (Python GUI) пишет (при этом проставляет как надо):Это нормально?
Один print в коде остался.
Цитировать2) Проблема с выделенными ассоциативными видами с модели - не проставляет. В питон шеле ничего не говорит. На 2D видах работает.
3) На повернутых ассоциативных видах на дорисованных "вручную" окружностях не ставит, в то время как на прямых видах - ставит. Это случай, когда ничего не выделено перед запуском макроса.
Я отлаживал на неассоциативных видах. Нужно будет с ассоциативными поработать.
Цитировать4)...Попробуйте ввести округление до 10 знаков после запятой что ли, чтобы считать центра одинаковыми...
upd. Или использовать константу компаса FLT_EPS. Или, наоборот, округлять гораздо грубее. Например, когда вручную пользователь чертит и чуточку промахнулся от центра...
Введу константу, отвечающую за округление.
Цитировать5) Из области фантастики в качестве шутки-прибаутки )
Быстродействие можно увеличить распараллеливанием, аналогично тому, как сделано построение/перестройка ассоциативных видов: один вид - одно ядро/поток.
А вот это хорошая мысль, почему я сам не догадался!?

И ещё по поводу финального сообщения. Моё мнение - его лучше вернуть, хотя бы сделать всплывающим. Есть у меня много видов, я запустил макрос и не понятно, когда он закончил работу. Не буду же я лазить по всем видам и смотреть везде ли уже проставлены ОЦ (обозначение центра).
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 21.10.17, 14:32:41
0) Берете фланец какой-нибудь в 3D из библиотеки СИ и смотрите на присоединительную сторону. Отверстия касаются или пересекают линию перехода поверхностей. Из-за этого имеем дуги вместо отверстий.
Конечно отдельным макросом фланцы. См. п.4 ответа 13.
Фланцы предлагаю не искать, а чтобы пользователь указал окружности, которые стоят по кругу. По крайней мере пока. Сколько отверстий выделит, столько и осевых, направленных в центр и длиной, равной диаметру любой из выделенных отв. Интересно, такое можно параметрически привязать? Центр можно посчитать как центр (масло масляное) многоугольника (мин. 3 угла), но если расставлять осевые по частично перекрытому фланцу (массив не 360 градусов), то косяк. Тут тогда подумать как по трем точкам определить центр. Систему из трех уравнений прямых решить что ли. Но по-началу можно просить пользователя указать центр. Из центра построить окружность стилем осевая уже известным радиусом. А то и дугу, если окружности не на 360 градусов. Но пока можно начать с полных окружностей.
Ну или выделить весь фланец. С большими концентрическими окружностями сделать как эта библиотека делает, а окр. самого малого диаметра считать круговыми.

"А вот это хорошая мысль, почему я сам не догадался!?"
Тут у меня три комментария:
а) это, наконец-то, хорошая мысль в отличие от всех предыдущих? )
б) вы серьезно по этому предложению или "стигаете"? Ни смайлика, ни чего.
в) По правилу русского языка сначала ставится знак вопроса, а потом восклицательный знак.

upd
Если сделать балуном, но опять сразу в 16 и 17 версиях не будет работать, да?
Можно, как всегда, константу-настройку по выводу сообщений.
Еще настройку, где пользователь указывает версию компаса-питона.
Настройки - дело хорошее.
Можно не ждать, пока достроит обозначения. Я так понял, можно одновременно продолжать работу, а он там будет ставить параллельно. Или нет?
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 22.10.17, 13:41:02
Мысли дилетанта про параллельность обработки видов. Макрос может вызвать самого себя (рекурсия)? Первая копия макроса считает сколько всего видов и сколько запущено своих копий. Если себя меньше, чем видов, то запускаем еще себя. Массив видов у каждой копии один и тот же. Каждая копия смотрит, сколько себя уже запущено и приступает к обработке вида под номером "кол-во себя"+1. При этом отключиться макросу после работы можно только при кол-ве себя = кол-ву видов, чтобы другие копии не ошиблись с порядковым номером вида для обработки. Интересно, винда копии макроса разделит по потокам?
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 23.10.17, 10:22:19
Выкладываю первую версию макроса для  "фланцев ".
Выделяем окружности, расположенные по кругу и запускаем макрос.
Для расчётов макрос берёт координаты первых трех неконцентрических окружностей из выделения.
Если окружностей меньше трёх, то выводит сообщение.

Цитата: Вират Лакх от 21.10.17, 14:32:41
"А вот это хорошая мысль, почему я сам не догадался!?"
Тут у меня три комментария:
а) это, наконец-то, хорошая мысль в отличие от всех предыдущих? )
б) вы серьезно по этому предложению или "стигаете"? Ни смайлика, ни чего.
Я писал без тени иронии, даже поблагодарил за сообщение, которое посчитал полезным.
ЦитироватьЕсли сделать балуном, но опять сразу в 16 и 17 версиях не будет работать, да?
Что-то не припомню, чтобы из-за "балунов" была проблема в 16 и 17 версиях. В 17 только нет разделения на "с желтым треугольником" и "с синим кругом"
ЦитироватьМожно не ждать, пока достроит обозначения. Я так понял, можно одновременно продолжать работу, а он там будет ставить параллельно. Или нет?
Проблема может возникнуть из-за того, что макрос сам меняет активность видов для построения ОЦ.
Цитата: Вират Лакх от 22.10.17, 13:41:02
Мысли дилетанта про параллельность обработки видов. Макрос может вызвать самого себя (рекурсия)? Первая копия макроса считает сколько всего видов и сколько запущено своих копий. Если себя меньше, чем видов, то запускаем еще себя. Массив видов у каждой копии один и тот же. Каждая копия смотрит, сколько себя уже запущено и приступает к обработке вида под номером "кол-во себя"+1. При этом отключиться макросу после работы можно только при кол-ве себя = кол-ву видов, чтобы другие копии не ошиблись с порядковым номером вида для обработки. Интересно, винда копии макроса разделит по потокам?
Тут скорее не новый макрос открывать в новом потоке, а выполнение функции в новый поток отправлять. Я бегло изучал, когда кнопку "Стоп" для библиотеки БЧ сочинял. Там сложность с передачей переменных между потоками, нужно глубже изучать.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 23.10.17, 12:54:02
ЦитироватьЧто-то не припомню, чтобы из-за "балунов" была проблема в 16 и 17 версиях. В 17 только нет разделения на "с желтым треугольником" и "с синим кругом"
Проблема не в самих balloon'ах, а кодировке или как там её, в приписке "u" в команде вывода сообщения. pro100 их удалял в макросе БЧ, чтобы работал в 17-м компасе. Я имею ввиду, чтобы одновременно в двух версиях компаса работало.
ЦитироватьПроблема может возникнуть из-за того, что макрос сам меняет активность видов для построения ОС.
А, да, не подумал про это.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 24.10.17, 07:14:15
Изучение фланцевого макроса v0.1:
1) Ассоциация прямых осевых к отверстиям жестко фиксирует их угол наклона. Из-за этого не повернуть фланец на произвольный угол. Ничего с этим не поделать?
2) Круговая осевая линия не привязывается ни к чему. Оно и понятно, что привязаться не к кому, но неприятно. Допустим, у нас нет физически точки центра. Нельзя ли программно круговую осевую привязать тремя точками к тем трем отверстиям, по которым она была подсчитана? Если никак нельзя, то можно поискать в тех координатах окружность. Умеем такое? Если найдется, то к ней привязать круговую осевую.
3) Если "левая" окружность выделена, то макрос ничего не делает. Надо сообщение выдать что ли, что выделенные отверстия не образуют круг.
И сообщение "Выделите не менее трёх неконцентрических окружностей!" дописать словами ", расположенных по кругу"
4) Можно научить фланцевый макрос убирать обозначения центров от обычного макроса. Чтобы пользователю самому не удалять прямые центры, фланцевый мог бы сам вычистить в тех координатах "неправильные" обозначения и поставить свои. Т.е. заменить прямые на фланцевые.
5) Конечно же нужна обработка дуг. См. рис. ниже. Для таких видов макрос пока не годен.
Название: Re: Обозначение ценра отверсий
Отправлено: lexz21 от 24.10.17, 07:16:59
Добрый день!!
Попытался запустить библиотеку Обозначения центров 0.3 и двойным кликом, и прикрутил в утилиты и оттуда,  после выделения группы отверстий.... никакого эффекта!!
Что делаю неправильно!! Как запустить?
Может дело в питоне?  в корневом каталоге С висит Python26

Win7sp1x64, Компас_3Dх64_17_1_3

Заранее спасибо
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 24.10.17, 07:42:06
В свойстве документа *py, *pyw, нужно заменить запускаемое приложение. 


Может подойдет:
"C:\Program Files\ASCON\KOMPAS-3D v17\Libs\Kompas-Macro\Python 3\Python-Portable.exe"
Название: Re: Обозначение ценра отверсий
Отправлено: lexz21 от 24.10.17, 07:51:32
Запустил библиотеки  с помощью C:\Program Files\ASCON\KOMPAS-3D v17\Libs\Kompas-Macro\Python 3\App\python.exe
Простановка центров для фланцев запустилась, но оси ставит  только на выделенные отверстия и общую осевую.
А вот библиотека простановки  центров вообще никаких осей... и выделял и отверстия  и вид ...ничего..
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 24.10.17, 08:35:01
Цитата: lexz21 от 24.10.17, 07:51:32
Простановка центров для фланцев запустилась, но оси ставит  только на выделенные отверстия и общую осевую.
Так и задумано, работает только с выделением.
ЦитироватьА вот библиотека простановки  центров вообще никаких осей... и выделял и отверстия  и вид ...ничего..
Макрос игнорирует ассоциативные виды, но если и с выделением не работает, то тогда нужно запускать через отладчик и смотреть какую ошибку выдаёт (через портативный PyScripter, например, который с 17 версией идёт).

Цитата: Вират Лакх от 24.10.17, 07:14:15
1) Ассоциация прямых осевых к отверстиям жестко фиксирует их угол наклона. Из-за этого не повернуть фланец на произвольный угол. Ничего с этим не поделать?
Я тоже заметил, но это стандартное обозначение центра и такая особенность его параметризации-угол не изменяется параметрически. Можно заменить ОЦ на две прямые и параметризовать их, но с параметризацией я ещё не работал.
Цитировать2) Круговая осевая линия не привязывается ни к чему. Оно и понятно, что привязаться не к кому, но неприятно. Допустим, у нас нет физически точки центра. Нельзя ли программно круговую осевую привязать тремя точками к тем трем отверстиям, по которым она была подсчитана? Если никак нельзя, то можно поискать в тех координатах окружность. Умеем такое? Если найдется, то к ней привязать круговую осевую.
См. ответ выше.
Цитировать3) Если "левая" окружность выделена, то макрос ничего не делает. Надо сообщение выдать что ли, что выделенные отверстия не образуют круг.
Нужно доработать алгоритм, иногда, даже если окружности все по кругу расположены, он всё равно ошибку выдаёт. Не вычислил пока, что ему не нравится.
ЦитироватьИ сообщение "Выделите не менее трёх неконцентрических окружностей!" дописать словами ", расположенных по кругу.
Любые три окружности будут расположены "по кругу"
Цитировать4) Можно научить фланцевый макрос убирать обозначения центров от обычного макроса. Чтобы пользователю самому не удалять прямые центры, фланцевый мог бы сам вычистить в тех координатах "неправильные" обозначения и поставить свои. Т.е. заменить прямые на фланцевые.
5) Конечно же нужна обработка дуг. См. рис. ниже. Для таких видов макрос пока не годен.
Доработаем в будущих версиях.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 24.10.17, 08:55:04
ЦитироватьМожно заменить ОЦ на две прямые и параметризовать их
Думаю, не стоит. Две прямые, как и круговая осевая, - это не обозначения, а просто геометрия. Отсюда неудобства обработки их скопом.
Цитироватьиногда, даже если окружности все по кругу расположены, он всё равно ошибку выдаёт. Не вычислил пока, что ему не нравится.
Может опять эта слишком большая точность?
ЦитироватьЛюбые три окружности будут расположены "по кругу"
Три - да, больше трех - нет. В запросе не менее 3, значит выделят и 4, и 54.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 24.10.17, 15:21:54
Обозначения центров v0.4.

Что нового:
- работает с ассоциативными видами;
- работает с выделенными окружностями, расположенными на разных видах;
- игнорирует окружности, лежащие на погашенном слое.
Название: Re: Обозначение ценра отверсий
Отправлено: lexz21 от 24.10.17, 15:51:24
Изумительно!! и параметризация .....
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 24.10.17, 15:53:05
Цитата: lexz21 от 24.10.17, 15:51:24
Изумительно!! и параметризация .....
Что, заработало?
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 25.10.17, 05:17:39
ОЦ 0.4 у Фланец 1-50-16 Ст 20 ГОСТ 12821-80 (приварной встык) ставит два обозначения центра. Асс. вид с модели.
Быстродействия не хватает даже для простых случаев.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 25.10.17, 09:09:16
Обозначения центров v0.4.1

Что нового:
- введена константа, задающая допустимую разницу координат центров концентрических окружностей.

Из-за излишней точности считывания координат центров, происходили наложения ОЦ в ранних версиях.

:!: P.S.:Обращение к модератору: "Можно ли в названии темы потерянные "т" восстановить?"
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 25.10.17, 10:55:21
Предложение такое в всплывающем сообщении добавить такие данные, как количество. Макрос считал каждый тип диаметра. И выдавал сообщения. На выделенном виде.
Название: Re: Обозначение ценра отверсий
Отправлено: Starik от 25.10.17, 10:57:54
Отображение каждого сообщения на экране значительно увеличивает время работы.
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 25.10.17, 11:14:17
Попробовал на эскизе в 3д расставить осевые. Все расставилось. И родилось предложение такого характера. Разделить макрос на несколько частей. Создаем графический интерфейс так называемый управляемый. Где будет нарисовано три кнопки.
1 Кнопка "Расставить осевые на центрах"
2 Кнопка посчитать количество окружностей каждого типа в активном виде.
3 Расставить точки на окружностях.


Каждая команда должна иметь свой программный код, для того, чтобы могла работать независимо. По прямому запуску. А при запуске интерфейса импортировал на себя.
Название: Re: Обозначение центра отверстий
Отправлено: ТрындецЪ от 25.10.17, 11:21:07
Сообщение сейчас одно - в конце работы. Главные тормоза из-за поиска концентрических окружностей - берёт каждую окружность по очереди из списка и ищет в этом же списке концентричные ей, затем удаляет, если находит.
Можно счётчик прикрутить, но практической пользы никакой, так, для красоты.

Цитата: pr0100 от 25.10.17, 11:14:17
2 Кнопка посчитать количество окружностей каждого типа в активном виде.
Это какие типы у окружностей, что-то я не понял.
Цитировать3 Расставить точки на окружностях.
О каких точках речь? Точки в центрах? Для чего это нужно?
Upd: если создавать граф.интерфейс то тогда впихнуть туда ОЦ для "фланцев" и "ОЦ пазов" (может, руки дойдут и до них)
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 25.10.17, 11:27:13
Я имею в виду расчет диаметра количества окружностей каждого типа.
D10 - 20 шт.
D15 - 40 шт.


А точки нужны потом в 3х мере, для того, чтобы массивом по ним крепеж размещать.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 25.10.17, 11:29:10
Это какой-то другой макрос получается. А зачем в эскизе расставлять осевые?
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 25.10.17, 11:54:46
Макрос для вывода координат центра и радиуса выделенных окружностей уже кто-то выкладывал:
# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache

module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
api = module.IKompasAPIObject(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(module.IKompasAPIObject.CLSID, pythoncom.IID_IDispatch))
const = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants

app = api.Application
doc = app.ActiveDocument #  если я в активном 2D документе
doc2D = module.IKompasDocument2D(doc._oleobj_.QueryInterface(module.IKompasDocument2D.CLSID, pythoncom.IID_IDispatch))
doc2D1 = module.IKompasDocument2D1(doc2D._oleobj_.QueryInterface(module.IKompasDocument2D1.CLSID, pythoncom.IID_IDispatch))

selection_manager = doc2D1.SelectionManager
selected_objects  = selection_manager.SelectedObjects
#T = selection_manager(unselect())

if isinstance(selected_objects, tuple): #  выделяю несколько
    for object in selected_objects:
        if object.DrawingObjectType is not  const.ksDrCircle: # окружностей
            continue
        circle = module.ICircle(object)
        print "x: ", circle.Xc # хочу узнать координаты центра
        print "y: ", circle.Yc
        print "R= ", circle.Radius,u' мм'
else:
        if selected_objects.DrawingObjectType ==  const.ksDrCircle: # окружностей
            circle = module.ICircle(selected_objects)
            print "x: ", circle.Xc # хочу узнать координаты центра
            print "y: ", circle.Yc
            print "R= ", circle.Radius,u' мм'

А вот как посчитать кол-во одинаковых элементов в списке:
K=[]
# заполняем список К объектами

Dct = {} # создаём словарь
for i in K:
    Dct[i] = Dct.get(i,0)+1
Dct2 = Dct.items() # из словаря получаем список
Dct2.sort() # сортируем

В итоге получим список содержащий подсписки, состоящие из элемента и кол-ва его повторений.

Upd: Попробовал добавить обработку дуг окружностей. И задумался, а оно вообще надо? Всем скруглениям будет ОЦ расставлять. Или будем фильтровать дуги по каким то параметрам? Во вложении макрос для теста, работающий с дугами пока только из выделения.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 25.10.17, 14:51:50
Обозначения центров v0.5

Что нового:
- добавлена работа с дугами, эллипсами и дугами эллипсов.
- добавлены константы, которые включают и исключают обработку окружностей, дуг окружностей, эллипсов, дуг эллипсов и константа, отвечающая за параметризацию ОЦ.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 26.10.17, 06:02:24
ЦитироватьПопробовал добавить обработку дуг окружностей. И задумался, а оно вообще надо? Всем скруглениям будет ОЦ расставлять. Или будем фильтровать дуги по каким то параметрам?
Дуги окружностей все-таки надо. Например для видов на картинках ниже. А фильтровать будем путем ручного указания областей обработки вместо запуска на весь документ. Пользователь выберет способ запуска в зависимости от содержимого чертежа.

См. на первую картинку. При запуске на весь документ останавливается на выделенном виде и в отладчике пишет:
ЦитироватьTraceback (most recent call last):
  File "D:\!Компас\Макро\ОЦ.pyw", line 277, in <module>
    if For_View(iView):
  File "D:\!Компас\Макро\ОЦ.pyw", line 80, in For_View
    Sbor_info ( BD, Circle )
  File "D:\!Компас\Макро\ОЦ.pyw", line 152, in Sbor_info
    s += 1
NameError: global name 's' is not defined
Для выделенной геометрии или выделенных видов работает.

Что-то надо сделать с быстродействием обработки. Алгоритм пересмотреть? Даже алгоритм лучший из лучших не решит проблему скорости.
Например, см. вторую картинку. Этот вид макрос обрабатывает больше 20 секунд. Здесь поиск концентричности не нужен.
Сделать в константах настройку искать ли концентричность? Неудобно лазить за ней каждый раз.
Делать графический интерфейс? Тоже не хотелось бы.
Или ОЦ делить на два макроса: один тупо ставит на всё, другой - умный?
Или типа разделить: запускать с параметром/ключом. Файл макроса один и тот же.  Если запустить как обычно, то тупо всем ставит. Если запустить "ОЦ.pyw k", то с анализом концентричности. Утилиты компаса позволяют указывать параметры.
Или можно запустить макрос с клавишей-модификатором? В зависимости от нажатости, например, Shift, действовать тупо и быстро, или умно и медленно.
Если пойдет разделение в пределах одного файла макроса, то можно с фланцевым объединить, разделив параметром или клавишей-модификатором.
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 26.10.17, 13:31:17
Обозначения центров v0.5.1

Что нового:
- добавлена константа для учёта концентричности (как показала практика, быстродействия не прибавило);
- добавлен счётчик созданных ОЦ в финальное сообщение;
- исправлены ошибки (в предыдущих версиях есть грубая ошибка, проявляющаяся на чертежах, где максимальный номер вида не соответствует  кол-ву всех видов -1).
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 26.10.17, 16:38:08
Поставил concentricity = False. Да, толку мало. Что-то неладное тут творится. Библиотека injener'а на массив отверстий 10х10 ставит обозначения центров мгновенно. Макрос же мурыжит ну очень долго.
Или из-за того, что это макрос, а не библиотека. Или используется какая-то тормозная функция, и можно сделать быстрее без неё... В отладчике можно увидеть какая функция выполняется в данный момент времени? Подсветку выполняемой строки и все такое?
Название: Re: Обозначение ценра отверсий
Отправлено: Sabahs от 26.10.17, 17:01:59
Ясное дело, что библиотека будет работать быстрее, чем макрос.
Название: Re: Обозначение ценра отверсий
Отправлено: Вячеслав Никонов от 26.10.17, 17:03:12
Макрос всегда будет работать медленнее, чем отдельный исполняемый файл.
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 26.10.17, 17:07:17
Цитата: Вират Лакх от 26.10.17, 16:38:08В отладчике можно увидеть какая функция выполняется в данный момент времени? Подсветку выполняемой строки и все такое?
Python не славится быстродействием. Может и можно подсвечивать код при выполнении, я не интересовался. При отладке print'ы в код вставляю, если нужно какое-то место проработать.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 27.10.17, 04:43:52
Посмотрел вчера на узкие места макроса в плане быстродействия дебаггером + принтами.
Вся эта процедура def For_View(iView) тормозная: и чтение геометрии, и вставка обозначений...
Получается один жирный минус у макроса :(, и от библиотеки injener'а отказаться не получается.
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 27.10.17, 12:54:24
Обозначений центров для "фланца" v0.2

Что нового:
- добавлена обработка дуг окружностей;
- появились настройки.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 27.10.17, 16:09:23
1) По ОЦ фланцев предложение сделать аналогично простой ОЦ: когда мы выделяем окружности НЕактивного вида, учитывать это, переключаться и расставлять правильно. Обычная ОЦ правильно поступает.
2) Теперь "претензия" обычному ОЦ: чего он бегает по всем видам, когда надо расставить только в выделенной геометрии?
3) Кто как считает, может не возвращать активность тому виду, который был до запуска обоих макросов, а оставлять на том виде, который обставляли центрами?
4) Я так понял, у вас есть разделение Создано обозначения -ний -ние. Для 12 шт. и около неё пишет неправильно.
5) От себя рекомендую настройку по умолчанию delta = 0.1 мм, а то и 1 мм попробовать. На чертеже два обозначения на таком расстоянии друг от друга все равно не смотрятся. Дублирования (наложения) обозначений теперь нет :)
- = UPD = -
У фланцев для определения центра предлагаю брать не первые три окружности/дуги из выделенного (конечно, если будет выделено всего три, то придется их троих и брать), а три окружности/дуги, которых (какого радиуса) больше по количеству. Т.е. получить двумерный массив количеств и радиусов отв./дуг, выбрать по наибольшему кол-ву соответствующие отв./дуги. Короче говоря, почти конечная цель: выделить весь фланец, т.к. это легче. А раз выделили весь фланец, то наибольшему по диаметру, если он больше определяющих центр и находится в этом центре, поставим прямое обычное ОЦ. А теперь конечная цель: обработать обозначениями полностью фланец за одно выделение и один запуск макроса.
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 30.10.17, 13:24:03
Не много переделал макрос, теперь можно считать выделенные окружности. Где макрос отсортирует и укажет количество каждого типа. Живой пример на скрине.
Название: Re: Обозначение ценра отверсий
Отправлено: Kilia от 30.10.17, 16:34:26
Было бы круто если бы макрос еще и заливку делал одинаковых отверстий (как на чертеже выше), если есть отверстия разных диаметров.
И возможно ли сделать из макроса библиотеку как сделано у топикстартера?
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 30.10.17, 17:15:12
А можно еще спросить? А точки проставить данным макросом возможно? Задача из жизни - есть эскиз с кучей отверстий без центров и точек. По нему делается массив точек, а потом массив по точкам. Если бы макрос проставлял точки, то экономия будет по времени очень ощутима...
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 30.10.17, 19:01:36
Цитата: KiDim от 30.10.17, 17:15:12
А можно еще спросить? А точки проставить данным макросом возможно? Задача из жизни - есть эскиз с кучей отверстий без центров и точек. По нему делается массив точек, а потом массив по точкам. Если бы макрос проставлял точки, то экономия будет по времени очень ощутима...

Вот попробуете, макрос расставляет точки как в 2d так и в эскизах 3d. Для того, чтобы расставить в 3d эскизе, нужно спроектировать на плоскость поверхность с отверстиями потом основной стиль линий изменить на какой то другой, чтобы скрыть из отображения в 3d.
Название: Re: Обозначение цэнтэра отвэрстый
Отправлено: ТрындецЪ от 30.10.17, 22:38:12
Цитата: Kilia от 30.10.17, 16:34:26
Было бы круто если бы макрос еще и заливку делал одинаковых отверстий (как на чертеже выше), если есть отверстия разных диаметров.
Можно заморочиться, если совсем нечем будет заняться.
ЦитироватьИ возможно ли сделать из макроса библиотеку как сделано у топикстартера?
Нельзя, насколько мне известно. Но можно добавить макрос, как утилиту, и тогда можно вынести его на панель инструментов или на контекстную панель.
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 30.10.17, 23:10:01

Цитата: ТрындецЪ от 30.10.17, 22:38:12
Но можно добавить макрос, как утилиту, и тогда можно вынести его на панель инструментов или на контекстную панель.
в 17й пока нельзя, мой запрос в СТП по поводу проигнорировали
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 30.10.17, 23:50:18
Цитата: pr0100 от 30.10.17, 23:10:01
в 17й пока нельзя, мой запрос в СТП по поводу проигнорировали
Печаль-беда  :`(
Нашёл наконец-таки возможность параметризовать геометрию в 2D программно.
Прикрутил в последнем макросе привязку точек  к центрам окружностей.

Upd: В версии 0.3 упростил код, удалив чтение параметров окружностей. Всё что нужно от окружности - это её Reference.
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 08:39:50
Цитата: pr0100 от 30.10.17, 19:01:36
Вот попробуете, макрос расставляет точки как в 2d так и в эскизах 3d. Для того, чтобы расставить в 3d эскизе, нужно спроектировать на плоскость поверхность с отверстиями потом основной стиль линий изменить на какой то другой, чтобы скрыть из отображения в 3d.
Скачал. Сделал эскиз в модели - несколько окружностей с разными стилями линий. Вызвал Компас-Макро. Выбрал выложенный макрос. Нажал запустить. Эффекта нет. Выделили окружности. Еще раз запустил. Такая же ситуевина. Может чего то не так делаю? Компас х64 15.2.20.
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 31.10.17, 08:56:50
Цитата: KiDim от 31.10.17, 08:39:50
Скачал. Сделал эскиз в модели - несколько окружностей с разными стилями линий. Вызвал Компас-Макро. Выбрал выложенный макрос. Нажал запустить. Эффекта нет. Выделили окружности. Еще раз запустил. Такая же ситуевина. Может чего то не так делаю? Компас х64 15.2.20.
Макросы записываются и выполняются? Может, опять полетело чего.
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 09:38:04
Сразу скажу - в макросах я дуб. Есть последовательность действий по проверке работы? Выполню от буквы до точки! :-)))
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 31.10.17, 09:43:20
Цитата: KiDim от 31.10.17, 09:38:04
Сразу скажу - в макросах я дуб. Есть последовательность действий по проверке работы? Выполню от буквы до точки! :-)))
Попробуйте записать самый простой макрос и воспроизвести его. Если макрос запишется и воспроизведётся, значит будем искать проблему в коде.
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 31.10.17, 09:46:40
Цитата: KiDim от 31.10.17, 08:39:50
Скачал. Сделал эскиз в модели - несколько окружностей с разными стилями линий. Вызвал Компас-Макро. Выбрал выложенный макрос. Нажал запустить. Эффекта нет. Выделили окружности. Еще раз запустил. Такая же ситуевина. Может чего то не так делаю? Компас х64 15.2.20.


Компас 15, там питон 2.6 возможно код не много другой должен быть. Попробуйте ниже, который с параметризацией выложил Игорь.


Кстати, что хотел. О чем писал ниже. Можно делить макросы на маленькие. Которые будут работать независимо друг от друга и которыми можно управлять, через графический интерфейс.
Пример прикрепил. Из темы взял несколько макросов, на них налепил кнопки.
Управляющий файл "_Libs_centr.py"
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 09:51:26
Я таки писал, что познаний нету... Что есть записать макрос? Может есть пример?
В библе вижу Начать запись, Остановить запись, Пауза. Но чего делать нужно???
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:00:24
Цитата: pr0100 от 31.10.17, 09:46:40

Компас 15, там питон 2.6 возможно код не много другой должен быть. Попробуйте ниже, который с параметризацией выложил Игорь.


Кстати, что хотел. О чем писал ниже. Можно делить макросы на маленькие. Которые будут работать независимо друг от друга и которыми можно управлять, через графический интерфейс.
Пример прикрепил. Из темы взял несколько макросов, на них налепил кнопки.
Управляющий файл "_Libs_centr.py"
Libs_centr.py запускает черное окно, которое тут же закрывается.
Отдельно запускал все файлы. Работают DenoteCenterFlanges и SetPoint. По остальным черные мгновенные окна и все.
SetPoint - это то, что нужно! Если доработаете и другие модули готов потестить.
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 31.10.17, 10:02:08
Цитата: KiDim от 31.10.17, 09:51:26
Я таки писал, что познаний нету... Что есть записать макрос? Может есть пример?
В библе вижу Начать запись, Остановить запись, Пауза. Но чего делать нужно???


здесь посмотрите:
https://youtu.be/uQPRrPnUSAg
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:15:06
Цитата: pr0100 от 31.10.17, 10:02:08

здесь посмотрите:
https://youtu.be/uQPRrPnUSAg
Вот инструкция для чайников. Сделал, как автор описывает. Работает!
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 31.10.17, 10:15:38
Цитата: KiDim от 31.10.17, 10:00:24
Libs_centr.py запускает черное окно, которое тут же закрывается.


У вас пайтон 2.6 версии я писал для 3, по этому закрывается.
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:22:14
А под 2.6 переписать можете?
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 31.10.17, 10:26:36
Цитата: KiDim от 31.10.17, 10:22:14
А под 2.6 переписать можете?
То что я выкладывал должно работать. У меня же питон 2.6.
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 31.10.17, 10:33:19
Цитата: KiDim от 31.10.17, 10:22:14
А под 2.6 переписать можете?


откройте файл _Libs_centr.py блокнотом, строку:
"from tkinter import *"
нужно заменить на
"from Tkinter import *"

Либо закинуть прикрепленный ниже макрос к остальным файлам.
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:46:08
Изменил. Заработало! Проверил все функции. Все гут. Единственный минус на скрине - русский текст кракозябрами.
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:48:04
Цитата: ТрындецЪ от 31.10.17, 10:26:36
То что я выкладывал должно работать. У меня же питон 2.6.
Я таки за что купил, за то продал. Пробовал все три версии в ветке. Нулевую опробовал во фрагменте, чертеже и эскизе модели, с выделением окружностей и без. Результата нет. Версии 2 и 3 в список макросов не подгружаются.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 31.10.17, 10:52:46
"Расставить точки v0.3.cdm" на к16.1.13х64 работает. Только я его сразу в .pyw переименовал. KiDim, может на всякий случай попробуете тоже его в виде .pyw запустить двойным кликом?
Название: Re: Обозначение ценра отверсий
Отправлено: pr0100 от 31.10.17, 10:56:01
Цитата: KiDim от 31.10.17, 10:46:08
Изменил. Заработало! Проверил все функции. Все гут. Единственный минус на скрине - русский текст кракозябрами.
в файле "CountNumperCircles.py",
нужно в строке "k= ('d ',str(n), '-', str(a), ' шт.\n',)", добавить кодировку 'u'
должно быть:
k= ('d ',str(n), '-', str(a), u' шт.\n',)
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:56:12
Запустил. Результат на скрине.
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 10:58:49
Цитата: pr0100 от 31.10.17, 10:56:01
в файле "CountNumperCircles.py",
нужно в строке "k= ('d ',str(n), '-', str(a), ' шт.\n',)", добавить кодировку 'u'
должно быть:
k= ('d ',str(n), '-', str(a), u' шт.\n',)
Вот теперь просто все супер. Плюсик в карму поставил...
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 31.10.17, 11:00:20
ЦитироватьЗапустил. Результат на скрине.
А изменить расширение на pyw ? )
Название: Re: Обозначение ценра отверсий
Отправлено: KiDim от 31.10.17, 11:05:01
Поменял расширение на pyw. При запуске двойным кликом появляется колесико ожидания примерно на секунду, потом исчезает. И ничего.

Обновление. Работает, если выделить окружности. Пробовал в чертеже, эскизе, фрагменте.
Название: Обозначение центра отверстий
Отправлено: ТрындецЪ от 31.10.17, 13:56:02
Обозначений центров для "фланца " v0.3

Что нового:
- при построения центральной окружности учитывает кол-во объектов одинакового радиуса(в приоритете объекты одного радиуса, которых больше всего в выделении);
- работает и с неактивным видом;
- удаляет старые ОЦ у объектов, с которыми работает;
- исправлены найденные ошибки.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 31.10.17, 18:42:01
Цитироватьif str(n)[-2:-1] in ["11","12","13","14",]:
        text = "\nобозначений центра"       
у меня не стала работать. Убрал -1 из [-2:-1] заработало. Лучше код так написать:
Цитировать
if str(n)[-1] in ["0","5","6","7","8","9"] or str(n)[-2:] in ["11","12","13","14"]:
        text = "\nобозначений центра"
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 01.11.17, 06:37:46
ТрындецЪ, Не везде срабатывает учет количества объектов одинакового радиуса. Например, разрушенный макроэлемент Фланец 1-10-1 Ст 20 ГОСТ 12820-80 из библиотеки СИ. См. картинку.

pro100, если макрос Считать количество выделенных окружностей запустить без выделенной геометрии, то:
Traceback (most recent call last):
  File "D:\!Компас\Макро\Считать количество выделенных окружностей.cdm", line 34, in <module>
    if selected_objects.DrawingObjectType ==  const.ksDrCircle: # РѕРєСЂСѓР¶РЅРѕСЃС,ей
AttributeError: 'NoneType' object has no attribute 'DrawingObjectType'
Это остатки от ТрындецЪкого макроса или было что-то задумано?
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 01.11.17, 10:08:23
Цитата: Вират Лакх от 01.11.17, 06:37:46
ТрындецЪ, Не везде срабатывает учет количества объектов одинакового радиуса. Например, разрушенный макроэлемент Фланец 1-10-1 Ст 20 ГОСТ 12820-80 из библиотеки СИ. См. картинку.
В этом фланце макрос принимает центры отверстий лежащими на одной прямой, т.к. они не проходят проверку if abs(abs((x1 - x2)/(x3 - x2)) - abs((y1 - y2)/(y3 - y2))) >= delta

Нужно придумать что-то более универсальное. У меня уже мозг вскипает  :%:.
Логика была такая:
Есть уравнение прямой: (x1 - x2)/(x3 - x2)) = (y1 - y2)/(y3 - y2)
В него мы передаём координаты центров трех окружностей и если равенство выполняется, то эти три окружности лежат на одной прямой и через их центры мы не сможем провести центральную окружность.
Но!  Т.к. КОМПАС выдаёт координаты центров с какой-то степенью точности, а Python очень дотошен до мелочей  (как, впрочем, и Вират Лакх ;)), то с 99% вероятностью равенство не выполнится. Поэтому приходится находить разность левой и правой части уравнения и сравнивать эту погрешность с какой-то допустимой, заранее оговоренной, величиной ( в моём случае это delta, но это очень грубовато).
Есть ещё одно "но": если знаменатель дроби равен 0 (как в случае с последним фланцем), то выбивает ошибку "деления на 0"
Да и числитель второй дроби тоже =0, хотя центры не на одной прямой.
Нужно продумать этот момент.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 01.11.17, 12:32:36
Давайте по порядку. Расскажите сначала программу.
"Выделите не менее трёх неконцентрических окружностей, центры которых не лежат на одной прямой!" надо добавить "или дуг окружностей".
BD.append([ R, x, y, obj ]) - формируете матрицу, где obj - это указание на дугу или окружность?
Dct, Dct2, BD2 - это кто?
x1 y1 x2 y2 x3 y3 - Координаты каких трех точек?
Циклом while (m + 2) <= len (BD2)-1 пробуете найти три точки для нахождения центра фланца?
abs(abs((x1 - x2)/(x3 - x2)) - abs((y1 - y2)/(y3 - y2))) >= delta - почему вы тут разность отношений координат, которая без единиц измерения, сравниваете с дельтой, у которой есть ед. изм.?
Давайте сделаем проще анализ положения третьей точки на прямой, образованной первыми двумя точками:
y3p = (y2-y1)/(x2-x1)*(x3-x1) - это ордината точки на прямой для x3.
Если |y3-y3p| <= delta, то считаем, что (x3;y3) лежит на прямой и окружность фиг построить.
А перед этим надо провести проверку трех скобок: |y2-y1|>delta, |x2-x1|>delta, и |x3-x1|>delta - должно быть True, иначе считаем, что выбраны окружности, расположенные слишком близко, чтобы расставлять ОЦ. Когда три скобки проверим, то не будет нуля ни в числителе, ни в знаменателе.
Пока debug на этом остановим.
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 01.11.17, 13:25:47
Цитата: Вират Лакх от 01.11.17, 12:32:36
Давайте по порядку. Расскажите сначала программу.
Выделяем на чертеже область и запускаем макрос.
Макрос получает выделенные объекты в виде списка и отбирает из всех объектов только дуги и окружности. (BD.append([ R, x, y, obj ])). Для каждого отобранного объекта в списке BD будет сформирован подсписок состоящий из [R-радиуса, х  и y - координаты центра, obj - ссылка на объект] (по сути, координаты пока не нужны, они потом понадобятся для поиска концентричности).
Теперь нам надо выяснить какого радиуса больше всего в списке.
Для этого мы создаём словарь Dct, где ключами будут значения радиусов. Перебираем список BD и формируем словарь Dct (в тонкости вдаваться не буду). В итоге получаем что-то типа этого: Dct = { R1: [4,[obj1, obj2, obj3, obj4]], R2: [2, [obj5, obj6]], , R3: [3, [obj7, obj8,  obj9]]}, т.е { Радиус: [ кол-во объектов такого радиуса, [ ссылки на объекты ]....}
Т.к. словари не упорядочены, то словарь Dct преобразуем в список Dct2 ( Dct2 = Dct.items() ), а затем сортируем этот список по количествам радиусов от большего к меньшему ( Dct2.sort( key = lambda x: x[1][0], reverse=True) ).
Теперь в начале списка Dct2 будут элементы с чаще встречающимися радиусами.
Dct2 имеет сложную структуру, содержащую подсписки, которая нам уже не нужна. Поэтому, мы создаём новый список BD2, и из списка Dct2 переносим только ссылки на объекты. Порядок элементов при этом не нарушается, и первыми в списке BD2 будут объекты, радиусов которых больше всего.
Далее, мы берём нулевой, первый и второй элементы списка BD2 и получаем координаты их центров. Что происходит потом, я уже описывал.
Если взятые элементы не подошли, то смещаемся по списку BD2 на одну позицию вперёд и берём первый, второй и третий элементы и т.д., пока список не закончится.

Цитировать
Давайте сделаем проще анализ положения третьей точки на прямой, образованной первыми двумя точками:
y3p = (y2-y1)/(x2-x1)*(x3-x1) - это ордината точки на прямой для x3.
Если |y3-y3p| <= delta, то считаем, что (x3;y3) лежит на прямой и окружность фиг построить.
А перед этим надо провести проверку трех скобок: |y2-y1|>delta, |x2-x1|>delta, и |x3-x1|>delta - должно быть True, иначе считаем, что выбраны окружности, расположенные слишком близко, чтобы расставлять ОЦ. Когда три скобки проверим, то не будет нуля ни в числителе, ни в знаменателе.
Не понял про проверку скобок. Они все одновременно должны быть True, по-вашему?
Вот координаты первых элементов, которые не пропускает макрос:
17.6776695297 17.6776695297
-17.6776695297 17.6776695297
-17.6776695297 -17.6776695297
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 01.11.17, 21:37:17
Это я в первом приближении написал и не додумал полностью.
Забыл дописать y1 в выражении: y3p = (y2-y1)/(x2-x1)*(x3-x1) + y1
Да, действительно, проверять все три скобки не надо. Это, видимо, из-за забытой y1 я затупил. Одну надо скобку проверить, чтобы не получить 0 в знаменателе.
Проверка на концентричность не выполнена же на этом этапе программы? Почему бы сначала не отАнтиКонцентричить массив BD2 ? Или лучше BD обработать (перенести BD = Sort_BD(BD) перед Dct = {} # создаём словарь), а уже из отфильтрованного BD получить BD2 без концентрических окружностей/дуг, чтобы лишний раз не проверять на слишком близкое расположение.
Потом остается проверить на нахождение на одной прямой (вертикальной или любой другой):
Если x2==x1, то: (при этом игреки из-за сортировки заведомо далеко друг от друга, т.е. >delta)
  если |x3-x1|<=delta, то три точки находятся на вертикальной прямой и continue цикл,
  иначе break циклу.
Иначе если |(y2-y1)/(x2-x1)*(x3-x1) + y1 - y3| <= delta, то continue цикл,
  иначе break циклу.
Может даже лучше |x3-x1|<=delta заменить на x3==x1 (как x2==x1), т.к. оба сравниваемые числа имеют одинаковую компасную точность, и равенство произойдет.
Название: Re: Обозначение ценра отверсий
Отправлено: VIO от 13.04.18, 18:42:16
Не подскажите как её подключить?
И что за расширение руw?
:shu:
И будет ли работать с 64-разрядной версией компаса?
Она только для фланцев, или может работать как старая добрая библиотека "Обозначение центра"?
Лично мне она очень помогала.  :)
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 13.04.18, 19:27:32
Цитата: VIO от 13.04.18, 18:42:16
Не подскажите как её подключить?
И что за расширение руw?
:shu:
И будет ли работать с 64-разрядной версией компаса?
Она только для фланцев, или может работать как старая добрая библиотека "Обозначение центра"?
Лично мне она очень помогала.  :)
Есть две отдельные версии макроса: для окружностей и для фланцев.
Чтобы эти макросы работали нужно, чтобы в системе был установлен Python версии 2.х и его библиотека pywin32 (Компас во время установки библиотеки КОМПАС-МАКРО всё это ставит автоматом). Если этого нет, то можно скачать из интернета и установить (благо всё бесплатно).
Сам же макрос запускается на выполнение двойным кликом мыши.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 14.04.18, 10:32:36
Чо та мы совсем забросили эти два макроса. Летом после 17-го июня надо будет попробовать за них взяться...
Название: Re: Обозначение ценра отверсий
Отправлено: ТрындецЪ от 14.04.18, 11:27:52
Цитата: Вират Лакх от 14.04.18, 10:32:36
Чо та мы совсем забросили эти два макроса. Летом после 17-го июня надо будет попробовать за них взяться...
Что за дата такая значимая?
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 14.04.18, 11:31:46
Я своих домашних провожу в далекую деревню на две-три недели )
Название: Re: Обозначение ценра отверсий
Отправлено: msvteh от 14.04.18, 23:25:33
в макрос Обозначения центров v0.5.1 для себя добавил установку центров для выделенных прямоугольников
надо ещё многоугольники добавить
Название: Re: Обозначение ценра отверсий
Отправлено: msvteh от 23.04.18, 21:16:56
Обозначения центров v0.5.2

Что нового:
- добавлена простановка обозначений центров выделенных прямоугольников и многоугольников.
- добавлены константы, которые включают и исключают обработку прямоугольников и многоугольников.

работает в v14.2 если выделить прямоугольники или многоугольники
Название: Re: Обозначение ценра отверсий
Отправлено: Умка от 24.04.18, 06:01:21
Работает на Кv13.2 WXP даже без запуска консоли, но не обозначает центры многоугольников и прямоугольников ассоциативных чертежей при включенных константах.
Название: Re: Обозначение ценра отверсий
Отправлено: msvteh от 24.04.18, 12:20:29
в ассоциативных чертежах и в эскизе трехмерного элемента прямоугольников как единого объекта нет - это набор отдельных отрезков со своими ограничениями и связями , поэтому интерфейсы объектов прямоугольников и многоугольников, которые я использовал,  работать не будут
Название: Re: Обозначение ценра отверсий
Отправлено: genek87 от 01.06.18, 11:48:12
Было бы шикарно ещё добавить в библиотеку Обозначения центров v0.5.2 возможность простановки центров только на окружности, дуги и тд с определенным стилем линии (основная, тонкая, вспомогательная). Если для стиля линии свойство в библиотеке False, то не проставлять центра, True - проставлять.
Название: Re: Обозначение центра отверстий
Отправлено: ТрындецЪ от 01.06.18, 13:13:43
Цитата: genek87 от 01.06.18, 11:48:12
Было бы шикарно ещё добавить в библиотеку Обозначения центров v0.5.2 возможность простановки центров только на окружности, дуги и тд с определенным стилем линии (основная, тонкая, вспомогательная).
Название: Re: Обозначение ценра отверсий
Отправлено: genek87 от 01.06.18, 15:33:10
Ох, то что надо. Да ещё так оперативно, благодарю.
Название: Авторасстановка центров отверстий на чертеже
Отправлено: Михаил88 от 09.06.22, 13:33:10
Макрос позволяет расставить центра отверстиям на чертеже по всем имеющимся видам. Запускать на активном чертеже.
Т.к. в К18.1 нет еще такой функции написал для себя. Теперь делюсь. Возможно кому то будет полезно.

exe - https://disk.yandex.ru/d/kE324q5yrz1ZkA
pyw - https://disk.yandex.ru/d/d080f12uSdrQjg

Screenshot_2.png
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: AlinaM от 09.06.22, 14:01:43
Такое же есть, в стандартном инструментарии Компаса
оси.png
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: Михаил88 от 09.06.22, 14:12:07
Цитата: AlinaM от 09.06.22, 14:01:43Такое же есть, в стандартном инструментарии Компаса
у Вас версия компаса какая?
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: Михаил88 от 09.06.22, 14:13:31
Цитата: Михаил88 от 09.06.22, 13:33:10Т.к. в К18.1 нет еще такой функции написал для себя.

я специально написал. В К18.1 нет такой функции. Если не ошибаюсь появилась только в К19.
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: Serious от 09.06.22, 16:09:38
Есть такое. Версия Компас 18.1.
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: Михаил88 от 09.06.22, 16:13:07
я знаю о такой команде. Вам, чтобы проставить центра на всех окружностях на всех видах с помощью этой команды нужно на каждом виде выделить отв. и нажать автоосевая. У меня программа делает все автоматически.

https://disk.yandex.ru/i/ShgwWKdzyD3gMg - видео по работе.

Еще раз повторюсь у кого версия компаса 19 и выше это уже стандартно реализовано в функционале компаса.
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: Вират Лакх от 10.06.22, 09:21:09
На всякий случай для справки аналогичная тема https://forum.ascon.ru/index.php?topic=29314.0
Название: Re: Авторасстановка центров отверстий на чертеже
Отправлено: Михаил88 от 10.06.22, 09:35:28
Цитата: Вират Лакх от 10.06.22, 09:21:09На всякий случай для справки аналогичная тема https://forum.ascon.ru/index.php?topic=29314.0 (https://forum.ascon.ru/index.php?topic=29314.0)
Я к сожалению не знал о наличии такого макроса. Попробовал последнюю версию работает. Только нужно выделить отв. предварительно.
Название: [ОБЪЕДИНЕНА] Авторасстановка центров отверстий на чертеже
Отправлено: Starik от 10.06.22, 10:19:20
Тема была объединена в Обозначение ценра отверсий (https://forum.ascon.ru/index.php?topic=29314.0).
Название: Re: Обозначение ценра отверсий
Отправлено: Starik от 10.06.22, 10:20:39
Цитата: Михаил88 от 10.06.22, 09:35:28Я к сожалению не знал о наличии такого макроса. Попробовал последнюю версию работает. Только нужно выделить отв. предварительно.
Можно просто выделить вид.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 10.06.22, 10:44:25
Если ничего не выделять, то макрос перебирает виды и расставляет по всем видам. Там нужно было что-то доделать, но так и осталось...
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 10.06.22, 11:14:20
Цитата: Вират Лакх от 10.06.22, 10:44:25Если ничего не выделять, то макрос перебирает виды и расставляет по всем видам. Там нужно было что-то доделать, но так и осталось...

Сейчас попробовал.
1. Не выделял ничего запустил. Ушло в ошибку.
2. Выдели вид и запустил. Ушло в ошибку.
3. Выделил все содержимое вида рамкой. Ушло в ошибку.

Сработало только тогда, когда нажал выделить -> по свойствам -> отверстия.

P.S. тестировал эту версию Обозначения центров 0.5.3.pyw.

У меня стоит К18.1.55
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 10.06.22, 12:09:29
ОЦ v0.5.1 + 16.1.19 работает 1, 2 и 3 (ничего, вид и геометрия соответственно). Может в 0.5.2 и 0.5.3 напортачили? Либо изменения в API, тогда надо подкорректировать макрос.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 10.06.22, 12:23:11
Цитата: Вират Лакх от 10.06.22, 12:09:29ОЦ v0.5.1 + 16.1.19 работает 1, 2 и 3 (ничего, вид и геометрия соответственно). Может в 0.5.2 и 0.5.3 напортачили? Либо изменения в API, тогда надо подкорректировать макрос.
Screenshot_3.png

Причем сейчас попробовал просто в чертеже окружность нарисовал и запустил и все ОК. А на каких то чертежах уходит в ошибку.

У меня в принципе есть мой рабочий макрос. Кому надо подправит Обозначения центров 0.5.3.pyw. Я так понял у него просто функционал по шире, но мне достаточно просто простановки центров всем окружностям на всех видах.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 16.11.22, 16:51:49
"Простановка обозначений центров, точек и условных знаков v0.6"

Умеет:
1. Ставить обозначения центров на окружности, дуги, эллипсы, дуги эллипсов, многоугольники, прямоугольники, точки.
2. Ставить точки на окружности, дуги, эллипсы, дуги эллипсов, многоугольники, прямоугольники, обозначения центров.
3. Параметризировать (привязывать) обозначения центров/точек.
4. Ставить условные знаки на окружности, дуги, элипсы, дуги элипсов, многоугольники, прямоугольники, точки.
5. Определять объекты по стилю.
6. Не создавать дубликаты уже установленных обозначений центров/точек/условных знаков.
7. Создавать ОЦ/Т/УЗ на выбранном виде/видах.
8. Добавлена опция обработки всех видов.
9. Работает в эскизах модели/СБ.

Исправил ошибки:
1. Выдавало ошибку из-за совпадения точек центра (отв./дуг....) при сортировки списка.

В планах:
1. Сделать параметризацию (привязку) условных знаков при их вставке.
2. Возможность изменять размер вставляемых условных знаков.
3. Ставить различные условные знаки, согласно размерам параметризованных объектов.

P.S. Различия с v0.5.3 выделены.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 17.11.22, 11:17:09
"Простановка обозначений центров, точек и условных знаков v0.6.1"

Исправлено:
1. Выдавало ошибочное сообщение "КОМПАС-3D не найден!" когда не открыт чертёж/эскиз.
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 18.11.22, 10:25:31
Компас 16.1.19: версия v0.6.1 - ничего не происходит (не работает  :um: ), v0.5.3 - работает
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 18.11.22, 10:27:30
Хмм, в старых версиях я не проверял...

Ошибку никакую не пишет?
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 18.11.22, 10:35:44
ничего не пишет, но и ничего не происходит...
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 18.11.22, 10:41:17
Запускали напрямую или через IDE?
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 22.11.22, 13:44:09
Цитата: dimak222 от 18.11.22, 10:41:17Запускали напрямую или через IDE?
запускал напрямую... а вот через IDLE (Python GUI) - смотри картинку
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 22.11.22, 14:07:29
Цитата: vasurnik от 22.11.22, 13:44:09через IDLE (Python GUI)

А если запустить (Рис. 1)? Какую ошибку выдаст? Возможно нет модулей (os, time, tkinter, math, threading (самые вероятные)).
Обычно делаю exe, но тут не хотел заморачиваться.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 22.11.22, 14:29:42
Цитата: dimak222 от 22.11.22, 14:07:29Возможно нет модулей (os, time, tkinter, math

Это все встроенные модули. Они не требуют дополнительной установки.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 22.11.22, 14:33:26
Цитата: Михаил88 от 22.11.22, 14:29:42Это все встроенные модули.

Блин, точно=\

Там есть threading для выдачи сообщений в отдельном потоке, вот он точно отдельным модулем.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 22.11.22, 14:52:13
По PEP8 импорты всегда помещаются в начале файла, сразу после комментариев к модулю и строк документации, и перед объявлением констант.
Тогда сразу видно, что импортируется и не нужно по строкам высматривать.
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 22.11.22, 19:05:50
после запуска Run Module:
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 08:40:47
Цитата: Михаил88 от 22.11.22, 14:52:13PEP8

Интересно, ознакомлюсь, спасибо!
Я одни и те же функции использую в разных макросах, и что бы просто скопировать и вставить, использую импорт в каждой функции... Мне удобно, но на сколько это правильно, большой вопрос.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 09:18:17
Цитата: vasurnik от 22.11.22, 19:05:50после запуска Run Module:
Прошу испытать эту версию:

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

Что изменено:
1. Добавил кодировку (# -*- coding: utf-8 -*-).
2. Поменял знак α => a.
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 23.11.22, 09:40:53
ошибка теперь такая.

До этого была ошибка, что выше: ".....syntax"
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 09:53:03
скорее всего у вас питон 3.2.5, а в нем вроде еще не было метода list.copy() из-за этого и выдает ошибку.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 09:55:59
Цитата: Михаил88 от 23.11.22, 09:53:03питон 3.2.5

Пытался найти Python который идёт с КОМПАСом, и посмотреть что там за версия, но не могу найти где он лежит=\
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 10:22:01
Цитата: FR347 от 23.11.22, 09:40:53ошибка теперь такая.

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

Что изменено:
1. Поменял list1.copy() на list1[:]
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 23.11.22, 10:40:29
Заработало, спасибо.
Поставило обозначение центров, точки и условные знаки.

Я правильно понимаю, что нет выбора, ставить ли точки, центра или условные?
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 10:46:36
Цитата: FR347 от 23.11.22, 10:40:29что нет выбора

Есть, весь список настроек (Рис. 1). Нужно отредактировать в файле (False/True/значения (углов, стилей)), под свои задачи и сохранить.
Можно сохранить несколько файлов с разными настройками...

Если описание настроек будет не понятно - пишите.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 11:02:20
Цитата: dimak222 от 23.11.22, 09:55:59Пытался найти Python который идёт с КОМПАСом, и посмотреть что там за версия, но не могу найти где он лежит=\

C:\ProgramData\ASCON\KOMPAS-3D\18\Python 3\App

Название: Re: Обозначение ценра отверсий
Отправлено: IgorT от 23.11.22, 11:07:15
Что-то не пойму, а как задумана работа макроса?
Нарисовал деталь с отверстиями. Два отв. диам. 10, 4 отв. диам 20. Запускаю макрос, он на все отверстия ставит один и тот же знак.
По идеи знаки должны различаться. Не?
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 11:18:43
Цитата: dimak222 от 16.11.22, 16:51:49В планах:
1. Сделать параметризацию (привязку) условных знаков при их вставке.
2. Возможность изменять размер вставляемых условных знаков.
3. Ставить различные условные знаки, согласно размерам параметризованных объектов.
Цитата: IgorT от 23.11.22, 11:07:15По идеи знаки должны различаться

Да, должны, но есть загвоздки по плану:
1. Не могу сделать параметризацию УЗ (в макросе есть заготовка параметризации от точек, но она не работает).
2. Не могу изменять размер УЗ (Значение только для чтения, и через IFeature7 поменять не получилось).
3. Можно допилить, но без первых двух пунктов не стал заморачиваться.
Название: Re: Обозначение ценра отверсий
Отправлено: IgorT от 23.11.22, 11:21:43
Цитата: dimak222 от 23.11.22, 11:18:43Да, должны, но есть загвоздки по плану:
1. Не могу сделать параметризацию УЗ (в макросе есть заготовка параметризации от точек, но она не работает).
2. Не могу изменять размер УЗ (Значение только для чтения, и через IFeature7 поменять не получилось).
3. Можно допилить, но без первых двух пунктов не стал заморачиваться.
Фрагмент знака имеет Размер с именем "D". Его значение можно менять. Это можно использовать для задания размера в соответствии с размером отверстия? Самой программой конечно.
А сами знаки для разных отверстий могут быть разные?
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 11:32:43
Я думаю это все можно сделать.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 11:35:48
Цитата: IgorT от 23.11.22, 11:21:43Фрагмент знака имеет Размер с именем "D"
Я могу прочитать значение, но изменить его не удаётся=\ (Рис. 1 и Рис. 2).

Цитата: IgorT от 23.11.22, 11:21:43А сами знаки для разных отверстий могут быть разные?
А это можно и сейчас сделать (Рис. 3)
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 23.11.22, 11:41:55
Спасибо сделал разные варианты. Точки, центра, знаки - наличие или отсутствие.

Как понял знак не привязывается к отверстию.

Может получится дать соосность знака и отверстия?

Я знаю, что окружность знака не цепляет, но цепляет центр знака и отверстия.
Я пробовал для знака дать соосность центра знака и окружности отверстия. Прекрасно "бегает" за отверстием.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 11:44:34
Уже думал как сделать (время надо и не уверен нужно ли это кому-то):

1. Сортируем диаметры отв. по возрастанию/убыванию (опция).
2. Из списка удаляем отв. если их количество меньше чем "n" (опция).
3. Ставим "n-й" знак для отв. из списка пока не будет другое значение размера отв., для другого размера "n-й + 1",
4. Доходим max до 10-го знака (по количеству усл. знаков в библиотеке).
5. Если не дошли до 10 - всё ок, если дошли выдать сообщение "Закончились усл. знаки"
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 11:53:24
Цитата: FR347 от 23.11.22, 11:41:55Как понял знак не привязывается к отверстию.

Да, там в настройках, в пояснении, написано "Опция не работает!"=)

Пробовал совпадением центров окружностей, дуг, эллипсов и точек (ksConstraintTypeEnum) - не работает.

Сейчас сделано совпадением двух точек (т.к. вручную так работает), в макросе прописано, но оно всё равно не срабатывает...
Название: Re: Обозначение ценра отверсий
Отправлено: IgorT от 23.11.22, 11:56:50
Цитата: dimak222 от 23.11.22, 11:35:48...
А это можно и сейчас сделать (Рис. 3)
То есть для простановки нужного вида знак отверстия надо каждый раз править конфигурацию?
......
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 11:59:29
Цитата: IgorT от 23.11.22, 11:56:50То есть для простановки нужного вида знак отверстия надо каждый раз править конфигурацию?

Угу. Всё было сделано для точек, а потом (в одной теме был разговор про УЗ) добавил УЗ, но они не полноценно работают...
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 12:02:08
Цитата: IgorT от 23.11.22, 11:56:50Что-то я перезабыл как вставлять знаки врукопашную.

=))) (Рис. 1 и Рис. 2)
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 12:04:14
Цитата: dimak222 от 23.11.22, 11:44:345. Если не дошли до 10 - всё ок, если дошли выдать сообщение "Закончились усл. знаки"
можно же свои знаки добавить в библиотеку
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 12:11:34
Цитата: Михаил88 от 23.11.22, 12:04:14можно же свои знаки добавить в библиотеку

В макросе есть список УЗ (Conditional_sign_list_name), его нужно будет пополнить. Название (путь к УЗ) и их количество берётся с этого списка.
Название: Re: Обозначение ценра отверсий
Отправлено: IgorT от 23.11.22, 12:12:07
А можно сделать макрос, который использовал бы свои знаки отверстий. Так что они были параметрическими и был выбор знака не посредством правки файла, а посредством выбора в меню?
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 23.11.22, 12:26:30
появились обозначения центров, но только после запуска Run Module (Простановка обозначений центров, точек и условных знаков v0.6.1.2):
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 12:27:33
Цитата: IgorT от 23.11.22, 12:12:07свои знаки отверстий
В теории сделать свой фрагмент и вставлять его, но это пробовать надо. Ещё не факт что он не будет таким же (т.к. в библиотеке это тоже фрагмент (если нажать редактировать источник)).

Цитата: IgorT от 23.11.22, 12:12:07а посредством выбора в меню?
Да, можно.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 12:58:56
Цитата: vasurnik от 23.11.22, 12:26:30но только после запуска Run Module
По идее должно и так запачкаться...

Я не работал в Prthon 2.X, но похоже что там надо добавлять "u" перед строками, пример:
FileName = iLibsFiles + u"\Shapes_and_signs.kle|" + Conditional_sign_name + u".frw" # имя файла фрагмента (имя файла библиотеки|разделы, подразделы внутри библиотеки|имя фрагмента)
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 23.11.22, 13:31:21
Чтобы второй питон работал с третьим без u, нужно в начале поставить:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 23.11.22, 14:12:59
А центра отверстий можно сделать выступающими за окружность?
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 15:48:09
Цитата: FR347 от 23.11.22, 14:12:59А центра отверстий можно сделать выступающими за окружность?
Типа такого (Рис. 1)?
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 15:50:55
Так можно задавать размер условного знака вставленного из библиотеки фигур и условных знаков.

# -*- 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
iDrawingContainer = kompas_api7_module.IDrawingContainer(view)
insertionObjects = iDrawingContainer.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(300, 200.0, 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 = 148
iInsertionObject.Update()
kompas_document_2d_1.RebuildDocument()
изображение_2022-11-23_175335345.png
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 23.11.22, 16:10:26
Цитата: dimak222 от 23.11.22, 15:48:09Типа такого (Рис. 1)?

Да только, что бы поменьше выступало. Ну как стандартный центр Компаса
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 16:20:14
Цитата: Михаил88 от 23.11.22, 15:50:55Так можно задавать размер условного знака вставленного из библиотеки фигур и условных знаков.
Хз, как так, но у меня не работает=/ (Рис. 1)
Я доходил до ivariable7, но у меня ничего...
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 16:22:10
Цитата: FR347 от 23.11.22, 16:10:26Да только, что бы поменьше выступало. Ну как стандартный центр Компаса

Могу сделать опцией, сейчас у меня и так стандартная длина 5 мм.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 16:24:19
Цитата: dimak222 от 23.11.22, 16:20:14Хз, как так, но у меня не работает=/ (Рис. 1)
Я доходил до ivariable7, но у меня ничего...
а что тут может не получаться? Я вам скинул полный код. Вы его запустите и все получится.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 16:26:23
Цитата: Михаил88 от 23.11.22, 16:24:19а что тут может не получаться? Я вам скинул полный код. Вы его запустите и все получится.
Я запустил, и приложил картинку, создался УЗ положение 300 на 200 размером 10. Ваш макрос не правил (должно быть 148)
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 16:31:54
Цитата: FR347 от 23.11.22, 16:10:26поменьше выступало

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

Что нового:
1. Добавил опцию "Centre_JutLength" (длину выступления ОЦ).
2. Добавил совместимость с Python 2.X.
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 23.11.22, 16:38:52
Цитата: dimak222 от 23.11.22, 16:22:10Могу сделать опцией, сейчас у меня и так стандартная длина 5 мм.


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

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

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

Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 16:42:17
Мой проект 1 2022-11-23_18-32-05.gif

проблема не у меня в коде
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 16:47:43
Цитата: dimak222 от 23.11.22, 16:20:14Я доходил до ivariable7, но у меня ничего...

а что вот это значит.
Почему не выполнили полностью?
Последняя строчка kompas_document_2d_1.RebuildDocument()
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 16:55:13
Цитата: Михаил88 от 23.11.22, 16:47:43а что вот это значит.
Почему не выполнили полностью?
Извиняюсь, не так выразился, имел ввиду, что уже пытался менять через IFeature7, ничего не получалось:
Цитата: dimak222 от 23.11.22, 11:18:432. Не могу изменять размер УЗ (Значение только для чтения, и через IFeature7 поменять не получилось).
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 23.11.22, 16:59:47
Цитата: Михаил88 от 23.11.22, 16:42:17проблема не у меня в коде
Похоже  в КОМПАСе беда.
Завтра постараюсь запилить, останется только с привязкой решить вопрос.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 17:01:08
Цитата: dimak222 от 23.11.22, 16:55:13Извиняюсь, не так выразился, имел ввиду, что уже пытался менять через IFeature7, ничего не получалось:

так у меня IFeature7 и не используется.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 23.11.22, 17:32:11
Цитата: 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

Для примера сделал для одного отверстия. Теперь условный знак имеет диаметр, как и у отверстия. Плюсом накладывается ограничение на совпадение центра отв. с центром УЗ.
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 24.11.22, 16:14:22
"Простановка обозначений центров, точек и условных знаков 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) - она не даёт сделать параметризацию.
Название: Re: Обозначение ценра отверсий
Отправлено: Вират Лакх от 24.11.22, 17:16:51
Цитата: dimak222 от 24.11.22, 16:14:22Параметризация УЗ была написана правильно, была беда во временной группе (ksNewGroup) - она не даёт сделать параметризацию.
Через API7 пробовали?
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 24.11.22, 20:15:26
появились обозначения центров, но только после запуска Run Module (Простановка обозначений центров, точек и условных знаков v0.6.2.0 и v0.6.3.0):
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 25.11.22, 11:24:01
Цитата: Вират Лакх от 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" не добавил...
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 25.11.22, 11:37:03
Цитата: dimak222 от 25.11.22, 11:24:012. Её вообще нет (маловероятно).

B компас 16 еще не было библиотеки .kle. Раньше библиотека фигур и условных знаков имела другое расширение.
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 25.11.22, 11:47:38
Цитата: dimak222 от 25.11.22, 11:24:01Это про NewGroup (Рис. 1)? Если честно, то я не понял как получить API экспортных функций (https://forum.ascon.ru/Smileys/fugue/shuffle.gif)
для API7
Интерфейс IDrawingGroup
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 25.11.22, 11:52:49
...да, такой библиотеки в Компас V16 просто нет...
Название: Re: Обозначение ценра отверсий
Отправлено: Михаил88 от 25.11.22, 11:55:16
.lfr — Компас — библиотеки фрагментов.

Shapes_and_signs.lfr  возможно так называется
Название: Re: Обозначение ценра отверсий
Отправлено: vasurnik от 25.11.22, 13:36:55
Shapes_and_signs.lfr - такая библиотека есть
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 25.11.22, 13:53:30
"Простановка обозначений центров, точек и условных знаков v0.6.3.1"

Что нового:
1. Добавил список условных знаков для КОМПАС v16. (необходимо вручную заменить название Conditional_sign_list_name_v16 на Conditional_sign_list_name)
2. Исправил ошибку вставки знаков с 8 по 10.
Название: Re: Обозначение ценра отверсий
Отправлено: IgorT от 25.11.22, 14:19:18
Замечательно!
Вот если бы макрос ставил разные знаки на различные отверстия...
То есть если выбрана группа, то для разных диаметров в выбранном ставились разные знаки.
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 25.11.22, 15:51:18
Цитата: IgorT от 25.11.22, 14:19:18То есть если выбрана группа, то для разных диаметров в выбранном ставились разные знаки.
Ну тут поможет Выделить по свойствам.
Выделили скажем отверстия диаметром равным 20, там знак 1.
Диаметром 30 знак 2.
Но мы редко используем знаки...
Вот центра полезно.
Ну и точки (для массива по точкам)

Хотя я пользовался другим макросом постоянно... Просто УЗ еще одна хорошая фишка
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 28.11.22, 15:11:39
"Простановка обозначений центров, точек и условных знаков v0.7.0.0"

Что нового:
1. Добавлена опция "Conditional_sign_size_dependence" (ставить ли разные условные знаки в зависимости от размера выделенных объектов).
2. Добавлена опция "Conditional_sign_sort" (сортировка по убыванию размеров выделенных объектов).
3. Добавлена опция "Conditional_sign_number_identical_objects" (с какого количества одинаковых объектов ставить знаки (с n включительно)).

Что изменено:
1. Исправлена работа выбора стиля линии.
2. Способ выбора стиля.
3. Изменён способ перебора обозначений из списка объектов.
4. Вернул группировку ОЦ/Т. (Интерфейс "IDrawingGroup").

Известные ошибки:
1. УЗ неправильно параметризуется с прямоугольником (=> перестаёт работать определение дубликатов УЗ у прямоугольника).
2. При расстановке УЗ не на активном виде, группа "Фрагменты", не раскрывается до переоткрытия документа (Рис. 1.).
3. Нет определения вставленных УЗ, при повторном запуске (без удаления старых УЗ) макроса , УЗ становятся на новые объекты (=> объекты с разным размером, могут быть с одинаковыми УЗ).

P.S. Тот же результат что и с "ksNewGroup", ломается привязка УЗ. На всякий, оставил в макросе (закомментированным).
Цитата: Михаил88 от 25.11.22, 11:47:38Интерфейс IDrawingGroup
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 28.11.22, 17:10:34
Не ставит УЗ.
"условные знаки уже проставлены"...
Хотя УЗ нет...
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 28.11.22, 17:21:29
Цитата: FR347 от 28.11.22, 17:10:34Не ставит УЗ.
"условные знаки уже проставлены"...
Хотя УЗ нет...
Скорее всего, количество одинаковых (по размеру) объектов меньше 2-х (измените "Conditional_sign_number_identical_objects = 1" тогда будет ставить на каждое)
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 28.11.22, 17:55:31
Все верно! Смутила фраза, что уже стоят центра)

Все работает, УЗ разные, привязываются к отверстиям.

Единственно, при изменении диаметра, не меняются размеры УЗ. А так все отлично

Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 28.11.22, 19:05:17
Цитата: FR347 от 28.11.22, 17:55:31Смутила фраза, что уже стоят центра УЗ)
Надо будет поменять, по типу "Одинаковых объектов не обнаружено"=)

Цитата: FR347 от 28.11.22, 17:55:31при изменении диаметра, не меняются размеры УЗ
У Вас КОМПАС v20? В КОМПАС v19 тоже самое, в КОМПАС v21 всё работает. Похоже это баг версий...
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 28.11.22, 19:09:41
КОМПАС-3D 21.0.6.1257 (64-разрядная версия).
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 28.11.22, 19:25:26
Странно, странно. :cl:  Тогда хз какая закономерность... :shu:
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 28.11.22, 19:28:24
Цитата: FR347 от 28.11.22, 17:55:31при изменении диаметра, не меняются размеры УЗ
Аааа, стоп, изменяете размер уже после установки УЗ? Или при расстановке у них одинаковый диаметр?
Название: Re: Обозначение ценра отверсий
Отправлено: FR347 от 28.11.22, 20:25:38
Я хотел как раз уточнить ))) Но вроде я написал при изменении размера...

При простановке все четко. Я и уточнил, что я верно понял, что при изменении не меняется УЗ.

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

А менять макрос не меняет...  Тогда если мало УЗ в чертеже, то выделить ненужное, удалить и заново.

Или просто удалить все УЗ и заново...
Название: Re: Обозначение ценра отверсий
Отправлено: dimak222 от 28.11.22, 20:26:57
Да да да, всё правильно=) Не так поняли друг друга=)