Добавить промежуточный формат в записи Макро

Автор Vitalij Lysanov, 24.02.20, 12:32:19

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

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

Vitalij Lysanov

Предложение.
Добавить промежуточный формат в записи Макро, как тут:
http://sapr2000.ru/sappc.html
https://tms.ystu.ru/doc/sappc_2000.pdf

Если на словах.

Сейчас два отрезка и радиус:
obj = iDocument2D.ksLineSeg(  -97.3, 19.5,      -26.3, 40.4, 1)
obj = iDocument2D.ksLineSeg(-17.9, 92.8,      -26.3, 40.4, 1)
obj = iDocument2D.ksArcByPoint(-35.2, 48.2, 10, -32.4, 38.6, -25.3, 46.6, 1, 1)

А нужно (как в ссылках выше):
Tk1=97.3, 19.5
Tk2=-26.3, 40.4
Tk3=-17.9, 92.8
R=10
Отрезки со скруглением ( Tk1, Tk2, Tk3, R)

Результат на графике тот же, но подход другой.
И в результате другого подхода, мы решаем все задачи (Бывает же такое) или (Ну это ж надо!)

Сейчас разберем подробней:

-  На чертеже (эскизе) имена точек и рядом таблица с координатами точек. Изменили данные в таблице и все перестроилось - так это же параметризация.

-  В базу записывается только текст Макро, который всегда можно отобразить. Вся информация для ЧПУ или построений чертежа, будет браться из базы.

-  Если записываем готовый результат, а не в процессе построения, даже простой пример отрезков со скруглением, будет работать. А так провели отрезки, поставили скругление, отрезки укоротились, а в макро остались длинные отрезки.

Что-то для всех задач получилось маловато... Точно, пропустил некоторые задачи.

Если почитать ссылки выше, то с автоматической параметризацией успешно справляются

В принципе некоторые вопросы можно решить самодеятельностью.     
Вот тоже - точки, радиусы, окружности:
https://drive.google.com/open?id=1Q-gWrhTonQycGShHxbrNPzZVNtQE9qqD

 




p3452


Кто, Вам, обоим мешает?
Создайте свой формат, записывайте и читайте его, КОМПАС-МАКРО имеет свой, формат.

Vitalij Lysanov

Если рассмотреть процесс формирования Макро, может и можно выбрать варианты.

Так чтобы кардинально записать Макро с именем переменных?
Tk1=97.3, 19.5
Tk2=-26.3, 40.4
Tk3=-17.9, 92.8
R=10
Отрезки со скруглением ( Tk1, Tk2, Tk3, R)
В примере:
https://drive.google.com/open?id=1Q-gWrhTonQycGShHxbrNPzZVNtQE9qqD
Данные размеров идут в самой программе.

Можно прочитать прорисовку детали, получить все данные для программы из прорисовки.
Затем возле точек ставим имена и рядом таблица с координатами точек.
Изменяя координаты, все перестраивается и получаем деталь.
И это все на автомате.

Будем не забывать про базы, где все хранится в компактном текстовом виде – только цифры и последовательность их соединения.

И далеко погружаться не нужно, для начала отрезки, окружности, дуги скругления – это 90 процентов чертежа.

__

G код это уже для ЧПУ.
Конструктору нужен контур с управляемыми размерами.
Дальше:
Tk1=97.3, 19.5
Tk2=-26.3, 40.4
Tk3=-17.9, 92.8
R=10
Отрезки со скруглением ( Tk1, Tk2, Tk3, R)
Мы не идем.

Если такой текст записывается в Макро на автомате, значения точек сразу идут в таблицу на чертеже (эскизе).


   

Vitalij Lysanov








Сейчас запись макроса по двум отрезкам и радиусу:
obj = iDocument2D.ksLineSeg(  -97.3, 19.5,      -26.3, 40.4, 1)
obj = iDocument2D.ksLineSeg(-17.9, 92.8,      -26.3, 40.4, 1)
obj = iDocument2D.ksArcByPoint(-35.2, 48.2, 10, -32.4, 38.6, -25.3, 46.6, 1, 1)</source>

А нужно:
 
Tk1=97.3, 19.5
Tk2=-26.3, 40.4
Tk3=-17.9, 92.8
R=10
Отрезки со скруглением ( Tk1, Tk2, Tk3, R)

Легче выполнить немного по-другому, но сама суть остается.
В первом случае, особенно если много отрезков и дуг, - трудно корректировать, чтобы не разрушить контур.
Во втором случае достаточно изменить значения переменных и все перестроится.
Эти два случая напоминают магнитное и электрическое поля в электромагнитной волне. Одно может, другое чувствует.
Преобразовать эти два формата не очень сложно.
 Допустим есть контур из ломаной. Есть координаты и радиусы к каждой координате.

 t1= complex(-200, 220),  
t2= complex( 200, 202),
t3= complex( 204,-200), 
t4= complex(-224,-200),
r1=68,  r2=86,  r3=100,  r4=144



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



Конечно для облегчения все постепенно заполняется буквами.



При чтении фрагмента никаких переменных нет, присваиваем имена по ходу выполнения программы.
 
Вывод программы:

>>> 
R 1 = 68.0       t 1 = (200+202j)
R 2 = 86.0       t 2 = (-200+220j)
R 3 = 100.0       t 3 = (-224-200j)
R 4 = 144.0       t 4 = (204-200j)
>>>

Это получили входные данные. 
Рисунок (четырехугольника с радиусами) может быть любой, тогда исходное построение отключаем и только читаем фрагмент. По формату вывод будет аналогичный.
Если будут углы 90 градусов, может не работать, защиту еще нужно ставить. А общие четырехугольники должно рисовать.
Получили параметры, которые можно изменить, и нарисует.
  

Теперь достаточно вызвать функцию с новыми параметрами.

ris( r1=86, t1=complex(-268,333),t2=complex(122,123))

Можно и циклом:
for pa in range(133,386,5):
    ris( r1=86, t1=complex(-268,333),t2=complex(pa,pa))


Функция выполняет роль макроса.
Значения функции повторяют размеры исходного фрагмента.
Изменяя размеры получаем другой чертеж

https://drive.google.com/open?id=1QTlnJ6L0Ca4Jf6DGtfjZI1oPfPjeTFrZ