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

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

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

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

Вират Лакх

#20
Как хромает тут: http://forum.ascon.ru/index.php/topic,30133.new.html#new
Теперь 16.1.12х64. Двойной клик - ничего не происходит.
UPD:
У меня так ругается красным цветом в питонвине:
Traceback (most recent call last):
  File "C:\Python26\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript
    exec codeObject in __main__.__dict__
  File "D:\2.pyw", line 11, in <module>
    from tkinter import *
ImportError: No module named tkinter
Я его 2.pyw обозвал на случай глюков.
Этот пакет Tkinter должен быть у меня установлен, чтобы окно ввода данных работало?

ТрындецЪ

Цитата: Вират Лакх от 29.08.17, 10:15:51

У меня так ругается красным цветом в питонвине:
Traceback (most recent call last):
  File "C:\Python26\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript
    exec codeObject in __main__.__dict__
  File "D:\2.pyw", line 11, in <module>
    from tkinter import *
ImportError: No module named tkinter
Я его 2.pyw обозвал на случай глюков.
Этот пакет Tkinter должен быть у меня установлен, чтобы окно ввода данных работало?
Tkinter - это стандартная библиотека для вывода графического окна.
Судя по ошибке, она не установлена. Советую снести питон и поставить заново благо он бесплатный.
+ Благодарностей: 1

Вират Лакх

#22
По поводу переменных в наименовании тоже заметил такой косяк. Взято из группы в vk.com
ЦитироватьПрошу помощи. Помогите написать макрос, который бы в сборке делал следующее:
1)открывал деталь для редактирования на месте
2) имитация нажатия F5
3) Выйти из редактирования с сохранением изменений
Эти действия необходимо проделать со всеми деталями сборки. Для чего это нужно: Есть сборка в которой есть переменные. В сборке вставлены детали с переменными взятыми из этой сборки с помощью "Вставить ссылку". Эти переменные выведены в свойства детали. Теперь можно получать отчет о длине детали например. Но проблема в том что при изменении переменных в сборке данные в свойствах детали не обновляются. Чтобы отчет был актуальным необходимо открыть каждую деталь для редактирования после чего закрыть с сохранением изменений. Буду очень признателен. Готов оплатить труды.
Снёс и поставил python-2.6.6.amd64 заново. Заработало. Спасибо.
UPD:
Цитировать
2) У наименования и материала поставить рядом галочки. - Это можно.
3) Зачем эта галочка Создавать объект спецификации? - От объекта спецификации хуже никому не будет. Если кто-то не использует библиотеку "Авторедактор", то ему эта функция будет полезна. И не всегда приходится удалять объекты спецификации в сборке.
4) А ссылки или переменные пробовали вставлять? - Не пробовал, но у меня такое подозрение, что свойство может принять либо ссылку, либо текст. Как ссылка на переменную другого документа, к которой нельзя что-то добавить. Можно программно попробовать воспроизвести "костыль" с линией выноской.
2) ждем-с :)
3) объект спецификации создается, не все колонки прописывая. Доп.колонки пустые. Хотя бы массу и обозначение материала надо.
4) если делать костыль с выноской, то полюбас придется делать дополнительный костыльный макрос по проблеме обновления ссылок. Или наехать на аскон, чтобы недоделку доделали. Эти ссылки будут постоянно обманывать...
5) желательно иметь возможность запустить макрос в режиме редактирования на месте. пока облом с этим. А то и еще круче - просто выделив компонент в сборке. Библа заходит внутрь, делаем свои дела и выходим.
6) можно "х" русскую и английскую менять на специальный символ умножить.
7) окошку бы следовало закрываться сразу после внесения изменения в модель. можно, например, сделать энтер - внести и не закрываться, а ctrl+enter - внести и закрыться.
8) можно для "мм" еще отдельную галочку сделать. Когда она включена, то в конец строки добавляется " мм".
9) сейчас галочка не запоминается. а когда их станет больше ей и будущим следовало бы запоминать свое положение.
10) Не люблю я этот наклонный шрифт, которым у вас сделано в окне Обозначение и наименование. Шрифт в полях ввода тоже прямой что ли сделать, а то не сочетается с прямым курсором. Или курсор наклонить.
ну и т.д. Большое поле для критикантства.
Но уже веет от такого окошка удобством. Можно уже сейчас измерить деталь и, не закрывая информационное окно, списать в окно библиотеки цифры даже путем копи-пасте. Удобно тем, что не нужно мозг использовать как буфер обмена. Так можно дорасти до вполне приличной библиотеки.
+ Благодарностей: 1

ТрындецЪ

#23
Первую версию выложил, как раз, чтобы критику и предложения послушать. Одной парой глаз за всеми нюансами не углядишь. По мере возможности доработаю.

Upd: Мелкие экспресс-обновления.
1) Исправлен баг с индексами у которых более одного знака после запятой;
2) Добавлена замена "х" на соответствующий спецсимвол;
3) Добавлено заполнение доп.колонок объекта спецификации Масса и Материал
4) Ctrl + Enter вносит данные в модель и закрывает программу
5) Убран наклон шрифта

pr0100

#24
Цитата: ТрындецЪ от 29.08.17, 10:10:38
Сергей (pr0100), у тебя же 17 компас и питон 3. Работает эта программа?


Не верный синтаксис. Не работает. Ошибка на запуске.



Там перевод в юникод u'Теxt', если везде убрать "u", то запускается.
+ Благодарностей: 1

Вират Лакх

#25
Мысль вслух. Вообще, эта библиотека (ну библиотекой её не назовешь) посвящена наименованию детали БЧ. Тому функционалу, которого нет в компасе. В текущей версии скрипта есть обозначение. Это повторение функционала компаса. На суд общественности - может выкинуть? Вроде бы и пригодится, но тогда можно и присвоение материала сделать в тут, и раздел спецификации, и еще какие-нибудь свойства модели...

Можно ли задать окну свойство всегда поверх всех окон?

Как-то повелось, что нажатие на среднюю кнопку мыши на полях ввода - это очистить содержимое. Вместо того, чтобы даблкликом выделять и нажимать del, мы просто на поле жмем СКМ. Получается быстрее. Это чтобы имя детали или содержимое последней строки стирать быстро.

Так как имя не всегда нужно, то второе считывание будет происходить так: скрипт считает первое стоящее до @/ - это будет материалом. В окне программы в имя забьется материал. Его, получается, надо быстро стереть.
Тут напрашивается настройка - та самая галочка участия имени детали. Когда она будет постоянно выключена, то второе считывание будет верным.

Лучше зеленую кнопку сделать контрол+энтером. И вообще от простого Энтера отказаться?

Можно ли для последней строки сделать на даблклик вызов текстовых шаблонов?

Если у меня масса 1,411, то программа в доп. колонку записывает 1,41. Т.е. по-своему округляет. Но ладно для колонки примечание, а в доп.колонку надо вносить точное значение.

По присвоению материала. Да, работает, но для стиля по умолчанию. А я у себя сделал не Пользовательская 3, а материал 3. Странно, что аскон по умолчанию сделали не то.

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

ТрындецЪ

#26
Тестируем 0.3 версию библиотеки оформления деталей БЧ!

Чему мы научились:
1) Работать с выделенной деталью сборки (с локальными пока не работает);
2) Находиться поверх всех окон;
3) Нажатие на среднюю кнопку мыши на полях ввода  очищает содержимое;
4) Появились долгожданные галочки у названия и материала, исключающие их;
5) Запуск внесения изменений Ctrl+Enter;
6) Вместо информационных окон всплывающие сообщения;
7) Масса в доп.колонке спецификации без округления;
8) Галочка добавляющая в конец наименования надпись " мм"

До чего мы ещё не доросли:
1) Даблкликом в окнах ввода вызывать текстовые шаблоны;
2) Сохранять настройки галок;
3) Делать непонятную вещь описанную Вират Лакх'ом, как:
ЦитироватьПо присвоению материала. Да, работает, но для стиля по умолчанию. А я у себя сделал не Пользовательская 3, а материал 3. Странно, что аскон по умолчанию сделали не то.

Если кто-то натолкнет на решение задачи вставки текстовых шаблонов, буду признателен.
+ Благодарностей: 2

Вират Лакх

#27
Хм. Не запускается. v0.2 работает, v0.3 - нет.
UPD:
Непонятная вещь поясняется картинкой и "исправляется" с 10 на 9 в строке iSpc.ksSetSpcObjectColumnText(9, 3, 0, material) # Доп.колонка Материал.

ТрындецЪ

Цитата: Вират Лакх от 31.08.17, 16:36:59
Хм. Не запускается. v0.2 работает, v0.3 - нет.
Перезалил. Проблема была в наличии print'ов в коде.

Вират Лакх

1) Работать с выделенной деталью сборки (с локальными пока не работает) - закрывает открытую в окне деталь.
5) Запуск внесения изменений Ctrl+Enter - не закрывает за собой своё окошко.
*) в доп.колонку Материал затолкал вместе с собакойдробью Лист$d5,0 ГОСТ 19903-74;Ст3сп ГОСТ 14637-89$@/
+ Благодарностей: 1

ТрындецЪ

Цитата: Вират Лакх от 31.08.17, 17:35:46
1) Работать с выделенной деталью сборки (с локальными пока не работает) - закрывает открытую в окне деталь.
5) Запуск внесения изменений Ctrl+Enter - не закрывает за собой своё окошко.
*) в доп.колонку Материал затолкал вместе с собакойдробью Лист$d5,0 ГОСТ 19903-74;Ст3сп ГОСТ 14637-89$@/
1) Не  учел, того что деталь может быть уже открыта. Доработаем в следующей версии.
2) Вроде, работало, перепроверю.
3) Можете решить самостоятельно срезом, добавив в строку, где вставляется материал в доп.колонку, после переменной material[:-2]

Вират Лакх

2) Вы внесение и закрытие сделали почему-то на альт+энтер. По крайней мере в горячих клавишах.
3) Да лично мне особо не надо, я спецификацию делаю авторедактором. Для других пользователей в след. версии подправьте, плиз.

Как сделать, чтобы галочка была по умолчанию выключена?

На меня тут на ночь глядя снизошло озарение.
Чтобы части наименования почти всегда вставали на свои места, надо заполнять эти три части не так, как сейчас.
Когда наименование детали состоит без имени из материала и размеров, то при повторном вызове БЧ в первую строку Имя вписывается материал, а строка с размерами остается пустой.
Давайте так: заполнять будем с конца. Сначала вписываются размеры. Если "старое" имя не содержит собакидроби или содержит одну @/, то впишутся размеры (берем или всю строку, или после собаки соответственно), обновится материал, а имя останется пустое. Считаем, что имя+размеры без материала никто не пишет. Если собак две и более, то текст до первой @/ поместить в имя. Только тут косяк может быть в том, если материал будет содержать собаку, а имя не предусмотрено. Но это редкое явление. Галочку вырубил и всё.

Галочку "мм" надо поумнее. Если в конце строки уже есть мм, то не добавляться. Сейчас она тупо наращивается одна за другой.

Еще по очистке на СКМ. В библиотеке сварных соединений сделано, что скм МЕЖДУ полями в пространстве окна в диалоге очищает все поля. И тут можно так же. Если все три поля переписывать заново надо, то будет удобно.

Ладно, хватит на сегодня.
Библиотека стремительно развивается. Скоро нашей всеобщей проблеме записи деталей БЧ придет трындец :)

pr0100

#32
Цитата: ТрындецЪ от 31.08.17, 16:23:48
Тестируем 0.3 версию библиотеки оформления деталей БЧ!


До чего мы ещё не доросли:
1) Даблкликом в окнах ввода вызывать текстовые шаблоны;


Если кто-то натолкнет на решение задачи вставки текстовых шаблонов, буду признателен.


У меня такое предложение завести сторонний файл, который будет лежать рядом с макросом. И который будет сам обновляться в окне. В прикрепе пример списка. Я правда не знаю как вызвать событие при нажатии из цикла.
Ну и так же соответственно с сохранением галок, какой то файл. 
+ Благодарностей: 1

ТрындецЪ

#33
Цитата: Вират Лакх от 31.08.17, 19:31:04
2) Вы внесение и закрытие сделали почему-то на альт+энтер. По крайней мере в горячих клавишах.
Да, точно я и забыл. Ctrl+Enter просто вносит изменения, Alt+Enter вносит изменения и закрывает программу. Если нужно оформить несколько БЧ деталей, то первый вариант предпочтительней. Ещё можно с одной детали считывать инфу, в другую заносить(без материала).
Кому не нравится, поправите под себя, там функции поменять у событий.
root.bind("<Control-Return>",lambda event: Start())
root.bind("<Alt-Return>",lambda event: Start2())
ЦитироватьКак сделать, чтобы галочка была по умолчанию выключена?
Вместо:
check.select()
написать:
check.deselect()
Цитата: pr0100 от 31.08.17, 20:38:24
У меня такое предложение завести сторонний файл, который будет лежать рядом с макросом. И который будет сам обновляться в окне.
Ну и так же соответственно с сохранением галок, какой то файл. 
Не хотелось бы изобретать велосипед. Удобнее, на мой взгляд, будет с компасовскими текстовыми шаблоны работать. А для конфига без стороннего файла не обойтись. Ввести функцию, которая собирает состояния галок перед закрытием и устанавливает при открытии. Хотя, как по мне, из-за четырех галок конфиг вводить излишне.
+ Благодарностей: 1

Вират Лакх

#34
Цитата: ТрындецЪ от 31.08.17, 23:53:08
Да, точно я и забыл. Ctrl+Enter просто вносит изменения, Alt+Enter вносит изменения и закрывает программу. Если нужно оформить несколько БЧ деталей, то первый вариант предпочтительней. Ещё можно с одной детали считывать инфу, в другую заносить(без материала).
Ну это что-то уж слишком на мой взгляд. Чем не устраивало Enter - ввод без закрытия, Ctrl+enter - ввод с закрытием? То же самое, только в одном случае не надо нажимать комбинацию.
Чем хорош этот питон, каждый сам легко поменяет как ему надо. Я у себя так кнопки сделал. И галки на имя и ОС вырубил.

С велосипедом согласен.
UPD:
ЦитироватьА для конфига без стороннего файла не обойтись.
В реестр можно :) В принципе можно и не заниматься сохранением галок. Их, действительно, мало и, как правило, они в каком-то одном состоянии будут большую часть времени. В коде выставил deselect где надо и усё...

Еще предложение. Если постулат о том, что деталь БЧ не прописывается в виде имя+размеры (без материала), принимается общественностью, то можно сделать, чтобы галочка материал за собой выключала (когда её убирают) галку имя.
Вопрос. Галочку имя сделал выключенной по умолчанию. Но при запуске проги поле для ввода имени активно. Если галку включить-выключить, то поле становится как надо - неактивным. Может чего подшаманить, чтобы сразу поле было неактивным?

upd:
А может звездочку * тоже будем на знак умножить заменять? Чтобы на цифровом блоке клавиатуры в одном месте набирать.
upd2:
еще фишку надо, прям надо! чтобы можно было вызвать это окно из спецификации / объектов спецификации сборки! Чтобы можно было прям из спецификации присваивать обозначения и наименования для деталей бч и обычных. А то эти кнопочки компасные по синхронизации дебильно работают, никакой возможности работать с объектами-источниками из спецификации. У меня стоит сортировка сначала по обозначению, потом материалу (материал в доп колонке работает в отличие от настройки по умолчанию), потом по наименованию. Так что мне легко будет работать по присвоению обозначения и наименования прямо в спецификации. А не тыкаться по каждой детали, прописывая это "как положено".
upd3
А если научимся вызывать текстовые шаблоны, то может и материалы тоже сможем, чтобы в макросе можно было менять, а не только считывать. Тогда возможности в спецификации расширятся. И вообще, это будет хорошая альтернатива компасным свойствам модели.

Еще. Если в сборке деталь редактируется на месте, то макрос должен понимать это, что мы уже в детали, и не просить указать её в дереве сборки.

ТрындецЪ

Цитата: Вират Лакх от 01.09.17, 04:55:01
Чем не устраивало Enter - ввод без закрытия, Ctrl+enter - ввод с закрытием? То же самое, только в одном случае не надо нажимать комбинацию.
Видимо, я не правильно понял Ваше предыдущее пожелание:
Цитата: Вират Лакх от 30.08.17, 05:47:58
Лучше зеленую кнопку сделать контрол+энтером. И вообще от простого Энтера отказаться?
Ну так я и отказался от Enter и сделал зелёную кнопку Ctrl + Enter. :)
Цитировать
Вопрос. Галочку имя сделал выключенной по умолчанию. Но при запуске проги поле для ввода имени активно. Если галку включить-выключить, то поле становится как надо - неактивным. Может чего подшаманить, чтобы сразу поле было неактивным?
Nazvanie["state"] = 'disabled' #делает виджет неактивным
Nazvanie["state"] = 'normal' #снова делает его активным



Вират Лакх

Да, зеленым сделать ctrl+enter. И чтобы эта зеленая кнопка закрывала. И простой enter на тот момент вроде как оказался не у дел. Но с вашей идеей обработать несколько деталей, не закрывая окно, ему будет применение: вносить данные в модель, не закрывая окно. Я сейчас так сделал у себя и вроде удобно. Просто в компасе ctrl+enter всегда завершает команду.

Нашел Nazvanie["state"], а что сделать, чтобы при запуске виджет был неактивным, не догоняю. Галку отключил, а поле ввода - нет.

ТрындецЪ

Цитата: Вират Лакх от 01.09.17, 11:37:29
Нашел Nazvanie["state"], а что сделать, чтобы при запуске виджет был неактивным, не догоняю. Галку отключил, а поле ввода - нет.
См. скрин.
+ Благодарностей: 1

Вират Лакх

Еще на тему редактирования детали из сборки.
Выделили деталь, запустили макрос. Чтобы записать данные, измеряем деталь, т.е. выделение её снимается. Когда дело доходит до ввода значений в модель, программа говорит "Выделите деталь". Предлагаю ей запоминать, с какой деталью она работает.

Я же раньше не писал про контекстное меню в окне? Просто хотя бы копировать, вставить, вырезать.
А у вас не возникал вопрос ко мне "А харя не треснет?" :)

ТрындецЪ

Наконец-то созрел очередной многострадальный релиз программы для оформления деталей БЧ.
Встречаем версию 0.4!

Особых новшеств нет.
Основной упор был сделан на унификацию работы: с файлом-деталью, с деталью сборки (локальной, внешней, находящейся в режиме редактирования "на месте", выделенной пользователем).
1) Добавлено "запоминание" программой последней детали, с которой она работала.
2) Даблклик  ЛКМ в поле ввода вызывает окно выбора компасовских текстовых шаблонов. Вставляемый шаблон заменяет имеющийся текст целиком( т.к. я не нашёл пока рабочего способа считывать текущую позицию курсора)
3) Клик правой кнопкой мыши очищает окно ввода (от нажатия колеса пришлось отказаться, т.к. это событие вызывает баг, вставляющий в окно  часть текста из предыдущей вставки).
4) "Умная" опция  "мм": если введенный текст заканчивается на мм, то не дублирует "мм" и снимает галку с себя.
Горячие клавиши:
Enter - вставка данных; Ctrl + Enter - вставка данных и выход; Esc - выход; F5 - считать данные.

Не реализовано:
1) Создание объекта спецификации локальной детали(не знаю, как получить у неё интерфейс iDocument3D, через который создаю объекты спецификации iDocument3D.GetSpecification() )
2) Работа со свойствами из спецификации.
3) Контекстное меню (вырезать, копировать, вставить). По причине того, что не смог, как уже было сказано, получать текущую позицию курсора, да и возиться с этим было некогда. В коде есть зачатки этой функции с комментариями, на случай если кто-то захочет развить эту тему самостоятельно.


P.S.: Чем длиннее становится код, тем тоскливее его редактировать :%:
+ Благодарностей: 1