IvIaCTeP

Редактирование поста SolidCam под Heidenhain

Ребята, всем привет.

С прошедшим праздником Вас товарищи!!!

Благодаря видео Operator CAD/CAM, разобрался, как редактировать пост под g code.

Эдуард, низкий поклон Вам!!!

Теперь стала потребность отредактировать пост под Heidenhain ITNC 530.

Помогите пожалуйста разобраться товарищи.

За основу взял вот этот пост iTNC530_4X.gpp

Суть такая, запускаю УП, станок перед тем, как выйти в рабочую координату, не поднимается в G91 Z0

Как в конце сделать 

G00 Z25. 
M05 
G00 G28 G91 Z0. 
G00 G28 G91 Y0.
G90 
M30

По мере изменения поста, то в чем разобрался, буду отписываться.

Заранее спасибо!

Скрытый текст

0 BEGIN PGM F_CONTOUR16 MM
1 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
2 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
3 ; TEIL-NAME    : ДЕТАЛЬ1-4 - Где эту строчку отредактировать? Хочу за место TEIL-NAME сделать NAME OF DETAIL
4 ; PROGRAMM-NR. : 1000 - Тут тоже сократить, просто PROGRAMM
5 ; DATUM - ZEIT : 06-NOV-2017 - 12:35:48
6 ; VERWENDETE WERKZEUGE: Это ФИО оператора?
7 ; - T2 -  D10.000 - Почему два раза дублируется?
8 * WERKZEUGE/JOBS:
9 CYCL DEF 247 BEZUGSPUNKT SETZEN ~
10 Q339=+1    ;BEZUGSPUNKT-NUMMER
11 * - T2 -  D10.000 - Почему два раза дублируется?
12 TOOL CALL 2  S2200
13 *   - F-CONTOUR16 -
14 L X-14.300 Y+0.000 FMAX M3
15 L Z+25.000 R0 FMAX
16 L Z+2.000 FMAX
17 L Z-0.300 F500
338 CALL LBL 3  - Почему он подпрограммы вызывает?
339 L X-46.300 Y+0.000 Z+25.000 FMAX
340 L X-14.300 FMAX
341 L Z-17.500 FMAX
342 L Z-19.800 F500
343 CALL LBL 3
344 L X-46.300 Y+0.000 Z+25.000 FMAX
345 L X-14.300 FMAX
346 L Z-17.800 FMAX
347 L Z-20.000 F500
348 CALL LBL 3
349 L X-46.300 Y+0.000 Z+25.000 FMAX
350 CALL LBL 251 ;RESET TURN
351 M30
352 ;
353 LBL 250 ;RESET
354 L Z-10.000 R0 FMAX M91
355 PLANE RESET STAY
356 CYCL DEF 7.0 NULLPUNKT
357 CYCL DEF 7.1 X+0
358 CYCL DEF 7.2 Y+0
359 CYCL DEF 7.3 Z+0
360 LBL 0
361 ;
362 LBL 251 ;RESET TURN
363 L Z-10.000 R0 FMAX M91
364 L X+330.000 Y+0.000 R0 FMAX M91
365 PLANE RESET TURN F9999
366 CYCL DEF 7.0 NULLPUNKT
367 CYCL DEF 7.1 X+0
368 CYCL DEF 7.2 Y+0
369 CYCL DEF 7.3 Z+0
370 LBL 0
371 ;
372 * KONTUREN/BOHRPOSITIONEN:
373 *   - F-CONTOUR16
374 LBL 3 
375 L X-14.300 Y+1.000 F500
376 L X-14.559 Y+0.966
377 L X-14.800 Y+0.866
378 L X-15.007 Y+0.707
379 L X-15.166 Y+0.500
380 L X-15.266 Y+0.259
381 L X-15.300 Y+0.000
382 L Y-11.000
383 L X-15.336 Y-11.603
384 L X-15.445 Y-12.197
385 L X-15.625 Y-12.773
386 L X-15.873 Y-13.324
387 L X-16.185 Y-13.840
388 L X-16.557 Y-14.316
389 L X-16.984 Y-14.743
390 L X-17.460 Y-15.115
391 L X-17.976 Y-15.427
392 L X-18.527 Y-15.675
393 L X-19.103 Y-15.855
394 L X-19.697 Y-15.964
395 L X-20.300 Y-16.000
396 L X-40.300
397 L X-40.903 Y-15.964
398 L X-41.497 Y-15.855
399 L X-42.073 Y-15.675
400 L X-42.624 Y-15.427
401 L X-43.140 Y-15.115
402 L X-43.616 Y-14.743
403 L X-44.043 Y-14.316
404 L X-44.415 Y-13.840
405 L X-44.727 Y-13.324
406 L X-44.975 Y-12.773
407 L X-45.155 Y-12.197
408 L X-45.264 Y-11.603
409 L X-45.300 Y-11.000
410 L Y+0.000
411 L X-45.334 Y+0.259
412 L X-45.434 Y+0.500
413 L X-45.593 Y+0.707
414 L X-45.800 Y+0.866
415 L X-46.041 Y+0.966
416 L X-46.300 Y+1.000
417 L Y+0.000
418 LBL 0
419 END PGM F_CONTOUR16 MM

 

Изменено пользователем IvIaCTeP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


Вот что получилось. Правильно написал шапку?

Скрытый текст

0 BEGIN PGM  MM
1 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
2 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
3 ; - T5 -  D16.000 - Как убрать эту строку? Где она находится в посте? Помогите люди добрые!
4 ; - T2 -  D10.000 - Как убрать эту строку? Где она находится в посте? Помогите люди добрые!
5 M129
6 L Z 0 R0 FMAX M91
7 CYCL DEF 7.0 DATUM SHIFT
8 CYCL DEF 7.1 X+0
9 CYCL DEF 7.2 Y+0
10 CYCL DEF 7.3 Z+0
11 CYCL DEF 247 COORRDINATE SYSTEM
12 Q339=+1    ;COORRDINATE SYSTEM
13 CPLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN FMAX - Или вот так нужно  SPX+0 SPY+0 SPZ?
14 ; NAME OF DETAIL: ДЕТАЛЬ1-4
15 ; 06-NOV-2017 - 15:53:37
16 ; USED TOOLS:
17 * - T5 -  D16.000 - Где она находится в посте эта строка? Помогите люди добрые!
18 TOOL CALL 5  S1758
19 L X-19.801 Y+9.030 FMAX M3
20 L Z+25.000 R0 FMAX

21 Как после Z+25.000 вписать М08? Не могу найти в посте эту строку...

 

Изменено пользователем IvIaCTeP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему после HSS обработки, конец программы такой.

Скрытый текст

2340 CYCL DEF 32.0 TOLERANZ
2341 CYCL DEF 32.1
2342 L M09
2343 L M05
2344 L Z-0 R0 FMAX M91
2345 L Y-0 R0 FMAX M91
2346 M30 - Это я сам уже добавил. Все что выше, и ниже, надо эти строчки?

2347 LBL 250 ;RESET
2348 L Z-10.000 R0 FMAX M91
2349 PLANE RESET STAY
2350 CYCL DEF 7.0 NULLPUNKT
2351 CYCL DEF 7.1 X+0
2352 CYCL DEF 7.2 Y+0
2353 CYCL DEF 7.3 Z+0
2354 LBL 0
2355 ;
2356 LBL 251 ;RESET TURN
2357 L Z-10.000 R0 FMAX M91
2358 L X+330.000 Y+0.000 R0 FMAX M91
2359 PLANE RESET TURN F9999
2360 CYCL DEF 7.0 NULLPUNKT
2361 CYCL DEF 7.1 X+0
2362 CYCL DEF 7.2 Y+0
2363 CYCL DEF 7.3 Z+0
2364 LBL 0
2365 ;
2366 END PGM HSS_PARS_FACES55 MM

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
43 минуты назад, IvIaCTeP сказал:

Вот что получилось. Правильно написал шапку?

  Скрыть содержимое

3 ; - T5 -  D16.000 - Как убрать эту строку? Где она находится в посте? Помогите люди добрые!
4 ; - T2 -  D10.000 - Как убрать эту строку? Где она находится в посте? Помогите люди добрые

 

 

@change_tool

   if submachine_ID eq 1 ;5x   
      if !first_tool
         {nb,'CALL LBL 250 ;RESET'}
      endif
   endif

   {nb,'* '}
  ; call @udr_msg_tool
   
   if tool_id_number ne 0
      {nb,'TOOL CALL 'tool_id_number' 'ud_plane_letter}
   else
      {nb,'TOOL CALL 'tool_number' 'ud_plane_letter} 
   endif

   call @start_tool

   if ud_TOOL_DEF eq true and next_tool_number ne tool_number
      {nb,'TOOL DEF 'next_tool_number}
   endif

   comp = 'R0'
   ud_comp_used = true
   ud_save_part_home_number = 0
 
   ud_change_tool_flag = true
   ud_change_tool_flag2 = true
    
endp
но лучше не убирать, если случайно прихватите при постпроцессировании лишний переход с другим инструментом, то будет видно

43 минуты назад, IvIaCTeP сказал:

Вот что получилось. Правильно написал шапку?

  Скрыть содержимое

16 ; USED TOOLS:
17 * - T5 -  D16.000 - Где она находится в посте эта строка? Помогите люди добрые!
18 TOOL CALL 5  S1758

 

;-------------------

@udr_msg_tool

   {'- T'tool_number' '}
   if tool_message ne ''
      {'- 'upper(tool_message)}
   else
      {'- 'upper(tool_user_type), ' D'(tool_offset*2)} ;' AUSP-L='tool_length}
      if corner_radius ne 0
         {' R'corner_radius}
      endif
   endif
   
   if tool_id_number ne 0
      {' ID:'tool_id_number}
   endif

   if msg_mill_tool1 ne '' and lower(msg_mill_tool1) ne lower(tool_message)
      {nb,'; 'msg_mill_tool1}
   endif
   if msg_mill_tool2 ne ''
      {nb,'; 'msg_mill_tool2}
   endif
   if msg_mill_tool3 ne ''
      {nb,'; 'msg_mill_tool3}
   endif
   if msg_mill_tool4 ne ''
      {nb,'; 'msg_mill_tool4}
   endif
   if msg_mill_tool5 ne ''
      {nb,'; 'msg_mill_tool5}
   endif
    
endp

;-------------------

-----------------------

2340 CYCL DEF 32.0 TOLERANZ
2341 CYCL DEF 32.1

это можно удалить

 

---------------------------------------------------------------------------------

это две подпрограммы

2347 LBL 250 ;RESET                 эта для отвода вверх по Z и сброса смещения координат|
2348 L Z-10.000 R0 FMAX M91     
2349 PLANE RESET STAY
2350 CYCL DEF 7.0 NULLPUNKT
2351 CYCL DEF 7.1 X+0
2352 CYCL DEF 7.2 Y+0
2353 CYCL DEF 7.3 Z+0
2354 LBL 0
2355 ;
2356 LBL 251 ;RESET TURN       эта выполняется для отвода стола/шпинделя в угол и возврата стола/головы в нулевое положение
2357 L Z-10.000 R0 FMAX M91
2358 L X+330.000 Y+0.000 R0 FMAX M91
2359 PLANE RESET TURN F9999
2360 CYCL DEF 7.0 NULLPUNKT
2361 CYCL DEF 7.1 X+0
2362 CYCL DEF 7.2 Y+0
2363 CYCL DEF 7.3 Z+0
2364 LBL 0

они необходимы для 5-осевой обработки, после каждого перехода для 3+2 или 5 осей в конце перехода должна выводиться метка для вызова этих подпрограмм: CALL LBL 250 и CALL LBL200. Если станок 3-х осевой то не надо 

 

-------------------------------------------------------------------

2344 L Z-0 R0 FMAX M91

        L Z-1 R0 FMAX M91 - так будет правильнее, не будете садится на концевик по Z

Изменено пользователем NickEL1000
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

-------------------------------------------

4 часа назад, IvIaCTeP сказал:

 

  Скрыть содержимое


338 CALL LBL 3  - Почему он подпрограммы вызывает?
 

 

Для отключения обработки контуров или переходов как отдельных подпрограмм в одной программе отредактируйте файл *.vmid, вкладка процедуры. Процедуры, Под-процедуры, Петля - все ставим нет.

5a004f120f686_.PNG.629c2df49f2632ca927322315caf4414.PNG

 

---------------------------------------------------------------------------

6 ; VERWENDETE WERKZEUGE: Это ФИО оператора?
7 ; - T2 -  D10.000 - Почему два раза дублируется?
8 * WERKZEUGE/JOBS:
9 CYCL DEF 247 BEZUGSPUNKT SETZEN ~
10 Q339=+1    ;BEZUGSPUNKT-NUMMER
11 * - T2 -  D10.000 - Почему два раза дублируется?
12 TOOL CALL 2  S2200
13 *   - F-CONTOUR16 -

 

7 кадр определяется @tool_def здесь будет выводится список всего инструмента, используемого в УП.

11 кадр будет выводится при каждой смене инструмента

 

все что начинается с точки с запятой или звездочки - комментарии

; VERWENDETE WERKZEUGE: * WERKZEUGE/JOBS: можно удалить нафиг

 

11 * - T2 -  D10.000 - оставьте

Heidenhain "видит" * в отличие от ;

Установив курсор на * на стойке, в редакторе программ, клавишами "стрелка вверх" и "стрелка вниз" можно быстро перескакивать от одного комментария к другому, это удобно когда, например нужно быстро найти кадр со сменой инструмента или начало перехода. Наладчикам очень удобно, хотя не все знают.

Изменено пользователем NickEL1000
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем спасибо кто откликнулся. Очень помогли советом!!!

Вот моя крутая шапка программы.

Что не так? Что добавить, можете подсказать?

Скрытый текст

0 BEGIN PGM P_CONTOUR14 MM
1 ; NAME OF DETAIL: ДЕТАЛЬ1-4
2 ; 06-NOV-2017 - 18:13:55
3 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
4 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
5 M129
6 L Z -1 R0 FMAX M91
7 CYCL DEF 7.0 DATUM SHIFT
8 CYCL DEF 7.1 X+0
9 CYCL DEF 7.2 Y+0
10 CYCL DEF 7.3 Z+0
11 CYCL DEF 247 COORRDINATE SYSTEM
12 Q339=+1    ;COORRDINATE SYSTEM
13 CPLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN FMAX
14 
15 *----D10.000----
16 
17 TOOL CALL 2  S2300
18 L X-62.200 Y-71.000 FMAX M3
19 L Z+25.000 R0 FMAX

Как сюда М08 вставить ребята? Помогите пожалуйста!!!
20 L Z+2.000 FMAX

 

3 часа назад, NickEL1000 сказал:

338 CALL LBL 3  - Почему он подпрограммы вызывает?

Это мне вопрос?

Если мне, то я не знаю. Эта строчка нужна вообще?

Вот добрался до конец программы.

Можете вычеркнуть лишнее,и что нужно добавить?

Скрытый текст

283 L Z+25.000 FMAX
284 L M09
285 L M05
286 L Z-1 R0 FMAX M91
287 L Y-1 R0 FMAX M91
288 M30
289 LBL 250 ;RESET
290 L Z-10.000 R0 FMAX M91
291 PLANE RESET STAY
292 CYCL DEF 7.0 NULLPUNKT
293 CYCL DEF 7.1 X+0
294 CYCL DEF 7.2 Y+0
295 CYCL DEF 7.3 Z+0
296 LBL 0
297 L Z-10.000 R0 FMAX M91
298 L X+330.000 Y+0.000 R0 FMAX M91
299 PLANE RESET TURN F9999
300 CYCL DEF 7.0 NULLPUNKT
301 CYCL DEF 7.1 X+0
302 CYCL DEF 7.2 Y+0
303 CYCL DEF 7.3 Z+0
304 LBL 0
305 END PGM MM

 

Почему когда контур вывожу, он выводит подпрограмм?

Все выше сказанные процедуры, сделал! 

Скрытый текст

0 BEGIN PGM MM
1 ; NAME OF DETAIL: ДЕТАЛЬ1-4
2 ; 06-NOV-2017 - 18:28:22
3 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
4 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
5 M129
6 L Z -1 R0 FMAX M91
7 CYCL DEF 7.0 DATUM SHIFT
8 CYCL DEF 7.1 X+0
9 CYCL DEF 7.2 Y+0
10 CYCL DEF 7.3 Z+0
11 CYCL DEF 247 COORRDINATE SYSTEM
12 Q339=+1    ;COORRDINATE SYSTEM
13 CPLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN FMAX
14 
15 *----D16.000----
16 
17 TOOL CALL 5  S1750
18 L X-10.550 Y+0.000 FMAX M3
19 L Z+25.000 R0 FMAX M8
20 L Z+2.150 FMAX
21 L Z-0.150 F400
22 CALL LBL 3
23 L X-50.050 Y+0.000 Z+25.000 FMAX
24 L X-10.550 FMAX
25 L Z+1.850 FMAX
26 L Z-0.450 F400
27 CALL LBL 3
28 L X-50.050 Y+0.000 Z+25.000 FMAX
29 L X-10.550 FMAX
30 L Z+1.550 FMAX
31 L Z-0.750 F400
32 CALL LBL 3

 

5a00646cbe338_.thumb.PNG.8d9e28fc0f9adcbd49b8c13297f5aee2.PNG

Изменено пользователем IvIaCTeP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С контуром разобрался. Перезапустил SOLID и все наладилось!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эти строчки можно заблокировать? 

Скрытый текст

3245 L X+330.000 Y+0.000 R0 FMAX M91
3246 PLANE RESET TURN F9999
3247 CYCL DEF 7.0 NULLPUNKT
3248 CYCL DEF 7.1 X+0
3249 CYCL DEF 7.2 Y+0
3250 CYCL DEF 7.3 Z+0

3251 LBL 0
3252 END PGM MM

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вы пост выше читали?


3246 PLANE RESET TURN F9999 - если не используете 5 или 4-х осевой станок можно заблокировать

 

 

еще раз внимательно прочитайте

Изменено пользователем NickEL1000
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, NickEL1000 сказал:

вы пост выше читали?


3246 PLANE RESET TURN F9999 - если не используете 5 или 4-х осевой станок можно заблокировать

 

 

еще раз внимательно прочитайте

Спасибо Вам большее!!!

В общем как то так получилось.

Знающие люди, подскажите пожалуйста, что то еще нужно добавить?

В начало, в конец программы?

Скрытый текст

0 BEGIN PGM MM
1 ; NAME OF DETAIL: ДЕТАЛЬ1-4
2 ; 06-NOV-2017 - 23:11:08
3 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
4 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
5 M129
6 L Z -1 R0 FMAX M91
7 CYCL DEF 7.0 DATUM SHIFT
8 CYCL DEF 7.1 X+0
9 CYCL DEF 7.2 Y+0
10 CYCL DEF 7.3 Z+0
11 CYCL DEF 247 COORRDINATE SYSTEM
12 Q339=+1    ;COORRDINATE SYSTEM
13 CPLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN FMAX
14 
15 *----D16.000----
16 
17 TOOL CALL 5  S1750
18 L X-10.550 Y+0.000 FMAX M3
19 L Z+25.000 R0 FMAX M8

Сюда М8 не в зависимости, поставил я галочку на охлаждение, или нет. Можно поставить?
20 L Z+2.150 FMAX
21 L Z-0.150 F400
22 L Y+1.600
3836 L Y+0.000
3837 L Z+25.000 FMAX M9
3838 L M09
3839 L M05
3840 L Z-1 R0 FMAX M91
3841 L Y-1 R0 FMAX M91
3842 M30
3843 END PGM MM

 

5 часов назад, NickEL1000 сказал:

вы пост выше читали?


3246 PLANE RESET TURN F9999 - если не используете 5 или 4-х осевой станок можно заблокировать

 

 

еще раз внимательно прочитайте

Если я буду работать на 4х осевом станке, но УП будет написана на 3х оси, я смогу этот пост использовать, не боясь, что то то не так пойдет?

Изменено пользователем IvIaCTeP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, IvIaCTeP сказал:

Если я буду работать на 4х осевом станке, но УП будет написана на 3х оси, я смогу этот пост использовать, не боясь, что то то не так пойдет?

можете, все будет ок

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, IvIaCTeP сказал:

 

Почему когда контур вывожу, он выводит подпрограмм?

Все выше сказанные процедуры, сделал! 

 

 

Здравствуйте! А почему Вы против LBL? Мне кажется более практичная УП получается, и разбираться, если что, намного проще

2 пользователям понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Каждый программист настраивает постпроцессор под себя, как ему комфортно и удобно, а главное понятно.

Если не сталкивался, то это выглядит как лишнее нагромождение в коде, которое усложняет УП.

Может быть @IvIaCTeP никогда не запускал, и не будет, большие (на несколько сот тысяч строк) программы с кадра, ближе к концу программы... 

 

Мало того что проще, с LBL можно провести разделение по корректорам  DL/DR в пределах одной УП для одного инструмента, т.е. ловить соточные допуска по отдельности на разные контуры становится намного приятней.

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Товарищи, я понимаю что я Вас всем надоел, но что поделаешь.

Подскажите пожалуйста, нужно что то добавить в начало или конец шапки?

Например циклы может какие еще?

М8 после Z25, можно поставить, не в зависимости, поставил я галку охлаждение, или нет?

Со временем конечно я вникну, какой цикл за что отвечает.

Но произошло так, что работать нужно сейчас, а разбираться по ходу пьесы некогда.

Вот и прошу Вашей помощи!

2 часа назад, NickEL1000 сказал:

Мало того что проще, с LBL можно провести разделение по корректорам  DL/DR в пределах одной УП для одного инструмента, т.е. ловить соточные допуска по отдельности на разные контуры становится намного приятней.

Тут можно по подробнее? Интересно услышать и узнать все варианты, которые существуют.

Скрытый текст

0 BEGIN PGM MM
1 ; NAME OF DETAIL: ДЕТАЛЬ1-4
2 ; 06-NOV-2017 - 23:11:08
3 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
4 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
5 M129
6 L Z -1 R0 FMAX M91
7 CYCL DEF 7.0 DATUM SHIFT
8 CYCL DEF 7.1 X+0
9 CYCL DEF 7.2 Y+0
10 CYCL DEF 7.3 Z+0
11 CYCL DEF 247 COORRDINATE SYSTEM
12 Q339=+1    ;COORRDINATE SYSTEM
13 CPLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN FMAX
14 
15 *----D16.000----
16 
17 TOOL CALL 5  S1750
18 L X-10.550 Y+0.000 FMAX M3
19 L Z+25.000 R0 FMAX M8

Сюда М8 не в зависимости, поставил я галочку на охлаждение, или нет. Можно поставить?
20 L Z+2.150 FMAX
21 L Z-0.150 F400
22 L Y+1.600
3836 L Y+0.000
3837 L Z+25.000 FMAX M9
3838 L M09
3839 L M05
3840 L Z-1 R0 FMAX M91
3841 L Y-1 R0 FMAX M91
3842 M30
3843 END PGM MM

 

Изменено пользователем IvIaCTeP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, IvIaCTeP сказал:

Товарищи, я понимаю что я Вас всем надоел, но что поделаешь.

Подскажите пожалуйста, нужно что то добавить в начало или конец шапки?

Например циклы может какие еще?

М8 после Z25, можно поставить, не в зависимости, поставил я галку охлаждение, или нет?

Со временем конечно я вникну, какой цикл за что отвечает.

Но произошло так, что работать нужно сейчас, а разбираться по ходу пьесы некогда.

Вот и прошу Вашей помощи!

Тут можно по подробнее? Интересно услышать и узнать все варианты, которые существуют.

  Скрыть содержимое

0 BEGIN PGM MM
1 ; NAME OF DETAIL: ДЕТАЛЬ1-4
2 ; 06-NOV-2017 - 23:11:08
3 BLK FORM 0.1 Z X-92.500 Y-65.000 Z-115.000
4 BLK FORM 0.2 X+0.000 Y+0.000 Z+3.500
5 M129
6 L Z -1 R0 FMAX M91
7 CYCL DEF 7.0 DATUM SHIFT
8 CYCL DEF 7.1 X+0
9 CYCL DEF 7.2 Y+0
10 CYCL DEF 7.3 Z+0
11 CYCL DEF 247 COORRDINATE SYSTEM
12 Q339=+1    ;COORRDINATE SYSTEM
13 CPLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN FMAX
14 
15 *----D16.000----
16 
17 TOOL CALL 5  S1750
18 L X-10.550 Y+0.000 FMAX M3
19 L Z+25.000 R0 FMAX M8

Сюда М8 не в зависимости, поставил я галочку на охлаждение, или нет. Можно поставить?
20 L Z+2.150 FMAX
21 L Z-0.150 F400
22 L Y+1.600
3836 L Y+0.000
3837 L Z+25.000 FMAX M9
3838 L M09
3839 L M05
3840 L Z-1 R0 FMAX M91
3841 L Y-1 R0 FMAX M91
3842 M30
3843 END PGM MM

 

в 13 строке ошибка, цикл "PLANE", а не "CPLANE". И зачем вам поворот столов если станок 4 осевой? Или 4 ось у вас через цикл вращается? Почему задаю вопрос, у нас станки Mikron VCE и 4 ось программируется как линейная (z.B.: "L-90 FMAX"). У вас какой станок кстати?

 

 

Изменено пользователем NemetC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, IvIaCTeP сказал:

17 TOOL CALL 5  S1750
18 L X-10.550 Y+0.000 FMAX M3
19 L Z+25.000 R0 FMAX M8

Сюда М8 не в зависимости, поставил я галочку на охлаждение, или нет. Можно поставить?
20 L Z+2.150 FMAX
21 L Z-0.150 F400

Скрытый текст

 

@rapid_move
   
   if machine_plane eq ZX
      call @invert_xpos 
   endif
   
   if ud_first_rapid_move eq true
      if machine_plane eq xy
         if ud_inc_letter ne 'I'
;            {nb,'L Z'tool_start_plane:zpos_f ' FMAX'}
            {nb,'L X'xpos ' Y'ypos ' FMAX'}
            if drill_type ne Einlipp241
               {' M'ud_spin_dir}
            endif
            {nb,'L Z'zpos}
         else
            {nb,'L IX'xpos ' IY'ypos ' FMAX'}
            if drill_type ne Einlipp241
               {' M'ud_spin_dir}
            endif
            {nb,'L IZ'zpos}
         endif
      endif
      if machine_plane eq zx
         if ud_inc_letter ne 'I'
;            {nb,'L Y'tool_start_plane:ypos_f ' FMAX'}
            {nb,'L X'xpos ' Z'zpos ' FMAX'}
            if drill_type ne Einlipp241
               {' M'ud_spin_dir}
            endif
            {nb,'L Y'ypos}
         else
            {nb,'L IX'xpos ' IZ'zpos ' FMAX'}
            if drill_type ne Einlipp241
               {' M'ud_spin_dir}
            endif
            {nb,'L IY'ypos}
         endif
      endif
   else
      if ud_3D_comp_flag eq true  ;=> vector output
         {nb,'LN X'xpos, ' Y'ypos, ' Z'zpos}       
         {' NX'x_surface_normal:vector_f, ' NY'y_surface_normal:vector_f, ' NZ'z_surface_normal:vector_f}
      else
         if ud_inc_letter ne 'I'
            {nb,'L'[' X'xpos],[' Y'ypos],[' Z'zpos]}
         else
            {nb,'L'[' IX'xpos],[' IY'ypos],[' IZ'zpos]}
         endif
      endif
   endif
   
   if ud_comp_used
      {' 'comp}
   endif
   ud_comp_used = false
   
   {' FMAX'}
   
   if ud_first_rapid_move eq true and drill_type ne Einlipp241
      {'M08'}
   endif
   
   change(feed) = true
   ud_save_feed = 99999   
   ud_first_rapid_move = false
      
endp

;-------------------

@line

   if ud_first_rapid_move eq true  ;for HSS approach "with safety" or "direct"
      {nb,'L M'ud_spin_dir}
      {'M08'}
      ud_first_rapid_move = false
      change(xpos) = true
      change(ypos) = true
   endif
   
   if machine_plane eq ZX
      call @invert_xpos
   endif

   if ud_3D_comp_flag eq true     ;=> vector output
      {nb,'LN X'xpos, ' Y'ypos, ' Z'zpos}       
      {' NX'x_surface_normal:vector_f, ' NY'y_surface_normal:vector_f, ' NZ'z_surface_normal:vector_f} 
   else
      if ud_inc_letter ne 'I'
         {nb,'L'[' X'xpos],[' Y'ypos],[' Z'zpos]}
      else
         {nb,'L'[' IX'xpos],[' IY'ypos],[' IZ'zpos]}
      endif
   endif
   
   if ud_comp_used
      {' ' comp}
      if M120_LA ne 0
         ud_M120_LA_flag = true
      endif
   endif
   ud_comp_used = false
   
   if parametric_feed eq true
      call @udr_parametric_feed
   else
      call @udr_print_feed
   endif

   if ud_M120_LA_flag eq true and comp ne 'R0'
      {' M120 LA' M120_LA} 
      ud_M120_LA_flag = false
   endif

endp

;-------------------

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, NickEL1000 сказал:

Мало того что проще, с LBL можно провести разделение по корректорам  DL/DR в пределах одной УП для одного инструмента, т.е. ловить соточные допуска по отдельности на разные контуры становится намного приятней.

А еще есть параметрическая подача...) Хайденхайн вообще классная стойка

 

Кстати по поводу СОЖ, у нас есть М код "М13", одновременное М3+М8. Я просто в посте заменил М3 на М13 и теперь галочку ставить нет надо. Возможно у ТСа прокатит

 

Изменено пользователем NemetC
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, NemetC сказал:

А еще есть параметрическая подача...) Хайденхайн вообще классная стойка

да и на fanuc и siemens, как показывает опыт, в SC можно прикрутить параметрическую подачу, лишь бы операторы в ночные смены с режимами не сильно наворачивали...

Изменено пользователем NickEL1000

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, NickEL1000 сказал:

да и на fanuc и siemens, как показывает опыт, можно прикрутить параметрическую подачу, лишь бы операторы в ночные смены с режимами не сильно наворачивали...

Не сочтите за наглость, есть пост для фанука с параметрической подачей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще, есть несколько уровней "качества" постпроцессора:

1. Взяли левый пост, или стандартный: -получили годную геометрию в G-кодах, и достаточно, буковки лишние в шапочке или где по тексту удалять/дописывать будем ручками, со временем заучиваем что и где править, и все, шевелится не надо, работает же. Это когда дятлоподобные действия нам не чужды))

2. Приложили некоторые усилия, финансовые(в основном не свои, а работодателя) - купили разработку поста, или умственные, сами что-то нарисовали, дописали и.т.п. На выходе имеем более-менее приличный NC-код, который уже не требует ручного вмешательства в УП после генерации, и отрабатывается на станке без ошибок.

3. С прозы на стихи.Творческий подход. Глубокий анализ матчасти, как по стойке так и по механизму постпроцессинга в САМ-системе. Пост выдает УП, мало того что идеально точную по логике кода, но и эстетически красивую, максимально параметризированную, с которой удобно и комфортно работать как наладчику/оператору, так и программисту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
53 минуты назад, NemetC сказал:

А еще есть параметрическая подача...) Хайденхайн вообще классная стойка

 

Кстати по поводу СОЖ, у нас есть М код "М13", одновременное М3+М8. Я просто в посте заменил М3 на М13 и теперь галочку ставить нет надо. Возможно у ТСа прокатит

 

должно прокатить, M13 / M14 работает на всех хайденах, как одновременно обороты+сож

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@IvIaCTeP  объясняю подробнее для чего можно применять метод работы по CALL LBL на Heidenhain.
 

Скрытый текст

 

На детали есть большое количество различных элементов, карманы бобышки, ступени, и т.п. имеющие разные поля допусков. но обрабатываемые одним инструментом.

Каждый элемент мы обсчитываем отдельным переходом в SC.

При включенных процедурах каждый переход в УП будет выводится через метку LBL.

 

В начале УП, после основной шапки буде блок вызовов по меткам:

TOOL CALL 10  S5000 Z

CALL LBL1

CALL LBL2

CALL LBL3

CALL LBL4   и.т.д.

         а после в самих LBL геометрия перехода

LBL1       - первый переход

x10

y20

LBL0

 

LBL2       - второй переход

x100

y2000

LBL0

 

          и например, в процессе наладки наладчик заметил что ,условно, окно обрабатываемое во 2-ом переходе нужно поднять на 0,02мм , а карман в 4-ом переходе расширить на 0,05мм.

 

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

TOOL CALL 10  S5000 Z

CALL LBL1

TOOL CALL 10  S5000 Z DL+0.02

CALL LBL2

TOOL CALL 10  S5000 Z DL +0

CALL LBL3

TOOL CALL 10  S5000 Z DR-0.025

CALL LBL4

TOOL CALL 10  S5000 Z DR +0

и все,

 

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

 

 

Изменено пользователем NickEL1000
2 пользователям понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Вообще, есть несколько уровней "качества" постпроцессора:
1. Взяли левый пост, или стандартный: -получили годную геометрию в G-кодах, и достаточно, буковки лишние в шапочке или где по тексту удалять/дописывать будем ручками, со временем заучиваем что и где править, и все, шевелится не надо, работает же. Это когда дятлоподобные действия нам не чужды))
2. Приложили некоторые усилия, финансовые(в основном не свои, а работодателя) - купили разработку поста, или умственные, сами что-то нарисовали, дописали и.т.п. На выходе имеем более-менее приличный NC-код, который уже не требует ручного вмешательства в УП после генерации, и отрабатывается на станке без ошибок.
3. С прозы на стихи.Творческий подход. Глубокий анализ матчасти, как по стойке так и по механизму постпроцессинга в САМ-системе. Пост выдает УП, мало того что идеально точную по логике кода, но и эстетически красивую, максимально параметризированную, с которой удобно и комфортно работать как наладчику/оператору, так и программисту.
Я пока на второй ступеньке, сгенереровал и сразу на зеленую кнопку, все вроде работает без ручной правки, но всегда хочется чего то большего)

Отправлено с моего LYO-L21 через Tapatalk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем, приветы!

Спасибо большее всем, кто помогал! Очень помогли.

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

Скрытый текст

{nb,'CYCL DEF 247 COORRDINATE SYSTEM'}
{nb,'Q339=+'home_number'    ;COORRDINATE SYSTEM'}

 

В УП оно выводится так.

9 CYCL DEF 247 COORRDINATE SYSTEM
10 Q339=+1    ;COORRDINATE SYSTEM - Что нужно прописать, чтобы эта строчка не нумеровалась?

 

Изменено пользователем IvIaCTeP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, IvIaCTeP сказал:

Всем, приветы!

Спасибо большее всем, кто помогал! Очень помогли.

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

В посте, в  начале нужной строки после открытия скобок, "nb" поменять на "nl".

 

{nb,'CYCL DEF 247 COORRDINATE SYSTEM'}
{nl,'Q339=+'home_number'    ;COORRDINATE SYSTEM'}

2 пользователям понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 08.11.2017 в 18:45, Far72 сказал:

В посте, в  начале нужной строки после открытия скобок, "nb" поменять на "nl".

 

{nb,'CYCL DEF 247 COORRDINATE SYSTEM'}
{nl,'Q339=+'home_number'    ;COORRDINATE SYSTEM'}

Спасибо большее, помогли!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогите исправить пост.                DMU_80P_hidyn_iTNC530_5X.gpp

так должно быть

5 TOOL CALL 206 Z S10000
6 *   - F-CONTOUR5
7 ; POSITION 1 BEI NP 1
13 L X+91.001 Y-74.9829 FMAX M3
14 L Z+25.000 R0 FMAX
15 L Z+2.500 FMAX
16 L Z+0.500 F800
17 L X+91.000 RL
18 CC X+92.000 Y-74.9829
19 CP IPA+360.000 IZ-0.200 DR+
20 CC X+92.000 Y-74.9829
21 CP IPA+360.000 IZ-0.200 DR+
22 CC X+92.000 Y-74.9829
23 CP IPA+360.000 IZ-0.200 DR+
24 CC X+92.000 Y-74.9829
25 CP IPA+360.000 IZ-0.200 DR+
26 CC X+92.000 Y-74.9829
27 CP IPA+360.000 IZ-0.200 DR+
28 CC X+92.000 Y-74.9829
29 CP IPA+360.000 IZ-0.200 DR+
30 CC X+92.000 Y-74.9829
31 CP IPA+360.000 IZ-0.200 DR+
32 CC X+92.000 Y-74.9829
33 CP IPA+360.000 IZ-0.200 DR+
34 CC X+92.000 Y-74.9829

 

А получается вот так

 

10 TOOL CALL 1 Z S8000
11 *   - F-CONTOUR2
12 ; POSITION 1 BEI NP 1
19 L X+128.6891 Y-41.2288 FMAX M3
20 L Z+20.000 R0 FMAX
21 L Z+2.000 FMAX
22 L Z+0.000 F1000
23 L X+129.1026 Y-42.7173 Z-0.0246
24 L X+129.4389 Y-44.2251 Z-0.0492
25 L X+129.6972 Y-45.7483 Z-0.0738
26 L X+129.8767 Y-47.2827 Z-0.0984
27 L X+129.9769 Y-48.8243 Z-0.123
28 L X+129.9977 Y-50.369 Z-0.1475
29 L X+129.9389 Y-51.9128 Z-0.1721
30 L X+129.8008 Y-53.4515 Z-0.1967
31 L X+129.5836 Y-54.981 Z-0.2213
32 L X+129.2879 Y-56.4973 Z-0.2459
33 L X+128.9146 Y-57.9964 Z-0.2705
34 L X+128.4646 Y-59.4743 Z-0.2951
35 L X+127.9392 Y-60.9271 Z-0.3197
36 L X+127.3396 Y-62.3508 Z-0.3443
37 L X+126.6676 Y-63.7419 Z-0.3689
38 L X+125.9248 Y-65.0965 Z-0.3934
39 L X+125.1133 Y-66.411 Z-0.418
40 L X+124.2352 Y-67.6821 Z-0.4426

помогите кто чем может.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
50 минут назад, Santey_87 сказал:

А получается вот так

Для начала посмотрите стоит ли у вас здесь галочка, если да то снимите и попробуйте вывести УП

7d796a010971f2401053cb026c979c31.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если не помогло отключение аппроксимации в траектории, посмотрите настройки станка *.vmid

5a3a9a4b1836f_.PNG.1706ed0232fe1d8abd5eef7649df4d78.PNG

Изменено пользователем NickEL1000

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, Frezer_PU сказал:

Для начала посмотрите стоит ли у вас здесь галочка, если да то снимите и попробуйте вывести УП

7d796a010971f2401053cb026c979c31.png

Спасибо огромное помогло. А как эту галочку убрать чтоб по умолчанию не ставилась?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Santey_87 сказал:

А как эту галочку убрать чтоб по умолчанию не ставилась?

По идее она не должна больше  ставится  после того как ее один раз сняли! 

Изменено пользователем Frezer_PU

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу



  • Реклама

  • Сообщения

    • Knight of Truth
      По Windows 7 - не знаю. На этой оси у нас обновления не тестировались - так как решили не тратить время и не пробовать снова эту отраву на вкус, ведь принцип действия патчей одинаков, не зависимо от операционной системы, а разработчики Microsoft по указу сверху могут добавлять новые компоненты этих патчей в любые обновления "стабильности" и "безопасности". Интересная информация: компания ASUS уже выкатила новые версии БИОС для своих материнских плат, где в процессор прошивается новый микрокод, устраняющий "уязвимости" системы. Подозреваю, что там припасено дополнительное урезание мощности компьютерного железа.
    • soklakov
      у Ансиса есть старый курс " Aeroacoustics using ANSYS Fluent 14.5 ".   сам не читал, но говорят там довольно понятно всё.
    • Борман
    • Tad
      По поводу дрожания - надо развоздушить систему. Если воздух не обнаружится - пробовать немного уменьшить коэффициент усиления ПИД регулятора осей Y при рабочей скорости. По поводу отключения - мало информации.
    • soklakov
      Крайне интересно. Правильно ли я понял, что Ваша софтина умеет прикладывать нагрузки к кубику, не спрашивая меня, какую из шести граней закрепить, а какую нагрузить? Если так, то тревожит вопрос: откуда она знает?
    • soklakov
      Подробностей? А то и правда, секретный танк, о котором ученые еще ничего не знают, работает при -300 по цельсию.
    • Sla_68
      Можете меня обзывать как хотите, быдло-кодером ну и т.д. Ну хоть убейте меня , я не знаю как выполнить данную задачу без дополнительных построений.  А так код вполне себе рабочий.Определяет все что мне нужно. Только что написал. Выкладываю код. Там имеется еще наборчик пользовательских функций. Но они все тригонометрические. Поэтому пока без них. Sub Назначение_свойств_профиля() 'On Error GoTo ex Dim swFace As SldWorks.face2 Dim swSurf As SldWorks.Surface Dim swDisplayDimension As SldWorks.DisplayDimension Dim swDim As SldWorks.Dimension Dim v1 As SldWorks.Vertex Dim v2 As SldWorks.Vertex Dim swRefAxis As SldWorks.RefAxis Dim vAxisParam As Variant Dim x As Double Dim y As Double Dim z As Double Dim x1 As Double Dim y1 As Double Dim z1 As Double Dim fx As Double Dim fy As Double Dim fz As Double Dim fx1 As Double Dim fy1 As Double Dim fz1 As Double Dim sm() As Double Dim swFeatMgr As SldWorks.FeatureManager Set swApp = Application.SldWorks Set part = swApp.ActiveDoc Set swFeatMgr = part.FeatureManager Set swSelMgr = part.SelectionManager part.SketchManager.AddToDB = True swApp.SetUserPreferenceToggle swSketchAutomaticRelations, False 'автопривязки отключаем swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swSketchInference, False 'прилипание ..отключает все взаимосвязи swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swInputDimValOnCreate, False 'убивает диалог с размером false -выключает диалог tt = part.GetTitle mg = Mid(tt, 10, 2) lRetVal = part.AddCustomInfo3("", "материал", swCustomInfoText, mg) partTitle = part.GetTitle namedetal = partTitle & ".SLDPRT" arrbody = part.GetBodies2(swSolidBody, False) Set body = arrbody(0) glavfaces = вернуть_номера_главных_плоскостей(body) Set swFace = glavfaces(2) Set swSurf = swFace.GetSurface '======================================================== If swSurf.IsPlane Then edjearr = вернуть_2_главных_кромки(swFace1) Set Edge = edjearr(2) params = Edge.GetCurveParams2 x1 = params(0): x2 = params(3): an1 = x1 - x2: bn1 = x2 - x1 'вектор оси y1 = params(1): y1 = params(4): an2 = y1 - y2: bn2 = y2 - y1 z1 = params(2): z1 = params(5): an3 = z1 - z2: bn3 = z2 - z1 pvec = перпендикулярный_вектор(an1, an2, an3) Set axeobj = Edge Set faceObj = swFace ElseIf swSurf.IsCylinder Then params = swFace.GetSurface.CylinderParams x1 = params(0): x2 = params(3): an1 = x1 - x2: bn1 = x2 - x1 'вектор оси y1 = params(1): y1 = params(4): an2 = y1 - y2: bn2 = y2 - y1 z1 = params(2): z1 = params(5): an3 = z1 - z2: bn3 = z2 - z1 pvec = перпендикулярный_вектор(an1, an2, an3) part.Insert3DSketch2 True 'вход строим 3 точки для плоскости Set swSketch = swApp.ActiveDoc.GetActiveSketch2 swSketch.Name = "точка" загрузочная_точка_смещена 0.1, (x1 + x2) / 2, (y1 + y2) / 2, (z1 + z2) / 2, pvec(0), pvec(1), pvec(2), fx0, fy0, fz0 Set swSketchPt0 = part.SketchManager.CreatePoint(fx0, fy0, fz0) part.Insert3DSketch2 True 'выход part.BlankSketch 'скрывает эскизы swSketchPt0.SelectByMark False, 2 swFace.SelectByMark True, 2 bret = part.InsertAxis 'вставка оси Set swFeatMgr = part.FeatureManager swFeatures = swFeatMgr.GetFeatures(True) Set axeobj = swFeatures(UBound(swFeatures)) 'ось axeobj.Name = "ось профиля" axeobj.SelectByMark False, 2 swSketchPt0.SelectByMark True, 2 Set faceObj = part.CreatePlaneThruLineAndPt(False) 'создает плоскость faceObj.Name = "плоскость распила" faceObj.SelectByMark False, 2 axeobj.SelectByMark True, 2 part.BlankRefGeom Else Exit Sub End If '=============================================== загрузочная_точка_смещена 3, x1, y1, z1, an1, an2, an3, fx1, fy1, fz1 'точки оси загрузочная_точка_смещена 3, x2, y2, z2, bn1, bn2, bn3, fx2, fy2, fz2 'точки оси загрузочная_точка_смещена 0.1, fx1, fy1, fz1, pvec(0), pvec(1), pvec(2), fx11, fy11, fz11 'точки будущих линий2 загрузочная_точка_смещена 0.1, fx2, fy2, fz2, pvec(0), pvec(1), pvec(2), fx22, fy22, fz22 'точки будущих линий2 '==================================================== faceObj.SelectByMark False, 2 part.SketchManager.InsertSketch True 'вставка 2D эскиза на рабочей плоскости Set swSketch = swApp.ActiveDoc.GetActiveSketch2 swSketch.Name = "контур_распила" Dim swMathPt1 As SldWorks.MathPoint Dim swMathPt11 As SldWorks.MathPoint Dim swMathPt111 As SldWorks.MathPoint Dim swMathPt2 As SldWorks.MathPoint Dim swMathPt22 As SldWorks.MathPoint Dim swMathPt222 As SldWorks.MathPoint Set swMathPt1 = get2Dpoint(swSketch, fx1, fy1, fz1) Set swMathPt11 = get2Dpoint(swSketch, fx11, fy11, fz11) Set swMathPt2 = get2Dpoint(swSketch, fx2, fy2, fz2) Set swMathPt22 = get2Dpoint(swSketch, fx22, fy22, fz22) Set skSegment1 = part.SketchManager.CreateCenterLine _ (swMathPt1.ArrayData(0), swMathPt1.ArrayData(1), swMathPt1.ArrayData(2), _ swMathPt11.ArrayData(0), swMathPt11.ArrayData(1), swMathPt11.ArrayData(2)) skSegment1.SelectByMark False, 2 axeobj.SelectByMark True, 2 part.SketchAddConstraints "sgPERPENDICULAR" Set skSegment2 = part.SketchManager.CreateCenterLine _ (swMathPt2.ArrayData(0), swMathPt2.ArrayData(1), swMathPt2.ArrayData(2), _ swMathPt22.ArrayData(0), swMathPt22.ArrayData(1), swMathPt22.ArrayData(2)) skSegment2.SelectByMark False, 2 axeobj.SelectByMark True, 2 part.SketchAddConstraints "sgPERPENDICULAR" '======================================================================================== Set v1 = ближайшая_вершина_к_координате(body, fx1, fy1, fz1, vdis1) Set Edge1 = ближайшая_кромка_к_координате(body, fx1, fy1, fz1, edis1) Set v2 = ближайшая_вершина_к_координате(body, fx2, fy2, fz2, vdis2) Set edge2 = ближайшая_кромка_к_координате(body, fx2, fy2, fz2, edis2) '=================================== If vdis1 <= edis1 Then v1.SelectByMark False, 2 Set swStartPt1 = skSegment1.GetStartPoint2 swStartPt1.SelectByMark True, 2 part.SketchAddConstraints "sgCOINCIDENT" Else Edge1.SelectByMark False, 2 skSegment1.SelectByMark True, 2 part.SketchAddConstraints "sgTANGENT" part.SketchAddConstraints "sgCOLINEAR" End If '================= If vdis2 <= edis2 Then v2.SelectByMark False, 2 Set swStartPt2 = skSegment2.GetStartPoint2 swStartPt2.SelectByMark True, 2 part.SketchAddConstraints "sgCOINCIDENT" Else edge2.SelectByMark False, 2 skSegment2.SelectByMark True, 2 part.SketchAddConstraints "sgTANGENT" part.SketchAddConstraints "sgCOLINEAR" End If '===================================== skSegment1.SelectByMark False, 2 skSegment2.SelectByMark True, 2 Set swDisplayDimension = part.AddDimension2(0, 0, 0) Set swDim = swDisplayDimension.GetDimension swDim.DrivenState = 1 swDim.Name = "длина" dlina = """длина@контур_распила@@default@" & namedetal & """" shirina = "1" lRetVal = part.DeleteCustomInfo2("", "длина") lRetVal = part.DeleteCustomInfo2("", "ширина") lRetVal = part.AddCustomInfo3("", "длина", swCustomInfoText, dlina) lRetVal = part.AddCustomInfo3("", "ширина", swCustomInfoText, shirina) part.SketchManager.InsertSketch True 'выход из эскиза part.BlankSketch ' скрыть эскиз part.SketchManager.AddToDB = False swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swSketchInference, True 'прилипание ..отключает все взаимосвязи swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swInputDimValOnCreate, True 'убивает диалог с размером true -включает диалог swApp.SetUserPreferenceToggle swSketchAutomaticRelations, True 'автопривязки включаем End Sub Function ближайшая_вершина_к_координате(body, x, y, z, dis) vList = body.GetVertices Dim arr() As Double Dim edjpoint As Variant Dim arrobj() As Object Dim arrobjdis() As Double If IsEmpty(vList) Then dis = 1000000 Set ближайшая_вершина_к_координате = Nothing Exit Function End If For i = 0 To UBound(vList) edjpoint = vList(i).GetClosestPointOn(x, y, z) 'ближайшая точка ReDim Preserve arr(i) 'массив дистанций ReDim Preserve arrobj(i) arr(i) = длина_линии(x, y, z, edjpoint(0), edjpoint(1), edjpoint(2)) Set arrobj(i) = vList(i) Next i max_min_indexarray arr, max1n, max2n, min1n, min2n dis = arr(min1n) Set ближайшая_вершина_к_координате = arrobj(min1n) End Function Function ближайшая_кромка_к_координате(body, x, y, z, dis) edgeList = body.GetEdges Dim arr() As Double Dim edjpoint As Variant Dim arrobj() As Object Dim arrobjdis() As Double For i = 0 To UBound(edgeList) edjpoint = edgeList(i).GetClosestPointOn(x, y, z) 'ближайшая точка ReDim Preserve arr(i) 'массив дистанций ReDim Preserve arrobj(i) arr(i) = длина_линии(x, y, z, edjpoint(0), edjpoint(1), edjpoint(2)) Set arrobj(i) = edgeList(i) Next i max_min_indexarray arr, max1n, max2n, min1n, min2n dis = arr(min1n) Set ближайшая_кромка_к_координате = arrobj(min1n) End Function Sub max_min_indexarray(mass, max1n, max2n, min1n, min2n) 'сортировка и удаление повторов в массиве max1n = 0 max2n = 0 min1n = 0 min2n = 0 For i = LBound(mass) To UBound(mass) If CDbl(mass(i)) > max1 Then max1 = CDbl(mass(i)) Next i max2 = 0 For i = LBound(mass) To UBound(mass) If CDbl(mass(i)) = max1 Then max1n = i Exit For End If Next i For i = LBound(mass) To UBound(mass) If CDbl(mass(i)) > max2 And i <> max1n Then max2n = i max2 = mass(i) End If Next i ''''''''''''''''''''''''''''''''''''''''''''''''''обратная min1 = max1 For i = LBound(mass) To UBound(mass) If CDbl(mass(i)) < min1 Then min1 = CDbl(mass(i)) Next i min2 = max1 For i = LBound(mass) To UBound(mass) If CDbl(mass(i)) = min1 Then min1n = i Exit For End If Next i For i = LBound(mass) To UBound(mass) If CDbl(mass(i)) < CDbl(min2) And i <> min1n Then min2n = i min2 = CDbl(mass(i)) End If Next i End Sub  
    • vad0000
      В первую очередь выкладывайте машинные параметры станка. 
    • Nevskiyalexxx
      Так то лучше вместо planarа несколько Z-levelов создать - он и припуск будет видеть и деталь гарантированно не зарежет.
    • lexincton
      Поменял вывод инструмента в событии начала траектории Прописать статично эту строку перед инструментом