Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!
400 ₴

AutoLISP



Applications 2

Only registered users can view attachments.

Client's feedback on cooperation with Юрой Абрикосовым

Quality
Professionalism
Price
Availability
Terms

Работа выполнена быстро, качественно, сдана вовремя. Доволен сотрудничеством.

Freelancer's feedback on cooperation with Мирославом Хомом

Payment
Task formulation
Requirements
Availability

Всё прошло успешно. Рекомендую.

Юра Абрикосов | Safe Safe


  1. 473    21  0
    Winning proposal3 days400 ₴

    Готов выполнить данное задание.
    p.s.1: небольшой опыт написания программ в autolisp у меня имеется (хотя и без графических возможностей). Поставил 14дн. с запасом, - постараюсь раньше сделать.
    p.s.2: что такое темы 8-10? (методичка, как бы, на 7-й теме заканчивается)

  • Юра Абрикосов
    28 January at 02:28 |

    А какие у вас сроки?

  • Мирослав Хом — project author
    28 January at 10:29 |

    К 30 числу нужно сдать

  • Юра Абрикосов
    28 January at 10:47 |

    А что будет если не успеешь сдать к этому числу?

    Остаётся актуальным или нет?

  • Мирослав Хом — project author
    28 January at 10:50 |

    Если к 1 числу успеете будет хорошо, у меня уже сессия стартанула, и препод должен в течении 14 дней пересмотреть

  • Юра Абрикосов
    28 January at 10:58 |

    Я наверно начну делать и если дело пойдёт, то оформим сделку (я отдельно сообщу об этом). А если не успею, - то мне ничего не надо (буду считать, что тренировался с целью учёбы. Я начинающий фрилансер).


    p.s.: если же в это время кто-то более опытный подаст заявку, то выбирай его (обо мне просто не думай).


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


    Вопрос о версии Autocad. У меня 2014. Попытался я создать пакетный файл (как в теме 5) и у меня круг не нарисовало. Методом проб и ошибок выяснил, что работает по второму варианту:


    image


    Т.е., что будет если у преподавателя не заработает из-за версии? 

  • Мирослав Хом — project author
    28 January at 11:43 |

    Надеюсь что всё пойдёт) 

    У препода должно заработать.

  • Мирослав Хом — project author
    28 January at 19:24 |

    Может здесь будет полезная инфа https://api-2d3d-cad.com/vlisp_param_drawing/

  • Юра Абрикосов
    29 January at 01:29 |

    Кажется 1-й пункт сделал.

    a) Прежде чем проверять убедись, что загружена пунктирная линия:


    image


    image


    Если нет, тогда загрузи.


    б) создай блокнотом файл ".txt" и вставь код:


    _OSNAP

    _OFF



    _LINETYPE

    _S _bylayer


    _LWEIGHT 0.30



    _CIRCLE 0,0 _D 100

    _CIRCLE 0,0 _D 50

    _XLINE

    0,37

    0,100


    _ROTATE

    0,37


    0,37 45

    _XLINE

    0,37

    0,100


    _ROTATE

    0,37


    0,37 -45

    _TRIM

    100,105

    -100,110


    0,50


    _TRIM

    0,-50


    100,105

    -100,110


    _XLINE

    0,37

    100,37


    _TRIM

    100,37


    1000,-105

    0,-110


    _TRIM

    100,37


    0,-105

    -1000,-110


    _ERASE

    100,37


    _LINETYPE

    _S JIS_02_4.0


    _LWEIGHT 0.05



    _LINE

    0,-55

    0,55


    _LINE

    -55,0

    55,0


    _LINETYPE

    _S _bylayer


    _OSNAP

    _END


    (пробелы и переводы на новую строку не убирай, - опытным путём определил, что каждый символ важен)


    в) измени расширение на:

    image


    Если такой возможности не будет, тогда сними галочку параметрах папок:


    image


    г) В командной строке автокада вводишь ПАКЕТ и надо выбрать файл:


    image


    и результат:


    image


  • Юра Абрикосов
    29 January at 01:52 |

    Появилась маленькая проблема: при копировании текста программы из поста искусcтвенно добавляются пробелы в текст программы (между строк). В данном случае это критично. Значит надо привести программу к такому виду:


    image


  • Юра Абрикосов
    29 January at 03:10 |

    Сделал 2-й пункт работы.


    a) В командной строке пишешь:

     

    image


    б) вставляешь код и нажимаешь загрузить:


    image


    Сам код (в данном случае не важны пробелы между командами):


    (setvar "osmode" 0)

    (setvar "3dosmode" 0)

    (command "_linetype" "_s" "bylayer" "")

    (command "_lweight" 0.30 "")

    (command "_circle" '(0 0) "_d" 100 "")

    (command "_circle" '(0 0) "_d" 50 "")

    (command "_xline" '(0 37) '(0 100) "")

    (command "_rotate" '(0 37) "" '(0 37) 45 "")

    (command "_xline" '(0 37) '(0 100) "")

    (command "_rotate" '(0 37) "" '(0 37) -45 "")

    (command "_trim" '(100 105) '(-100 110) "" '(0 50) "")

    (command "_trim" '(0 -50) "" '(100 51) '(-100 52) "")

    (command "_xline" '(0 37) '(100 37) "")

    (command "_trim" '(100 37) "" '(1000 -51) '(-1000 -52) "")

    (command "_erase" '(100 37) "")

    (command "_linetype" "_s" "JIS_02_4.0" "")

    (command "_lweight" 0.05 "")

    (command "_line" '(0 -55) '(0 55) "")

    (command "_line" '(-55 0) '(55 0) "")

    (command "_linetype" "_s" "bylayer" "")

    (setvar "osmode" 1)

  • Юра Абрикосов
    29 January at 03:24 |

    Результат должен быть таким же. 

    Я заметил одну странность: корректный вывод возможен только при условии, что весь будущий чертёж (помещается в квадрат 50х50) располагается на экране, по центру:


    image 


    Если же ты сдвинешь оси так, что будущий чертёж будет перекрываться (частично или полностью), то вывод будет не корректным:


    image   

    Я не знаю с чем это связано.

  • Юра Абрикосов
    29 January at 03:25 |

    Вернее квадрат 100х100.

  • Юра Абрикосов
    29 January at 04:02 |

    Во 2-й пункте поправил программу:


    (setvar "osmode" 0)

    (command "_linetype" "_s" "bylayer" "")

    (command "_lweight" 0.30 "")

    (command "_circle" '(0 0) "_d" 100 "")

    (command "_circle" '(0 0) "_d" 50 "")

    (command "_xline" '(0 37) '(0 100) "")

    (command "_rotate" '(0 37) "" '(0 37) 45 "")

    (command "_xline" '(0 37) '(0 100) "")

    (command "_rotate" '(0 37) "" '(0 37) -45 "")

    (command "_trim" '(100 105) '(-100 110) "" '(0 50) "")

    (command "_trim" '(0 -50) "" '(100 105) '(-100 110) "")

    (command "_xline" '(0 37) '(100 37) "")

    (command "_trim" '(100 37) "" '(1000 -105) '(0 -110) "")

    (command "_trim" '(100 37) "" '(0 -105) '(-1000 -110) "")

    (command "_erase" '(100 37) "")

    (command "_linetype" "_s" "JIS_02_4.0" "")

    (command "_lweight" 0.05 "")

    (command "_line" '(0 -55) '(0 55) "")

    (command "_line" '(-55 0) '(55 0) "")

    (command "_linetype" "_s" "bylayer" "")

    (setvar "osmode" 1)



    а ту считать не действительной.

  • Юра Абрикосов
    29 January at 05:21 |

    Сделал 3-й пункт. 

    Определяемые пользователем параметры:


    image


    Этот код нужно использовать как в пункте 2-м. Только после "загрузки" станет доступной выбор функции в командной строке автокада:


    image


    После чего можно будет ввести основные параметры.



    (defun c:KONTRABOTA(/)


    (setq D1 (getreal "D1 (50)= "))

    (setq D2 (getreal "D2 (100)= "))

    (setq R1 (getreal "R1 (37)= "))


    (if (= D1 nil) (setq D1 50.0) D1)

    (if (= D2 nil) (setq D2 100.0) D2)

    (if (= R1 nil) (setq R1 37.0) R1)

      

    (if(and (< D1 (* R1 2)) (< (* R1 2) D2))

      (progn    

        (setvar "osmode" 0)

        (command "_linetype" "_s" "bylayer" "")

        (command "_lweight" 0.30 "")

        (command "_circle" '(0 0) "_d" D1 "")

        (command "_circle" '(0 0) "_d" D2 "")


        (setq pt0 '(0.0 0.0))

        (setq pt1 (mapcar '+ pt0(list 0.0 R1)))

        (setq pt2 (mapcar '+ pt0(list 0.0 D2)))

        (command "_xline" pt1 pt2 "")

        (command "_rotate" pt1 "" pt1 45 "")

        (command "_xline" pt1 pt2 "")

        (command "_rotate" pt1 "" pt1 -45 "")


        (setq pt3 (mapcar '+ pt0(list D2 (+ D2 5))))

        (setq pt4 (mapcar '+ pt0(list (- 0.0 D2) (+ D2 10))))    

        (setq pt5 (mapcar '+ pt0(list 0.0 (/ D2 2))))  

        (command "_trim" pt3 pt4 "" pt5 "")


        (setq pt6 (mapcar '+ pt0(list 0.0 (- 0.0 (/ D2 2)))))    

        (setq pt7 (mapcar '+ pt0(list (- 0.0 D2) (+ D2 10))))  

        (command "_trim" pt6 "" pt3 pt7 "")


        (setq pt8 (mapcar '+ pt0(list D2 R1)))  

        (command "_xline" pt1 pt8 "")

        (setq del_1 (entlast))


        (setq pt9 (mapcar '+ pt0(list (* 10 D2) (- 0.0 (+ D2 5)))))  

        (setq pt10 (mapcar '+ pt0(list 0.0 (- 0.0 (+ D2 10))))) 

        (command "_trim" del_1 "" pt9 pt10 "")


        (setq pt11 (mapcar '+ pt0(list 0.0 (- 0.0 (+ D2 5)))))  

        (setq pt12 (mapcar '+ pt0(list (- 0.0 (* 10 D2)) (- 0.0 (+ D2 10)))))  

        (command "_trim" del_1 "" '(0 -105) '(-1000 -110) "")


        (command "_erase" del_1 "")

        

        (command "_linetype" "_s" "JIS_02_4.0" "")

        (command "_lweight" 0.05 "")


        (setq pt13 (mapcar '+ pt0(list 0.0 (- 0.0 (+ (/ D2 2) 5)))))

        (setq pt14 (mapcar '+ pt0(list 0.0 (+ 0.0 (+ (/ D2 2) 5))))) 

        (command "_line" pt13 pt14 "")


        (setq pt13 (mapcar '+ pt0(list (- 0.0 (+ (/ D2 2) 5)) 0.0 )))

        (setq pt14 (mapcar '+ pt0(list (+ 0.0 (+ (/ D2 2) 5)) 0.0 )))   

        (command "_line" pt13 pt14 "")

        

        (command "_linetype" "_s" "bylayer" "")

        (setvar "osmode" 1)

        

        )

      (alert "Error! D1 < 2*R1, 2*R1 < D2")

      )

    )




    Твоя задача протестировать эту программу. При этом нужно вводить не только корректные данные, но и откровенно ошибочные (чтобы посмотреть как программа на них реагирует).


    Что касается пунктов 4 и 5-ть, то  мне они не знакомы, поэтому возможно будет задержки выполнения. Посмотрим.

  • Юра Абрикосов
    29 January at 07:05 |

    4-й сделал.

    Вид -> Панели   

    создаём новую панель


    image


    Копируем любую пиктограмму из соседних панелей. Меняем эмблему и макрос:


    image


    Файл ".fas" делается путём компиляции файла ".lsp" с параметром " 'st"


    image


    Перезапускаем автокад и в результате получается:


    image