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

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

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

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

ТрындецЪ

08.09.17, 10:24:17 #80 Последнее редактирование: 08.09.17, 10:41:32 от ТрындецЪ
Цитата: Вират Лакх от 08.09.17, 07:44:22
... Можно этот баг использовать как копирование текста одним нажатием из одного поля в другое :)
Предлагаю сделать все же СКМ очистку, а третью кнопку зарезервируем на меню.

У меня СКМ вставляет не весь текст, а часть его. Поэтому, от нее хочу отказаться вообще. На ПКМ у нас есть 1 клик, 2 клика и даже 3 клика, есть где разгуляться.
Цитировать
По поводу вставки шаблона. Вот как лучше, чтобы он сам сразу замещал весь текст или вставлялся в текущую позицию курсора?
Мне кажется, что лучше сразу замещать весь. Создал шаблон вида 'L = +-' или '+-*+-' и вставляй его поверх того, что там устаревшее/ненужное есть. А сейчас получается надо сначала удалить содержимое самому, а потом шаблон. Может вернем замещение?

Не нравится мне лично вызов шаблонов даблкликом ЛКМ, т.к. теряем возможность выделения, которую лучше иметь. Поэтому полное замещение считаю не нужным. Полное удаление в любом случае забиндим куда-то. +-1 нажатие погоды не сделает.
Upd: Сейчас ещё один вариант на ум пришел: по даблклику ЛКМ заменяем целиком а в контекстном меню (ПКМ) добавим пункт Вставить текст и можно будет выделять и через меню заменять часть текста.
ЦитироватьНа локальной детали, когда галочка создавать ОС выключена, ошибочно пишет, что не удалось создать объект спецификации. Я его и не просил создавать.

Косяк исправлю к следующей версии.
ЦитироватьБыло бы интересно, чтобы макрос понимал объекты спецификации.

Имеются в виду объекты спецификации сборки или отдельного документа спецификации, где они связаны с деталями?
ЦитироватьА еще интереснее - это более продвинутый путь ввода габаритов. Как я писал в ТЗ, или это специальные переменные в детали-заготовке, или указание ребер.
....
Или какие ваши идеи?

Я свой вариант раньше выдвигал, чтобы автоопределение типа детали было.
Например, при нажатии ПКМ в поле ввода габариты выпадет менюшка, где помимо Вырезать, Копировать, Вставить будет пункт Автогабарит. Нажимаем на него и программа пытается определить тип детали (вот над алгоритмом надо подумать).
Нужно сначала определиться с типами БЧ деталей.
1) Прямоугольная пластина (3 измерения: толщина в материале должна быть заложена, получаем длину и ширину)
2) Круглая пластина(2 измерения: толщина в материале должна быть заложена, получаем диаметр)
3) Сортовой прокат [трубы, уголки, швеллеры и т.п.](все параметры в материале, получаем только длину)
Вы ещё писали о двух диаметрах, это деталь типа шайбы что ли? Я не сталкивался с такими.
А вариант с чтением переменных неуниверсален. Сомневаюсь, что кто-то будет заморачиваться с созданием спец.переменных для примитивных деталей.
Ещё как вариант добавить пункт Снять размеры, это когда, как Вы писали, предлагается пользователю ткнуть в ребро или грань и получить их размеры. Этот вариант, наверное, проще в реализации, поэтому начать с него можно.

Но меня больше тревожит сейчас невозможность создавать объекты спецификации локальных деталей.

Вират Лакх

ЦитироватьУ меня СКМ вставляет не весь текст, а часть его.

Да, ту часть которую выделили.
ЦитироватьСейчас ещё один вариант на ум пришел: по даблклику ЛКМ заменяем целиком, а в контекстном меню (ПКМ) добавим пункт Вставить текст и можно будет выделять и через меню заменять часть текста.

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

Пока объекты спецификации сборки. Это всё происходит в рамках одного документа, поэтому проще должно быть. Посмотрим от этого пользу.
ЦитироватьНапример, при нажатии ПКМ в поле ввода габариты выпадет менюшка, где помимо Вырезать, Копировать, Вставить будет пункт Автогабарит.

Получается, назревает меню ПКМ, в котором будут операции с буфером, вставка шаблонов без очистки, автогабарит, снять размеры вручную (как у трубы указать ребро?). Если всплывающее меню хз как делать, можно и применить все ПКМ: одинарное, двойное и тройное.
ЦитироватьВы ещё писали о двух диаметрах, это деталь типа шайбы что ли? Я не сталкивался с такими.

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

Согласен. Так себе затея, конечно. Не рассматриваем.
ЦитироватьНо меня больше тревожит сейчас невозможность создавать объекты спецификации локальных деталей.

А меня и других пользователей Авторедактора не тревожит :)

KiDim

Таки про не работу Питона. Пошерстил форум. Нашел полезную инфу:

Цитата:
Другое дело отладка макросов - т.е запуск макросов не из под библиотеки КОМПАС-Макро.
Для этого в каталоге расширения питона PyWin32 -  \Lib\site-packages\pythonwin\ должны лежать модули
Kompas6API5.py
Kompas10API5.py
Kompas10API7.py
ksConstants.py
ksConstants3D.py
LDefin2D.py
LDefin3D.py
MiscellaneousHelpers.py
piksupport.py
+ в каталоге питона \Lib\site-packages\pythonwin\pywin модули pik.cfc и pik.cfg.

Переустановил Питон и модуль PyWin32. Перечисленных выше файлов там не оказалось. Нашел их на другом компе (почему их нет на моем - не знаю). Переписал файлы и перезагрузил комп (это обязательно). Все работает! Присоединяюсь к освоению модуля!

ТрындецЪ

Цитата: KiDim от 08.09.17, 13:31:22
Kompas6API5.py
Kompas10API5.py
Kompas10API7.py
ksConstants.py
ksConstants3D.py
LDefin2D.py
LDefin3D.py
MiscellaneousHelpers.py
piksupport.py


Эти модули устанавливает вместе с собой библиотека КОМПАС МАКРО, это от АСКОНа.
До 17 версии КОМПАСа макросы при записи ссылались на эти модули и работали через них.
В 17 версии макросы сделали более универсальными.

Вират Лакх

09.09.17, 16:19:59 #84 Последнее редактирование: 09.09.17, 17:36:42 от Вират Лакх
Цитата: Умка от 07.09.17, 07:46:17
Ошибка: При редактировании детали на месте в сборке убиваются ВСЕ объекты спецификации.
...
Пардонте-с, ошибка при редактировании детали на месте в сборке не повторилась.

Вы просто перепутали немного. Все объекты спецификации убиваются при редактировании БЧ из сборки, не заходя в редактирование на месте, т.к. макрос вычищает ОС там, где находится. В этом случае он находится в сборке. Видно, как макрос заходит в редактирование на месте и сразу выходит. Так может пусть не выходит сразу, а после ctrl+enter или Esc ?

Еще:
После применения макроса в редактировании на месте слетают галочки Наименование и Обозначение в свойствах измененного компонента. Ух, как я это не люблю! Зачем их Аскон вообще придумал?! Как они задолбали!

ТрындецЪ

Цитата: Вират Лакх от 09.09.17, 16:19:59
После применения макроса в редактировании на месте слетают галочки Наименование и Обозначение в свойствах измененного компонента. Ух, как я это не люблю! Зачем их Аскон вообще придумал?! Как они задолбали!

Макрос меняет свойства детали в сборке и в источнике, поэтому галка погоды не делает. Я не нашел, как программно ее ставить.

Вират Лакх

10.09.17, 12:36:23 #86 Последнее редактирование: 10.09.17, 12:47:56 от Вират Лакх
Делает она погоду. Потом, если надо будет поменять обозначение или наименование, бегай за этими галочками. Особенно, когда одна деталь входит несколько раз или в разных сборках, и обозначение или наименование меняются в самой детали. Так что пока приемлемый способ редактировать только открытую в окне деталь.

UPD
Так не надо её менять в сборке! Только в источнике. Это необходимо и достаточно. И не испортится галочка, и не надо искать, как её возвращать. Можно попробовать включить в макрос после редактирования источника перестройку модели, чтобы пользователю самому не нажимать F5.

ТрындецЪ

11.09.17, 16:27:24 #87 Последнее редактирование: 11.09.17, 16:58:22 от ТрындецЪ
Представляю очередную версию библиотеки оформления деталей БЧ!

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

Изменения:
В свойства компонентов сборки больше не вносятся изменения, только в источник.
Текстовый шаблон, вставленный по даблклику ЛКМ, заменяет имеющийся текст целиком.

Изменение горячих клавиш:
СКМ - очистка.


Вират Лакх

1) Окно появляется без фокуса на себе.
2) Надо бы ограничить возможности макроса в отношении стандартных изделий.
3) если мы, вызвав на лкмх2 шаблоны, ничего не вставили и вышли из шаблонов, то макрос все равно стирает содержимое поля.
4) Самое главное - не исправлено "Все объекты спецификации убиваются при редактировании БЧ из сборки, не заходя в редактирование на месте"
5) Если стоит галочка создавать объект спецификации, то при редактировании детали из сборки и редактировании на месте дублируется её объект спецификации.
6) Чтобы добраться до Измерить, нужно два раза нажать: ПКМ и выбор его в меню. Надо сократить одно нажатие, сделав кнопку рядом (перед) полем габарит.
7) Точность (кол-во знаков после запятой) ввода цифр от команды измерить, я так понимаю, регулируется в коде макроса.
8) Я бы пробелы не ставил до и после знака умножить.
9) Т.к. команда измерить вставляет готовый текст вида 55х66, то она должна перед вставкой очистить строку от старого. Или другой подход? Просто цифру/ы вставлять как сейчас сделано для длины, а остальное юзер допишет или повставляет столько измерений, сколько хочет? Я бы для длины сделал сразу запись L = , стерев перед этим содержимое строки. Если полностью стирать, то не одно выделение надо допустить... А может лучше для ПКМ оставить такое единичное выделение без очистки аля вставки шаблона без очистки, а на будущую кнопку (см. п.6) сделать вставку готовых текстов вида L = ... с очисткой. Над работой чудо-кнопки придется хорошенько подумать.
10) если я вместо грани выделил, например, эскиз в дереве построения, то он почему-то говорит, что "выделите только один объект".
11) В режиме выбора для команды Измерить нельзя отказаться от этого на Esc. Обязательно вынь да подай "грань или ребро"
12) Я бы написал "поверхность или ребро". "Цилиндрическая грань" как-то в голове не укладывается.
13) "Грань не является четырехугольником" лучше заменить на "прямоугольником".
Пока хватит. Хорошего по-маленьку :)

ТрындецЪ

Библиотека оформления деталей БЧ v0.6

Учтены по возможности почти все пожелания Вират Лакх'а из предыдущего сообщения, кроме:
Цитировать12) Я бы написал "поверхность или ребро". "Цилиндрическая грань" как-то в голове не укладывается.

При вызове КОМПАС'овской команды "Информация об объекте и указании цилиндрической грани в информационном окне выводится сообщение"Грань тип: цилиндрическая". Ничего ужасного в этой записи не вижу.
Цитировать13) "Грань не является четырехугольником" лучше заменить на "прямоугольником".

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


Отдельная кнопка "Измерить" заменяет в окне "Габарит" имеющийся текст целиком.
Отказ от измерений -> Esc (срабатывает не чётко, может потребоваться неоднократное нажатие)

Вират Лакх

1) Если в сборке запустить макрос и потом указать деталь, то уже не хочет так работать. Говорит "выделите деталь", а дальше ничего.
2) Ох уж эта галочка создания объекта спецификации... Без неё всё хорошо. С ней (см.рис.):
а) Если стоит галочка создавать объект спецификации, то при редактировании детали из сборки и/или редактировании на месте дублируется её объект спецификации - не исправлено. У меня, чтобы это проявилось, я сначала удаляю объекты спецификации и делаю редактирование, как говорится, с чистого листа. Тут, возможно, опять из-за разницы стилей СП - у меня пользовательская, а не которая по умолчанию.
б) у меня стоит сортировка деталей в СП в том числе и по наименованию. После создания объекта спецификации макросом сортировка нарушается: если деталь стояла последней, то потом уходит наверх.
в) изменяется номер позиции. Т.е. у нас на лицо удаление старого объекта спецификации и создание нового.
г) это удаление несет за собой множество проблем. Например, еще удаляется привязанный к основному объекту спецификации вспомогательный ОС. Или, вернее, несоздание его с новым объектом.
Короче, нельзя ли обойтись именно редактированием существующего объекта, а не удалением-созданием?
3) Измерить ни через правую кнопку, ни на новую кнопку не работает. Говорит "Теперь укажите грань или ребро", при этом окно исчезает и сразу появляется. Не может ли это опять связано с битностью? В IDLE (Python GUI) ничего не говорит.
12) Компас - не истина в высшей инстанции. Согласно интернету, грань - это "Плоскость, образующая часть ломаной поверхности тела, сторона геометрической фигуры." или "плоская поверхность предмета, составляющая угол с другой такой же поверхностью" и т.д. Если не хотите писать " "поверхность или ребро", то можно "грань, цилиндрическую поверхность или ребро". Ужасного, действительно, нет ничего, просто неграмотно.

ТрындецЪ

Цитата: Вират Лакх от 19.09.17, 05:09:11
1) Если в сборке запустить макрос и потом указать деталь, то уже не хочет так работать. Говорит "выделите деталь", а дальше ничего.

У меня нормально работает.

Цитировать2) Ох уж эта галочка создания объекта спецификации... Без неё всё хорошо. С ней (см.рис.):
...
Короче, нельзя ли обойтись именно редактированием существующего объекта, а не удалением-созданием?

Попробую через редактирование организовать.

Цитировать3) Измерить ни через правую кнопку, ни на новую кнопку не работает. Говорит "Теперь укажите грань или ребро", при этом окно исчезает и сразу появляется. Не может ли это опять связано с битностью? В IDLE (Python GUI) ничего не говорит.

Все признаки того, что программа считает клавишу ESC нажатой (ctypes.windll.user32.GetAsyncKeyState(0x1b) == True). С чем это связано, не знаю. Видимо, другой способ отмены искать надо. Возможно, отдельное окно с кнопкой "Отмена".

Вират Лакх

ЦитироватьУ меня нормально работает.

Еще у кого как работает?
ЦитироватьВсе признаки того, что программа считает клавишу ESC нажатой (ctypes.windll.user32.GetAsyncKeyState(0x1b) == True). С чем это связано, не знаю. Видимо, другой способ отмены искать надо. Возможно, отдельное окно с кнопкой "Отмена".

С кнопкой Esc печалька... А если не отдельное окно, а в том же самом окне? Кнопку с линейкой заменять на Стоп.

ТрындецЪ

Только сейчас заметил, что кнопки в коде одинаково назывались. Может от этого проблема.
Поправил и текст сообщений заодно.

Вират Лакх

Тексты поменялись, но измерения не заработали.

Умка

Компас V13 измерения не работают

ТрындецЪ

Давайте тогда отменим проверку нажатия ESC и оставим как было, пока не  найдётся рабочий метод прерывания.
Во вложении.

Вират Лакх

Офигенно! Аскон, наверное, никогда бы нам так не сделал.
3) Надо будет все-таки порешать с выходом из измерения. Может правда миниокном? И наглядно видно, что макрос работает, и кнопка стоп будет.
4) Мысли вслух по "мм". Мы мм вынесли в отдельную галочку. Тогда может при считывании габарита из свойства детали, если будет в конце мм, то мм не писать в поле габарита, а включить галку мм (если она была выключена). Я имею ввиду, что мм в строке габарита не должна маячить, т.к. её обрабатывает галочка. Непервостепенно, от нечего делать можно этим заняться.
5) Сделайте, пожалуйста, одну переменную округления измеренных габаритов. Чтобы пользователь не шарил по всему коду, а в одном месте поменял и всё. Это по п.7 ответа 88.
6) Через ПКМ вставляет текст вида L=69 или Ф30. Я предлагаю, чтобы ПКМ в отношении ребер вставляла только число, а поверхности вставлять так же. Это типа для самостоятельного формирования поля габарит. Это еще одна разница между кнопкой и ПКМ.
7) В компасах версии < 17 иконки балунных сообщений различаются на информационные синие и предупреждающие желтые. Надо бы расставить их по макросу в зависимости от характера сообщения.
8) Знак равно предлагаю по умолчанию разделять пробелами: не L=69, а L = 69
p.s. Кнопка с линейкой - это так называемая текстовая кнопка? Как их делают?

ТрындецЪ

Цитата: Вират Лакх от 19.09.17, 12:22:53
4) Мысли вслух по "мм". Мы мм вынесли в отдельную галочку. Тогда может при считывании габарита из свойства детали, если будет в конце мм, то мм не писать в поле габарита, а включить галку мм (если она была выключена). Я имею ввиду, что мм в строке габарита не должна маячить, т.к. её обрабатывает галочка. Непервостепенно, от нечего делать можно этим заняться.

Я изначально так и делал, но Вы же сами забраковали. Галка включалась/отключалась в зависимости от наличия/отсутствия "мм" в конце.
Если Вы хотите, чтобы галка только включалась, то начнется путаница:
Например, галка включена, и я считываю данные у которых нет "мм" в конце. Если галка не отключается сама, то я не пойму было ли "мм" в данных или нет. И если "мм" мне нужно, то мне придётся вносить изменения, чтобы точно знать что "мм" попадёт в свойства. Короче, вернул автовключение/отключение "мм".
Цитировать5) Сделайте, пожалуйста, одну переменную округления измеренных габаритов. Чтобы пользователь не шарил по всему коду, а в одном месте поменял и всё. Это по п.7 ответа 88.

Сделал. Ввёл две константы в начале кода
Цитировать6) Через ПКМ вставляет текст вида L=69 или Ф30. Я предлагаю, чтобы ПКМ в отношении ребер вставляла только число, а поверхности вставлять так же. Это типа для самостоятельного формирования поля габарит. Это еще одна разница между кнопкой и ПКМ.
8) Знак равно предлагаю по умолчанию разделять пробелами: не L=69, а L = 69

Реализовано.
Цитироватьp.s. Кнопка с линейкой - это так называемая текстовая кнопка? Как их делают?

Почему это кнопка текстовая? Просто кнопка. Линейка - это gif картинка преобразованная в Base64 и установленная на кнопку. Вот сайт для онлайн-преобразования

Вират Лакх

19.09.17, 18:14:30 #99 Последнее редактирование: 19.09.17, 18:53:14 от Вират Лакх
а) "запятой  для полученных измерений детали вставляемых в окно ввода "Габарит"" - лишний пробел и запятую после слова деталей.
б) таким же образом еще хотелось бы три настройки сделать (значения переменной типа булеан: true/false):
I) создавать объект спецификации,
II) Использование названия детали по умолчанию,
III) добавлять мм в габарит по умолчанию.
Тогда мне или кому-то еще не нужно будет переписывать программу под себя.
в) И сейчас бракую такое поведение галочки "мм". Знаете, что мне хочется от этих "мм"? Забыть о них! Есть у пользователя два подхода: или не писать везде мм, или писать везде. Вот этот выбор пользователь и отразит в настройке III. Давайте будем по умолчанию писать мм. Как вы сейчас вернули - это постоянное включение галки для новых деталей БЧ тем, кому нужно мм везде. Как было: не нужно постоянно включать галочку для новых деталей. Последняя моя мысль была - оставить как есть работу галки, но скрыть мм, чтобы они не маячили. В итоге формулировка такая: галка носит типа информационный характер с возможностью изменения. Выставляется по умолчанию в настройках / константах макроса. Она у меня, например, будет всегда включена. В поле габарит "мм" никогда не пишутся, т.е. удаляются, если есть. А потом включенная галка добавляет обратно. Выключенная - не добавляет. По-моему зашибись.
г) Предлагаю перекомпоновку окна как на рисунке ниже. "мм" будут непосредственно стоять после габарита, типа дописываются к нему. Кнопки все в одном месте, т.е. блок управления. Я бы даже разделил кнопку Вставить [enter] на две кнопки: "вставить" и "вставить и закрыть". Получаются три квадратные кнопки. Я бы, наверное, хотел пользоваться обеими кнопками "вставить".
UPD.
Из тех трех кнопок, которые будут рядом стоять, первая должна идти "Обновить", потом "вставить", потом "вставить и закрыть".
UPD2
А-а-а, я затупил! "1) Если в сборке запустить макрос и потом указать деталь, то уже не хочет так работать. Говорит "выделите деталь", а дальше ничего." - работает она. Просто я опять забыл про этот F5. Вот её надо сделать с подписью там и так, как я показал, может она лучше будет восприниматься.
UPD3
Давайте выберем один какой-нибудь шрифт. А то Наименование и Обозначение - гостовский, остальные тексты - обычный...