Ошибка неверный тип аргумента file nil

Перейти к содержимому раздела

Форумы CADUser

Информационный портал для профессионалов в области САПР

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Дерево сообщений Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 21 апреля 2008г. 07:15:58

  • la_vanille_ciel
  • Восстановленный участник
  • На форуме с 21 апреля 2008г.
  • Сообщений: 2
  • Спасибо: 0

Тема: ; ошибка: неверный тип аргумента: File nil

(vmon)
(defun C:Shtamp2a ()
  (setvar «cmdecho» 0)
  (setq osm (getvar «osmode»))
  (setq Lay (getvar «Clayer»))
  (setvar «clayer» «0»)
  (setq curtab (tblobjname «STYLE» «STANDARD»))
  (setq ed (entget curtab))                                   ;Установка в стиле STANDARD
  (setq ed (subst (cons 3 «simplex.shx») (assoc 3 ed) ed ))  ;файла шрифта simplex
  (setq ed (subst (cons 41 0.8) (assoc 41 ed) ed ))           ;сжатия 0.8
  (setq ed (subst (cons 40 0.0) (assoc 40 ed) ed ))           ;высота текста=0
  (setq ed (subst (cons 50 0.261799) (assoc 50 ed) ed ))      ;и угла наклона 15
  (entmod ed)
  (setq txt (getvar «textstyle»))
  (setvar «textstyle» «standard»)
  (setq Dog «»)
  (if (findfile «C:\Shtamp\shtamp.txt»)
  (progn
    (setq FL (open «C:\Shtamp\shtamp.txt» «r»))
    (setq Dog (read-line FL))
   ))
  (setq OTV «Y»)
  (IF (= (strlen Dog) 0)
  (progn
    (textscr)
    (princ «Не заполнены данные для штампа!!! Необходимо выполнить ЗАПОЛНЕНИЕ ШТАМПА.n»)
    (setq Otv (getstring «Вставить пустой штамп? <Y> : «))
    (if (or (= otv «») (= otv «y»))
      (setq OTV «Y»)
     )
     (graphscr)
    (if (= OTV «Y»)
    (princ
        (setq M (getstring «Масштабный кофициент (1): «))
        (if (= M «»)
          (setq M «1»)
        )
       (setq T0 (getpoint «n Покажите точку вставки штампа :»))
        (setvar «osmode» 0)
        (command «_insert» «sh2a» T0 M M «0»)
        (setq M (atof M))
        (command «_text» (mapcar ‘- T0 (list (* 45 M) (* 4 M))) (* 3 M) «0» «Формат А»)
    ))   
  ))
  (if  (> (strlen Dog) 0)
  (progn
    (setq M (getstring «Масштабный кофициент(1) : «))
        (if (= M «»)
          (setq M «1»)
        )
          (setq T0 (getpoint «n Покажите точку вставки штампа :»))
        (setvar «osmode» 0)
        (command «_insert» «sh2a» T0 M M «0»)
        (setq M (atof M))
        (command «_text» (mapcar ‘- T0 (list (* 45 M) (* 4 M))) (* 3 M) «0» «Формат А»)
        (setq Dog (strcase Dog))
        (setq T1 (polar T0 (/ pi 2) (* 32.5 M)))
        (setq T1 (polar T1 pi 60))
        (command «_text» «_m» T1 (* 5 M) «0» Dog)
        (setq Pr (read-line FL))
        (setq Ob (read-line FL))
          (setq Name (read-line FL));Ncontr
        (setq D (Strlen Name))
        (setq T1 (polar T0 pi (* 164 M)))
        (setq T1 (polar T1 (/ pi 2) (* 21 M)))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )

            (setq Name (read-line FL));gip
        (setq D (Strlen Name))
        (setq T1 (polar T1 (* (/ pi 2) 3) 5))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )
        (setq Name (read-line FL));Nachotd
        (setq D (Strlen Name))
        (setq T1 (polar T1 (* (/ pi 2) 3) (* 5 M)))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )
        (setq Name (read-line FL));Fio
        (setq D (Strlen Name))
        (setq T1 (polar T1 (* (/ pi 2) 3) (* 10 M)))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )
    ))
  (setvar «clayer» Lay)
  (setvar «textstyle» txt)
  (setvar «osmode» osm)
  (setvar «cmdecho» 1)
)
Вот этот код отвечает за вставку штампов и почему-то, с некоторых пор, после указания точки вставки Автокад выдает ошибку о неверном типе аргумента. Что нужно исправить?
Спасибо.

#2 Ответ от Victor 21 апреля 2008г. 10:48:10

  • Victor
  • Восстановленный участник
  • На форуме с 26 марта 2007г.
  • Сообщений: 270
  • Спасибо: 0

Re: ; ошибка: неверный тип аргумента: File nil

А этот файл у вас есть C:Shtampshtamp.txt ?

#3 Ответ от Fatty 21 апреля 2008г. 20:02:59

  • Fatty
  • Восстановленный участник
  • На форуме с 30 мая 2006г.
  • Сообщений: 989
  • Спасибо: 0

Re: ; ошибка: неверный тип аргумента: File nil

> la_vanille_ciel
Насколько мне известно чаще такая ошибка выскакивает
когда данный блок отсутствует
Я бы добавил в код проверку на наличие блока
в текущем рисунке, строку:

(command "_.insert" "sh2a" T0 M M "0")

заменить на выражение:

(if (tblsearch "block" "sh2a")
(command "_.insert" "sh2a" T0 M M "0")
(alert "Блок "sh2a" в данном рисунке отсутствует")
)

~’J’~

#4 Ответ от la_vanille_ciel 23 апреля 2008г. 06:55:33

  • la_vanille_ciel
  • Восстановленный участник
  • На форуме с 21 апреля 2008г.
  • Сообщений: 2
  • Спасибо: 0

Re: ; ошибка: неверный тип аргумента: File nil

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

Сообщения 4

Тему читают:

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Visual LISP, AutoLISP and General Customization


Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.


Showing results for 


Search instead for 

Did you mean: 


  • Back to forum


  • Previous

  • Next

simhansharath

4975 Views, 4 Replies

‎05-24-2017

10:17 PM

Error: bad argument type: FILE nil


Error: bad argument type: FILE nil
Cannot invoke (command) from *error* without prior call to (*push-error-using-command*).
Converting (command) calls to (command-s) is recommended.firecad error.PNG


  • Back to forum


  • Previous

  • Next

4 REPLIES 4

Ranjit.Singh

‎05-24-2017

10:29 PM

That occurs when the called function results in an error and the error function is calling command. Change the command call to command-s in error function. I would also recommend commenting out the error function and running the routine. This will allow the calling function to break at error and return the actual error message.

If all that is confusing then post your code.

Kent1Cooper

‎05-25-2017

06:07 AM

Those are two different things.  The second part is as @Ranjit.Singh describes.  The first part would be from some function that is expecting to be given a file to work with, but is being given nil instead.  That could be from a variable that does not get set, or one whose name is misspelled where it is given to that function, or something like a (findfile) function that is looking for a file that does not exist, or probably some other reasons.

Kent Cooper, AIA

john.uhden

‎05-25-2017

06:44 PM

Could it be as simple as not setting a symbol to a file pointer, as in (setq fp (open file «w»))?

You can’t write to a file named by a string, without opening it first.  Nor can you in a read operation.

John F. Uhden

nache.costin

‎10-24-2019

12:03 AM

here i am at the end of 2019 with this **** of a message. After 4 hours i found an answer for my problem.

NIL is referring to some stupid image added as xref or inserted.  Removed the image or detach it and the error is gone


  • Back to forum


  • Previous

  • Next

Visual LISP, AutoLISP and General Customization


Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for 


Search instead for 

Did you mean: 


  • Back to forum


  • Previous

  • Next

simhansharath

4503 Views, 4 Replies

‎05-24-2017

10:17 PM

Error: bad argument type: FILE nil

Error: bad argument type: FILE nil
Cannot invoke (command) from *error* without prior call to (*push-error-using-command*).
Converting (command) calls to (command-s) is recommended.firecad error.PNG


  • Back to forum


  • Previous

  • Next

4 REPLIES 4

Ranjit.Singh

‎05-24-2017

10:29 PM

That occurs when the called function results in an error and the error function is calling command. Change the command call to command-s in error function. I would also recommend commenting out the error function and running the routine. This will allow the calling function to break at error and return the actual error message.

If all that is confusing then post your code.

Kent1Cooper

‎05-25-2017

06:07 AM

Those are two different things.  The second part is as @Ranjit.Singh describes.  The first part would be from some function that is expecting to be given a file to work with, but is being given nil instead.  That could be from a variable that does not get set, or one whose name is misspelled where it is given to that function, or something like a (findfile) function that is looking for a file that does not exist, or probably some other reasons.

Kent Cooper, AIA

john.uhden

‎05-25-2017

06:44 PM

Could it be as simple as not setting a symbol to a file pointer, as in (setq fp (open file «w»))?

You can’t write to a file named by a string, without opening it first.  Nor can you in a read operation.

John F. Uhden

nache.costin

‎10-24-2019

12:03 AM

here i am at the end of 2019 with this **** of a message. After 4 hours i found an answer for my problem.

NIL is referring to some stupid image added as xref or inserted.  Removed the image or detach it and the error is gone


  • Back to forum


  • Previous

  • Next

Перейти к содержимому раздела

Форумы CADUser

Информационный портал для профессионалов в области САПР

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Дерево сообщений Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 21 апреля 2008г. 07:15:58

  • la_vanille_ciel
  • Восстановленный участник
  • На форуме с 21 апреля 2008г.
  • Сообщений: 2
  • Спасибо: 0

Тема: ; ошибка: неверный тип аргумента: File nil

(vmon)
(defun C:Shtamp2a ()
  (setvar «cmdecho» 0)
  (setq osm (getvar «osmode»))
  (setq Lay (getvar «Clayer»))
  (setvar «clayer» «0»)
  (setq curtab (tblobjname «STYLE» «STANDARD»))
  (setq ed (entget curtab))                                   ;Установка в стиле STANDARD
  (setq ed (subst (cons 3 «simplex.shx») (assoc 3 ed) ed ))  ;файла шрифта simplex
  (setq ed (subst (cons 41 0.8) (assoc 41 ed) ed ))           ;сжатия 0.8
  (setq ed (subst (cons 40 0.0) (assoc 40 ed) ed ))           ;высота текста=0
  (setq ed (subst (cons 50 0.261799) (assoc 50 ed) ed ))      ;и угла наклона 15
  (entmod ed)
  (setq txt (getvar «textstyle»))
  (setvar «textstyle» «standard»)
  (setq Dog «»)
  (if (findfile «C:Shtampshtamp.txt»)
  (progn
    (setq FL (open «C:Shtampshtamp.txt» «r»))
    (setq Dog (read-line FL))
   ))
  (setq OTV «Y»)
  (IF (= (strlen Dog) 0)
  (progn
    (textscr)
    (princ «Не заполнены данные для штампа!!! Необходимо выполнить ЗАПОЛНЕНИЕ ШТАМПА.n»)
    (setq Otv (getstring «Вставить пустой штамп? <Y> : «))
    (if (or (= otv «») (= otv «y»))
      (setq OTV «Y»)
     )
     (graphscr)
    (if (= OTV «Y»)
    (princ
        (setq M (getstring «Масштабный кофициент (1): «))
        (if (= M «»)
          (setq M «1»)
        )
       (setq T0 (getpoint «n Покажите точку вставки штампа :»))
        (setvar «osmode» 0)
        (command «_insert» «sh2a» T0 M M «0»)
        (setq M (atof M))
        (command «_text» (mapcar ‘- T0 (list (* 45 M) (* 4 M))) (* 3 M) «0» «Формат А»)
    ))   
  ))
  (if  (> (strlen Dog) 0)
  (progn
    (setq M (getstring «Масштабный кофициент(1) : «))
        (if (= M «»)
          (setq M «1»)
        )
          (setq T0 (getpoint «n Покажите точку вставки штампа :»))
        (setvar «osmode» 0)
        (command «_insert» «sh2a» T0 M M «0»)
        (setq M (atof M))
        (command «_text» (mapcar ‘- T0 (list (* 45 M) (* 4 M))) (* 3 M) «0» «Формат А»)
        (setq Dog (strcase Dog))
        (setq T1 (polar T0 (/ pi 2) (* 32.5 M)))
        (setq T1 (polar T1 pi 60))
        (command «_text» «_m» T1 (* 5 M) «0» Dog)
        (setq Pr (read-line FL))
        (setq Ob (read-line FL))
          (setq Name (read-line FL));Ncontr
        (setq D (Strlen Name))
        (setq T1 (polar T0 pi (* 164 M)))
        (setq T1 (polar T1 (/ pi 2) (* 21 M)))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )

            (setq Name (read-line FL));gip
        (setq D (Strlen Name))
        (setq T1 (polar T1 (* (/ pi 2) 3) 5))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )
        (setq Name (read-line FL));Nachotd
        (setq D (Strlen Name))
        (setq T1 (polar T1 (* (/ pi 2) 3) (* 5 M)))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )
        (setq Name (read-line FL));Fio
        (setq D (Strlen Name))
        (setq T1 (polar T1 (* (/ pi 2) 3) (* 10 M)))
        (if (> d 8)
          (Command «_Text» «_f» T1 (polar T1 0 (* 18 M)) (* 3 M) Name)   
             (Command «_Text» T1 (* 3 M) «0» Name)
        )
    ))
  (setvar «clayer» Lay)
  (setvar «textstyle» txt)
  (setvar «osmode» osm)
  (setvar «cmdecho» 1)
)
Вот этот код отвечает за вставку штампов и почему-то, с некоторых пор, после указания точки вставки Автокад выдает ошибку о неверном типе аргумента. Что нужно исправить?
Спасибо.

#2 Ответ от Victor 21 апреля 2008г. 10:48:10

  • Victor
  • Восстановленный участник
  • На форуме с 26 марта 2007г.
  • Сообщений: 270
  • Спасибо: 0

Re: ; ошибка: неверный тип аргумента: File nil

А этот файл у вас есть C:Shtampshtamp.txt ?

#3 Ответ от Fatty 21 апреля 2008г. 20:02:59

  • Fatty
  • Восстановленный участник
  • На форуме с 30 мая 2006г.
  • Сообщений: 989
  • Спасибо: 0

Re: ; ошибка: неверный тип аргумента: File nil

> la_vanille_ciel
Насколько мне известно чаще такая ошибка выскакивает
когда данный блок отсутствует
Я бы добавил в код проверку на наличие блока
в текущем рисунке, строку:

(command "_.insert" "sh2a" T0 M M "0")

заменить на выражение:

(if (tblsearch "block" "sh2a")
(command "_.insert" "sh2a" T0 M M "0")
(alert "Блок "sh2a" в данном рисунке отсутствует")
)

~’J’~

#4 Ответ от la_vanille_ciel 23 апреля 2008г. 06:55:33

  • la_vanille_ciel
  • Восстановленный участник
  • На форуме с 21 апреля 2008г.
  • Сообщений: 2
  • Спасибо: 0

Re: ; ошибка: неверный тип аргумента: File nil

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

Сообщения 4

Тему читают: 1 гость

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться


Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Страница 5 из 18

  1. Форумчанин

    а если их создать? по-моему где то встречал программку для этих целей…
    посмотрел у Map3d тоже присутствует формат mrSid(*.sid) для вставки изображений

    #81

  2. Форумчанин

    Регистрация:
    15 июн 2012
    Сообщения:
    610
    Симпатии:
    83
    Адрес:

    Краснодар

    в глобал мапер открыл — и о чудо все файлы как то открываються именно на своих местах (как для меня великая загадка)
    Остался вопрос как всё это чудо в автокад затянуть (если это возможно в обще) , если же нет то как перебить формат всему этому набору растров ?

    #82

  3. Форумчанин

    Файл —> Экспорт растра —> выбор необходимого формата

    #83

  4. Форумчанин

    Регистрация:
    15 фев 2011
    Сообщения:
    501
    Симпатии:
    302

    Файл-экспорт растра- выбираете нужный формат для экспорта и ставите галочку «создать файл привязки». Полученный файл привязки указываете через лисп Disney’я.
    Часто бывает полезно разбить растр на части. Для этого там же в настройках экспорта есть настройка сетки (указываете количество столбцов и строк).

    #84

  5. Форумчанин

    Регистрация:
    15 июн 2012
    Сообщения:
    610
    Симпатии:
    83
    Адрес:

    Краснодар

    огромное спасибо — буду пробывать

    #85

  6. Форумчанин

    Регистрация:
    23 ноя 2010
    Сообщения:
    49
    Симпатии:
    1

    При подгрузке растра выдает ошибку (ошибка: неверный тип аргумента: stringp nil)
    Текст таб файла:
    !Table
    !Version 300
    !Charset Neutral

    Definition Table
    File «62-2-239-120-А.tif»
    Type «RASTER»
    (2240000.000000, 480000.000000) (0, 0) Label «Pt 1»,
    (2241000.000000, 480000.000000) (4000, 0) Label «Pt 2»,
    (2241000.000000, 479000.000000) (4000, 4000) Label «Pt 3»,
    (2240000.000000, 479000.000000) (0, 4000) Label «Pt 4»
    CoordSys NonEarth Units «m» Bounds (2240000.000000, 479000.000000) (2241000.000000, 480000.000000)
    Units «m»

    Вложения:

    #86

  7. Форумчанин

    Регистрация:
    15 фев 2011
    Сообщения:
    501
    Симпатии:
    302

    У меня несколько предположений:
    1. Текущий слой на замке. Решается отключением блокировки.
    2. Расширение самого растра не тиф, а бмп. Решается заменой расширения в файле привязки.
    3. Имя растра отличается, например вместо 62-2-239-120-А имя 62-2-239-120-а. Решается групповым переименованием в Тотал Командере.
    Если файл не большой, то выкладывайте сам растр.

    #87

  8. Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.680
    Симпатии:
    2.399
    Адрес:

    Сибирь

    Илюха, надо всю связку, выложи и сам растр.

    #88

  9. Форумчанин

    Регистрация:
    23 ноя 2010
    Сообщения:
    49
    Симпатии:
    1

    Выкладываю файлы

    Вложения:

    • RASTR.rar
      Размер файла:
      9,4 МБ
      Просмотров:
      40

    #89

  10. Регистрация:
    6 фев 2013
    Сообщения:
    4
    Симпатии:
    0

    При попытке вставить растры получил такое:
    Команда: (Geo_load_image T) ; ошибка: Ошибка Automation. Недопустимый ключ
    Версия 2.1. Акад 2012
    При этом, если запускать команду и выбирать/загружать растр по одному, все вставляется, а если кучей, то нет :(

    #90

  11. Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.680
    Симпатии:
    2.399
    Адрес:

    Сибирь

    В файле лишние пробелы(в каждой строчкой перед Label, должен быть «один», а их там «два»), удали один, или скопируй ранее выложенное тобой содержимое файла tab на форуме(движок форума удаляет более одного пробела подряд), то всё заработает. ::wink24.gif::

    #91

  12. Регистрация:
    6 фев 2013
    Сообщения:
    4
    Симпатии:
    0

    Проблема оказалась в том, что в названии файлов присутствовали «запятые» — удалил их и пакетная вставка заработала… хотя странно — по одиночке вставлялось, а кучей нет..

    #92

  13. Форумчанин

    Регистрация:
    27 фев 2012
    Сообщения:
    29
    Симпатии:
    1
    Адрес:

    Москва

    Сейчас опять столкнулся с той же проблемой при создании привязки растра в TAB:
    пишет:
    ; ошибка: неверный тип аргумента: streamp nil
    Долго вспомнилал, что когда-то решил эту проблему и вспомнил)
    Вы были правы, Disney, там проблем в прописанной директории к растру. Подрядчик прислал файл Dwg с растрами в одной папке. А директория прописанная осталась старая с его компа, типа Z:/растры/топо/растр1.tiff
    В итоге проблема решается обновлением директории, чтобы она совпадала с фактическим расположением файла на моём компьютере. Тогда всё работает.

    #93

  14. Регистрация:
    15 мар 2013
    Сообщения:
    2
    Симпатии:
    0
  15. Форумчанин

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

    #95

  16. Форумчанин

    Регистрация:
    16 июн 2008
    Сообщения:
    35
    Симпатии:
    0
    Адрес:

    Москва

    Disney, подскажите пожалуйста, — корректно ли работает Ваша программа с AutoCad 2008 SP1 (англ. версия)? Вроде бы программа устанавливается, но команды в командной строке не срабатывают. Может быть проблема в каких-либо настройках?

    #96

  17. Форумчанин

    Регистрация:
    20 июн 2013
    Сообщения:
    46
    Симпатии:
    5

    Доброго времени суток !Сложилась такая ситуация — при вставке растрового изображения выбираю папку где оно расположено, а Автокад выдает фатальную ошибку.С чем это может быть связано и как это исправить ? Спасибо

    12121.JPG

    54453.JPG

    #97

  18. Регистрация:
    19 окт 2013
    Сообщения:
    1
    Симпатии:
    0

    Подскажите, пожалуйста в чем у меня проблема с подгрузкой. Использую команду (Geo_load_image «One») после выбора растра с привязкой tab (см. вложение) ACad виснит (не отвечает). И так более двух часов… и т.д…. может я мало жду? :) Версию программы использую 2.1.

    Вложения:

    • 493.rar
      Размер файла:
      1,2 МБ
      Просмотров:
      8

    #98

  19. Форумчанин

    Регистрация:
    26 окт 2013
    Сообщения:
    16
    Симпатии:
    38
    Адрес:

    Самара

    Всем доброго времени суток. Имеется привязанный растр (*.tif+*.tab). Можно как-нить использовать tab, чтобы растр лег туда, куда он и привязан? Если делать через вставка-вхождение растрового изображения , то нужно либо указывать координаты точки вставки либо посредством указания на экране, либо непосредственно ввод с клавиатуры. Получается, что файл привязки tab не используется…
    Решение: программа в 18 посте

    Здравствуйте. Отлично работает штука! :) я так понял, что она преобразовывает в СК95, если геопривязка в WGS… а возможно реализовать преобразование в МСК по известным параметрам перехода?

    #99

  20. Команда форума
    Форумчанин

    Регистрация:
    18 май 2007
    Сообщения:
    21.049
    Симпатии:
    6.694
    Адрес:

    Россия

    Приложение в автозагрузке, какой командой вызвать не понимаю. Make находит. Автокад 2013

    #100

Страница 5 из 18

Поделиться этой страницей

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

1

08.11.2015, 21:43. Показов 9720. Ответов 21


Здравствуйте! Необходимо реализовать вывод и ввод в файлы. Программа чертит заданную по условию фигуру и проверяет попадает ли точка в заштрихованную область. Пользователь может выбрать вводить ли ему точку самому (с клавиатуры), либо ввести точку из файла (где я и застряла). Точка введённая пользователем с клавиатуры должна быть записана в файл (тут тоже не лучше). В общем не получается у меня с файлами работать(

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

08.11.2015, 21:43

Ответы с готовыми решениями:

Работа с файлом
Добрый вечер.
Нужна помощь с задачкой.
Переписать содержимое исходного файла в другой текстовый…

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

Пятнадцать трапеций,…

Программа в AutoLISP
Известна длинна окружности. Найти площадь круга, ограниченного этой окружностью.

Запуск AutoLISP
Как запустить AutoLISP в AutoCad&quot;e. Я выбираю Сервис=Приложения=… и в открывшемся окне на диске…

21

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

08.11.2015, 21:53

2

В чем проблема-то?

0

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

08.11.2015, 21:58

 [ТС]

3

Не видит файл. (чтение)

0

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

08.11.2015, 22:04

4

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

Не видит файл

Так покажи, автокад курсы экстрасенсов не проходил, он работает только в каталогах, описанных в путях поддержки, либо при указании абсолютного пути

0

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

08.11.2015, 22:13

 [ТС]

5

Посмотрите для начала мой код. Вы тоже сейчас занимаетесь экстрасенсорикой. Там два варианта вывода из файла. Я бы хотела получить какою-нибудь помощь или пояснение по данному вопросу.

0

vlisp

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

08.11.2015, 23:17

6

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

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun FileToList (strfrom / f fk aa a )
  (setq f (findfile strfrom))
  (if (null f)
    (alert "Файл не найден")
    (progn
      (setq fk (open strfrom "r")
            aa (list)
            a  (read-line fk)
      )
      (while a
        (setq aa (append aa (list a)))
        (setq a (read-line fk))
      )
      (close fk)
    )
  )
  aa
)

1

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 00:32

 [ТС]

7

ошибка: неверный тип аргумента

0

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

09.11.2015, 01:08

8

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

ошибка: неверный тип аргумента

Это не вся строка, сложно было скопировать полностью? Как вызываете функцию FileToList?

0

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 01:27

 [ТС]

9

Я вызываю весь написанный мною код с самого начала. Вызов делаю через командную строку AutoCAD.
; ошибка: неверный тип аргумента: numberp: nil
и если вызвать вашу функцию отдельно таким же образом:
; ошибка: слишком мало аргументов

0

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

09.11.2015, 01:56

10

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

; ошибка: неверный тип аргумента: numberp: nil

эта ошибка означает что в оператор подставляется неинициализированная переменная

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

; ошибка: слишком мало аргументов

тут вообще все понятно… забыли подставить один или несколько аргументов… нужно быть внимательнее и пользоваться инструментами форматирования кода

0

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 02:14

 [ТС]

11

Цитата
Сообщение от vlisp
Посмотреть сообщение

эта ошибка означает что в оператор подставляется неинициализированная переменная

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

0

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

09.11.2015, 02:20

12

Если файл пустой, то функция вернет nil, иначе список строк, который все равно еще нужно преобразовывать в список чисел и уже из него брать число для подстановки… используйте средства отладки vlide для отлова ошибок

0

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 02:40

 [ТС]

13

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

0

551 / 875 / 144

Регистрация: 10.08.2015

Сообщений: 4,520

09.11.2015, 08:36

14

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

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

настройка путей поддержки избавляет от необходимости использовать абсолютные пути

0

Lambdik

1046 / 940 / 107

Регистрация: 04.11.2012

Сообщений: 972

Записей в блоге: 3

09.11.2015, 23:11

15

Virviglaz Ну как, получается? Слишком много букв лишних в этой теме.

Важно понимать, что для записи в файл используется два разных механизма, не зависящих друг от друга.
Один механизм, это работа с файлом. А второй, работа с потоком данных.
Ведь можно открыть файл и тут же закрыть его, ничего с ним не делая, не так ли?

Запись в файл сделаем пошагово.

Lisp
1
2
3
4
5
;;; Для начала немного прелюдии.
;; узнать местонахождения файла открытого рисунка
(setq address (getvar "dwgprefix"))
;; создать путь к целевому файлу
(setq file-path (getfiled "Выбрать/Создать файл для записи" address "txt" 1))
Lisp
1
2
3
4
5
6
7
;;; А теперь работаем с файлом.
;; открыть файл на дозапись
(setq descriptor (open file-path "a"))
;; записать координату [используем поток данных]
(prin1 '(5.2 8.1 0.0) descriptor)
;; закрыть файл
(close descriptor)
Lisp
1
2
3
4
5
6
;; можем повторить, только теперь учтём перенос строки
(setq descriptor (open file-path "a"))
;; следующая координата
(print '(4.6 2.9 0.0) descriptor)
;; закрыли
(close descriptor)

Считывание из файла.

Lisp
1
2
3
4
5
6
7
8
;; открыть файл на чтение
(setq descriptor (open file-path "r"))
;; считать строку
(read-line descriptor)
;; считать следующую строку, если её там нет - вернёт nil
(read-line descriptor)
;; закрыть файл
(close descriptor)

Здесь полезная информация.

2

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

10.11.2015, 04:13

 [ТС]

16

Цитата
Сообщение от Lambdik
Посмотреть сообщение

Ну как, получается?

Пока нет. Большое спасибо за ссылку. Итак,из файла мы считываем строку, которая содержит координаты точки. В дальнейшем, чтобы их использовать мы должны как-то преобразовать строку в список. Из идей только эта: разбить саму строку на подстроки, которые и объединить в список. (Надо/не надо; Верно/ не верно???)
P.S. Ранее хотелось сделать так, чтобы считывалось по одной точке из файла за каждый вызов функции. Ну а то что программа вообще увидела файл будем считать успехом.

0

Lambdik

1046 / 940 / 107

Регистрация: 04.11.2012

Сообщений: 972

Записей в блоге: 3

10.11.2015, 10:34

17

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

мы должны как-то преобразовать строку в список. Из идей только эта: разбить саму строку на подстроки, которые и объединить в список.

Функция read читает из строки до первого пробела.

Lisp
1
2
3
(setq coordinate "(5.2 8.1 0.0)")
;; скобки там уже есть, потому просто читаем
(read coordinate)

Функции для работы со строками.

2

Virviglaz

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

16.11.2015, 06:00

 [ТС]

18

Lambdik, вы не совсем поняли мой последний вопрос, но для начала я покажу что у меня вообще получилось

Lisp
1
2
3
4
5
6
7
8
(setq p1 (getpoint "Введите координaты любой точки через запятую:"))
    )
;;запись в файл координат, введённых пользователем с клавиатуры
 (progn
(setq FILE (open "d:user.txt" "a"))
(prin1 p1   FILE)
(close FILE)
 )

Если с записью всё хорошо, то с выводом будет хуже:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(setq answer (getstring "n Ввести точку вручную или из файла? <В/Ф>"));ветвление на различные способы ввода
  (if (or (= answer "Ф")(= answer "ф"))
   (progn 
(setq FILE (open "d:points.txt"  "r"))
(setq p2 (read-line FILE))
(setq p1 (list))
 
(while (/= p2 nil)
(setq p1 (append p1 (list p2))) ;;попытка что-то сделать с полученной строкой
(setq p2 (read-line FILE))
  )
(close FILE)

Программа видит и читает файл. Загвоздка в условии. Это задача на определение вхождения точки в заштрихованную область. В моём случае областью является круг с центром в начале координат (радиус = 2). В круге есть вертикально расположенный прямоугольник (высота = 2, ширина = 1). Я писала проверку для точки введённой с клавиатуры. Выглядит она так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(setq x (car p1)) ;; разбиваем нашу точку на отдельные координаты, чтобы подставить в уравнение
  (setq y (cadr p1))
  (setq Rad 4)
  (setq r (+ (expt x 2) (expt y 2)))
    (
     if (and (<= r  Rad) (or (<= x 0) (>= x 1))) ;;уравнение окружности с центром в нач. коорд. + учёт прямоугольн.
      (progn
    (command "_.Color" "61")
    
      (SetVar "PDMODE" 34)
      (SetVar "PDSIZE" 0)
      (command "_.Point" p1 )
    
      (command "_.Text" p1  "0.1" "0" "Попал")
      )
      (progn
       (command "_.Color" "61");; всякая красота для оповещения пользователя
       (SetVar "PDMODE" 34)
       (SetVar "PDSIZE" 0)
      (command "_.Point" p1 )
       (command "_.Text" p1  "0.1" "0" "Не попал")))

Для точки введённой с клавиатуры проверка работает. Как быть с точкой которую мы считали (строку по сути дела)? Ведь для проверки необходимо как-то преобразовать строку в список. Вот на этом я и застряла. Может надо в принципе переписать как-то код?

0

Lambdik

1046 / 940 / 107

Регистрация: 04.11.2012

Сообщений: 972

Записей в блоге: 3

16.11.2015, 22:50

19

Virviglaz Очень рад что стараетесь учить, это я одобряю. Могу помочь с типами данных.
Преобразуем строку в список:

Lisp
1
2
3
4
(setq string "123.0 45.0 0.0")
(read (strcat "(" string ")"))
 
=> (123.0 45.0 0.0)

То есть если в файле записаны координаты без скобок, а просто числа. То считываем из файла, сцепляем со скобками и применяем read. Всё просто.
А на счёт попадания в область, так это уже геометрия.

Добавлено через 8 часов 36 минут
И ещё, функция command принимает аргументы как списочного, так и строкового типа. Чтобы не делать лишних преобразований.

Lisp
1
2
3
(command "_.line" "0,0,0" "5,7,0" "")
 
(command "_.line" '(0.0 0.0 0.0) '(5.0 -7.0 0.0) "")

1

Virviglaz

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

18.11.2015, 00:52

 [ТС]

20

Я сдаюсь

Lisp
1
2
3
(setq FILE (open "d:points.txt"  "r"))
(setq p2 (read-line FILE))
(setq p1(read(strcat "(" p2 ")")))

; ошибка: неверный тип аргумента: numberp: nil
и ещё много много много разных вариантов и команд.

0

error: bad argument type: numberp: nil

error: bad argument type: numberp: nil

2

Creating an autolisp program to add a threaded hole to a selected object, the program is as follows:

; Meghan Hendricks
; HOLETHREAD.LSP
;
(defun c:HOLETHREAD ()
(setq scmde (getvar «cmdecho»))
(setvar «cmdecho» 0)
(setq sblip (getvar «blipmode»))
(setvar «blipmode» 0)
(setq sosmd (getvar «osmode»))
(setvar «osmode» 0)
(setq 3dosmd (getvar «3dosmode»))
(setvar «3dosmode» 0)
(setq dyucs (getvar «ucsdetect»))
(setvar «ucsdetect» 0)
(setq ccolor (getvar «cecolor»))
(setq e1 (entsel «nselect the object»))
(setvar «osmode» 1)
(setq pt1 (getpoint «nEnter location of new coordinate system: «))
(setq pt2 (getpoint «nEnter location of new x axis: «))
(setq pt3 (getpoint «nEnter location of new y axis: «))
(command «ucs» 3 pt1 pt2 pt3)
(setvar «osmode» 0)

(setvar «blipmode» 1)
(setq pt4 (getpoint «nEnter location of center of the hole on the surface: «))
(setvar «blipmode» 0)
(setq D1 (getreal «nInput Diameter of the hole: «))
(setq L1 (getreal «nInput depth of the hole (positive z direction): «))
(setq c (getstring «nColor of hole»))
(command «color» c)
(command «cylinder» pt4 D1 L1)
(setq e2 (entlast))

(if (>= h 0)
(progn ;- z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (- (* D1 0.1))))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (- (* D1 0.2))))
(setq pt8 (list (car pt4) (cadr pt4) (- (* D1 0.1))))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
)
(progn ;+z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D2 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (* D1 0.1)))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (* D1 0.1)))
(setq pt8 (list (car pt4) (cadr pt4) (* D1 0.1)))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
))
(command «subtract» e1 «» e6 «»)

(command «ucs» «p»)
(command «vpoint» (list 1 -1 1))
(command «vscurrent» 2) ;2d wireframe

(setvar «cecolor» ccolor)
(setvar «blipmode» sblip)
(setvar «cmdecho» scmde)
(setvar «osmode» snp)
(setvar «3dosmode» 3dosmd)
(setvar «ucsdetect» dyucs)
)

the program gets as far as creating the cylinder or diameter of D1 and then i get the error

«error: bad argument type: numberp: nil»

hendrimE2F6C

2017-03-08

01:08:54

1

R2 is not being set, unless it’s coming from somewhere else not shown in this code.

Kent1Cooper

Expert Elite

2017-03-08

03:02:34

2

Creating an autolisp program to add a threaded hole to a selected object, the program is as follows:

; Meghan Hendricks
; HOLETHREAD.LSP
;
(defun c:HOLETHREAD ()
(setq scmde (getvar «cmdecho»))
(setvar «cmdecho» 0)
(setq sblip (getvar «blipmode»))
(setvar «blipmode» 0)
(setq sosmd (getvar «osmode»))
(setvar «osmode» 0)
(setq 3dosmd (getvar «3dosmode»))
(setvar «3dosmode» 0)
(setq dyucs (getvar «ucsdetect»))
(setvar «ucsdetect» 0)
(setq ccolor (getvar «cecolor»))
(setq e1 (entsel «nselect the object»))
(setvar «osmode» 1)
(setq pt1 (getpoint «nEnter location of new coordinate system: «))
(setq pt2 (getpoint «nEnter location of new x axis: «))
(setq pt3 (getpoint «nEnter location of new y axis: «))
(command «ucs» 3 pt1 pt2 pt3)
(setvar «osmode» 0)

(setvar «blipmode» 1)
(setq pt4 (getpoint «nEnter location of center of the hole on the surface: «))
(setvar «blipmode» 0)
(setq D1 (getreal «nInput Diameter of the hole: «))
(setq L1 (getreal «nInput depth of the hole (positive z direction): «))
(setq c (getstring «nColor of hole»))
(command «color» c)
(command «cylinder» pt4 D1 L1)
(setq e2 (entlast))

(if (>= h 0)
(progn ;- z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (- (* D1 0.1))))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (- (* D1 0.2))))
(setq pt8 (list (car pt4) (cadr pt4) (- (* D1 0.1))))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
)
(progn ;+z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D2 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (* D1 0.1)))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (* D1 0.1)))
(setq pt8 (list (car pt4) (cadr pt4) (* D1 0.1)))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
))
(command «subtract» e1 «» e6 «»)

(command «ucs» «p»)
(command «vpoint» (list 1 -1 1))
(command «vscurrent» 2) ;2d wireframe

(setvar «cecolor» ccolor)
(setvar «blipmode» sblip)
(setvar «cmdecho» scmde)
(setvar «osmode» snp)
(setvar «3dosmode» 3dosmd)
(setvar «ucsdetect» dyucs)
)

the program gets as far as creating the cylinder or diameter of D1 and then i get the error

«error: bad argument type: numberp: nil»

hendrimE2F6C

2017-03-08

01:08:54

1

The problem I see is in…

(if (>= h 0)

because I don’t see where h has been set.  But it really doesn’t matter because if h is nil then (>= h 0) just returns nil.

So it must be something else unless you were expecting that (>= h 0).

john.uhden

Expert Elite

2017-03-08

01:31:03

0

I fixed that to read (>= D1 0)

And I am still getting 

«error: bad argument type: numberp: nil»

hendrimE2F6C

2017-03-08

02:49:45

1

R2 is not being set, unless it’s coming from somewhere else not shown in this code.

Kent1Cooper

Expert Elite

2017-03-08

03:02:34

1

Thank you

hendrimE2F6C

2017-03-08

03:22:13

0

i’m working on a similar program mine just adds a while loop what did you set D2 to cause you use it but it is not set

birdgirl11

2018-03-06

19:06:26

error: bad argument type: numberp: nil

error: bad argument type: numberp: nil

2

Creating an autolisp program to add a threaded hole to a selected object, the program is as follows:

; Meghan Hendricks
; HOLETHREAD.LSP
;
(defun c:HOLETHREAD ()
(setq scmde (getvar «cmdecho»))
(setvar «cmdecho» 0)
(setq sblip (getvar «blipmode»))
(setvar «blipmode» 0)
(setq sosmd (getvar «osmode»))
(setvar «osmode» 0)
(setq 3dosmd (getvar «3dosmode»))
(setvar «3dosmode» 0)
(setq dyucs (getvar «ucsdetect»))
(setvar «ucsdetect» 0)
(setq ccolor (getvar «cecolor»))
(setq e1 (entsel «nselect the object»))
(setvar «osmode» 1)
(setq pt1 (getpoint «nEnter location of new coordinate system: «))
(setq pt2 (getpoint «nEnter location of new x axis: «))
(setq pt3 (getpoint «nEnter location of new y axis: «))
(command «ucs» 3 pt1 pt2 pt3)
(setvar «osmode» 0)

(setvar «blipmode» 1)
(setq pt4 (getpoint «nEnter location of center of the hole on the surface: «))
(setvar «blipmode» 0)
(setq D1 (getreal «nInput Diameter of the hole: «))
(setq L1 (getreal «nInput depth of the hole (positive z direction): «))
(setq c (getstring «nColor of hole»))
(command «color» c)
(command «cylinder» pt4 D1 L1)
(setq e2 (entlast))

(if (>= h 0)
(progn ;- z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (- (* D1 0.1))))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (- (* D1 0.2))))
(setq pt8 (list (car pt4) (cadr pt4) (- (* D1 0.1))))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
)
(progn ;+z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D2 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (* D1 0.1)))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (* D1 0.1)))
(setq pt8 (list (car pt4) (cadr pt4) (* D1 0.1)))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
))
(command «subtract» e1 «» e6 «»)

(command «ucs» «p»)
(command «vpoint» (list 1 -1 1))
(command «vscurrent» 2) ;2d wireframe

(setvar «cecolor» ccolor)
(setvar «blipmode» sblip)
(setvar «cmdecho» scmde)
(setvar «osmode» snp)
(setvar «3dosmode» 3dosmd)
(setvar «ucsdetect» dyucs)
)

the program gets as far as creating the cylinder or diameter of D1 and then i get the error

«error: bad argument type: numberp: nil»

hendrimE2F6C

2017-03-08

01:08:54

1

R2 is not being set, unless it’s coming from somewhere else not shown in this code.

Kent1Cooper

Expert Elite

2017-03-08

03:02:34

2

Creating an autolisp program to add a threaded hole to a selected object, the program is as follows:

; Meghan Hendricks
; HOLETHREAD.LSP
;
(defun c:HOLETHREAD ()
(setq scmde (getvar «cmdecho»))
(setvar «cmdecho» 0)
(setq sblip (getvar «blipmode»))
(setvar «blipmode» 0)
(setq sosmd (getvar «osmode»))
(setvar «osmode» 0)
(setq 3dosmd (getvar «3dosmode»))
(setvar «3dosmode» 0)
(setq dyucs (getvar «ucsdetect»))
(setvar «ucsdetect» 0)
(setq ccolor (getvar «cecolor»))
(setq e1 (entsel «nselect the object»))
(setvar «osmode» 1)
(setq pt1 (getpoint «nEnter location of new coordinate system: «))
(setq pt2 (getpoint «nEnter location of new x axis: «))
(setq pt3 (getpoint «nEnter location of new y axis: «))
(command «ucs» 3 pt1 pt2 pt3)
(setvar «osmode» 0)

(setvar «blipmode» 1)
(setq pt4 (getpoint «nEnter location of center of the hole on the surface: «))
(setvar «blipmode» 0)
(setq D1 (getreal «nInput Diameter of the hole: «))
(setq L1 (getreal «nInput depth of the hole (positive z direction): «))
(setq c (getstring «nColor of hole»))
(command «color» c)
(command «cylinder» pt4 D1 L1)
(setq e2 (entlast))

(if (>= h 0)
(progn ;- z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (- (* D1 0.1))))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (- (* D1 0.2))))
(setq pt8 (list (car pt4) (cadr pt4) (- (* D1 0.1))))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
)
(progn ;+z direction
(setq pt5 (list (car pt4) (+ (cadr pt1) (* D2 0.4)) 0))
(setq pt6 (list (car pt4) (- (car pt1) D2) (* D1 0.1)))
(setq pt7 (list (car pt4) (+ (cadr pt1) (* D1 0.4)) (* D1 0.1)))
(setq pt8 (list (car pt4) (cadr pt4) (* D1 0.1)))
(command «3DPOLY» pt5 pt6 pt7 «c»)
(setq e3 (entlast))
(command «helix» pt8 (* 0.4 D1)(* 0.4 D1) «H» (* 0.41 R2) (+ (* 0.4 R2) L1))
(setq e4 (entlast))
(command «sweep» e3 «» «a» «n» e4 «»)
(setq e5 (entlast))
(command «subtract» e2 «» e5 «»)
(setq e6 (entlast))
))
(command «subtract» e1 «» e6 «»)

(command «ucs» «p»)
(command «vpoint» (list 1 -1 1))
(command «vscurrent» 2) ;2d wireframe

(setvar «cecolor» ccolor)
(setvar «blipmode» sblip)
(setvar «cmdecho» scmde)
(setvar «osmode» snp)
(setvar «3dosmode» 3dosmd)
(setvar «ucsdetect» dyucs)
)

the program gets as far as creating the cylinder or diameter of D1 and then i get the error

«error: bad argument type: numberp: nil»

hendrimE2F6C

2017-03-08

01:08:54

1

The problem I see is in…

(if (>= h 0)

because I don’t see where h has been set.  But it really doesn’t matter because if h is nil then (>= h 0) just returns nil.

So it must be something else unless you were expecting that (>= h 0).

john.uhden

Expert Elite

2017-03-08

01:31:03

0

I fixed that to read (>= D1 0)

And I am still getting 

«error: bad argument type: numberp: nil»

hendrimE2F6C

2017-03-08

02:49:45

1

R2 is not being set, unless it’s coming from somewhere else not shown in this code.

Kent1Cooper

Expert Elite

2017-03-08

03:02:34

1

Thank you

hendrimE2F6C

2017-03-08

03:22:13

0

i’m working on a similar program mine just adds a while loop what did you set D2 to cause you use it but it is not set

birdgirl11

2018-03-06

19:06:26

СООБЩЕНИЯ ОБ ОШИБКАХ

Ниже приведен список сообщений об ошибках, которые вы время от
времени увидите, когда вы пишете или выводите функции AutoLISPа. Если
функция «ERROR» определена не пользователем («ERROR» связана с nil),
ошибка является стандартной акцией , тогда эти сообщения выводятся
на экран дисплея в виде:

       error: message
       ошибка:сообщение

следом за прослеженнй функцией. Если существует пользователь-определитель
функции «ERROR», эта функция , называемая сообщением, пройдет только в
качестве аргумента.

Функции, отклоняемые AutoCADом

Аргументы проходящих в AutoCAD функций недействительны ( таких,
как функции GETVAR «NOSUCH» или SETVAR с только читаемыми
системными переменными), или функция, переходящая сама в себя,
недействительна в текущем контексте.

       bad argument type

Функция снабжена некорректным типом аргумента.( Например, вы не
можете взять STRLEN как целое.)

       bad association list

Список , объявленный функцией ASSOC, не состоит из «(нужная кла-
виша ) списков.

       bad entmod list

Аргумент, проходящий в функцию ENTMOD,имеет неподходящий вход
списка данных (так же , как возвращаемый функцией ENTGET).

       bad formal argument list

Когда вычислена эта функция, AutoLISP удалит список недействите-
льных формальных аргументов. Возможно, что функция вовсе не является
функцией , а в некоторой степени , список данных.

       bad function

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

       bad list

Неподходяще организован список, которым снабжена функция. Это мо-
жет случиться , если действительное число начинает десятичная точка;
в таком случае вы должны использовать введение 0.

       Bad node ( плохой участок памяти node)

Недействителен пункт , встречаемый функцией TYPE.

       bad node type in list

Недействителен пункт , встречаемый функцией FOREACH.

       bad point argument

Недостаточно определена точка ( список двух действительных чисел)
проходящая в функцию , ожидающую точку. Будьте внимательны, не начинайте
действительное число с десятичной точки; в таком случае, вы должны ис-
пользовать введение 0.

        bad point value

То же самое ,что выше.

        bool arg1 15

Первый аргумент функции BOOLE (Булева функция) должно быть це-
лое мажду 0 и 15.

       can't evaluate expression

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

       console break

Пользователь ввел CTRL C , в то время , когда функция обрабаты-
валась.

       divide by zero

Деление на нуль не разрешается.

       extra right paren

Встретились одни или более лишние правые скобки.

       file not open

Описатель файла для операции ввода-вывода (I/O) не такой , как
у доступного файла.

       Function cancelled ( снимаемая функция)

Пользователь нажал CTRL C в ответ на подсказку.

       function undefined for argument

Аргумента, обозначенного в функциях LOG или SQRT,нет в диапазоне.

       function undefined for real

Аргумент функции вместо целого числа обозначен действительным.
Например, (LSH val 1.2)

       improper argument

Аргумент в GCD отрицательное число или ноль.

       incorrect number of arguments to a function

Количество аргументов определяемой пользователем функции не соот-
ветствует количеству формальных аргументов, объявленных функцией DEFUN.

        insufficient node space

Недостаточен участок памяти node , для того чтобы вместить потреб-
ные действия. См. главу 6.

       insufficient string space

Недостаточен участок памяти heap , чтобы вместить строку текста.
См. главу 6.

       invalid argument

Неправильный тип аргумента или аргумент вне диапазона.

       invalid character

Выражение содержит неверный знак.

       invalid dotted pair

Точечные пары-это списки, содержащие два элемента, разде-
ленные конструкцией «space-period-space». Вы можете получить это сооб-
щение об ошибке , если вы начинаете действительное число с десятичной
точки; в таком случае вы должны использовать введение 0.

       LISPSTACK overflow (переполнение стека )

Стек AutoLISPа переполнен. Это происходит из-за чрезмерного
повторения функции или очень больших списков аргументов функции. Попы-
тайтесь увеличить среду LISPSTACK для переменных.

       misplaced dot

Это может иметь место , если действительное число начинает деся-
тичная точка; в таком случае вы должны использовать введение 0 .

       null function

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

       quit exit abort

Это результат вызова функций QUIT или EXIT. Эти функции сейчас
не используются в AutoLISPе.

       too few argyments

Слишком мало аргументов объявлено во встроенной функции

       too many arguments

Слишком много аргументов объявлено во встроенной функции.

       unexpected signal nnn

[ Назад ]
[ Оглавление ]

8 минут назад, newborn сказал:

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

Однозначно, блоком. Т.к., потом этот чертеж может редактироваться. Работать с кучей отрезков, имеющих фиксированное взаимное положение, — это ад.

Бывали случаи, когда отдельные проектировщики специально разбивали блоки и полилинии перед передачей заказчику, чтобы затруднить дальнейшую работу с исходниками. Не нужно такие решения тиражировать). Кроме того, используя блоки с атрибутами, можно сразу охватить и автоматизированное заполнение штампов.

12 минут назад, newborn сказал:

предложили создать программу для его автоматической отрисовки — т.е. автоматизации работы технолога + добавить актуальность на фоне перехода из автокада в нанокад.

Фишка в том, что написание лиспа — это автоматизация, но это решение универсальное для АС и NC, поэтому к переходу отношения не имеет. 

А предлагаемая мной выше тема с СПДС как раз может покрыть именно  это требование.

Кстати, там красиво решена и задача  оформления  форматок чертежа.

добавлено через 2 минуты

3 минуты назад, lidia.antipina.ru сказал:

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

Ну, чисто с т.з. академического интереса или обучающего процесса — почему бы и нет?)))

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

1

08.11.2015, 21:43. Показов 10281. Ответов 21


Студворк — интернет-сервис помощи студентам

Здравствуйте! Необходимо реализовать вывод и ввод в файлы. Программа чертит заданную по условию фигуру и проверяет попадает ли точка в заштрихованную область. Пользователь может выбрать вводить ли ему точку самому (с клавиатуры), либо ввести точку из файла (где я и застряла). Точка введённая пользователем с клавиатуры должна быть записана в файл (тут тоже не лучше). В общем не получается у меня с файлами работать(



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

08.11.2015, 21:43

Ответы с готовыми решениями:

Работа с файлом
Добрый вечер.
Нужна помощь с задачкой.
Переписать содержимое исходного файла в другой текстовый…

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

Пятнадцать трапеций,…

Программа в AutoLISP
Известна длинна окружности. Найти площадь круга, ограниченного этой окружностью.

Запуск AutoLISP
Как запустить AutoLISP в AutoCad&quot;e. Я выбираю Сервис=Приложения=… и в открывшемся окне на диске…

21

597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

08.11.2015, 21:53

2

В чем проблема-то?



0



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

08.11.2015, 21:58

 [ТС]

3

Не видит файл. (чтение)



0



597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

08.11.2015, 22:04

4

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

Не видит файл

Так покажи, автокад курсы экстрасенсов не проходил, он работает только в каталогах, описанных в путях поддержки, либо при указании абсолютного пути



0



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

08.11.2015, 22:13

 [ТС]

5

Посмотрите для начала мой код. Вы тоже сейчас занимаетесь экстрасенсорикой. Там два варианта вывода из файла. Я бы хотела получить какою-нибудь помощь или пояснение по данному вопросу.



0



vlisp

597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

08.11.2015, 23:17

6

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

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun FileToList (strfrom / f fk aa a )
  (setq f (findfile strfrom))
  (if (null f)
    (alert "Файл не найден")
    (progn
      (setq fk (open strfrom "r")
            aa (list)
            a  (read-line fk)
      )
      (while a
        (setq aa (append aa (list a)))
        (setq a (read-line fk))
      )
      (close fk)
    )
  )
  aa
)



1



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 00:32

 [ТС]

7

ошибка: неверный тип аргумента



0



597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

09.11.2015, 01:08

8

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

ошибка: неверный тип аргумента

Это не вся строка, сложно было скопировать полностью? Как вызываете функцию FileToList?



0



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 01:27

 [ТС]

9

Я вызываю весь написанный мною код с самого начала. Вызов делаю через командную строку AutoCAD.
; ошибка: неверный тип аргумента: numberp: nil
и если вызвать вашу функцию отдельно таким же образом:
; ошибка: слишком мало аргументов



0



597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

09.11.2015, 01:56

10

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

; ошибка: неверный тип аргумента: numberp: nil

эта ошибка означает что в оператор подставляется неинициализированная переменная

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

; ошибка: слишком мало аргументов

тут вообще все понятно… забыли подставить один или несколько аргументов… нужно быть внимательнее и пользоваться инструментами форматирования кода



0



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 02:14

 [ТС]

11

Цитата
Сообщение от vlisp
Посмотреть сообщение

эта ошибка означает что в оператор подставляется неинициализированная переменная

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



0



597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

09.11.2015, 02:20

12

Если файл пустой, то функция вернет nil, иначе список строк, который все равно еще нужно преобразовывать в список чисел и уже из него брать число для подстановки… используйте средства отладки vlide для отлова ошибок



0



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

09.11.2015, 02:40

 [ТС]

13

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



0



597 / 917 / 149

Регистрация: 10.08.2015

Сообщений: 4,815

09.11.2015, 08:36

14

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

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

настройка путей поддержки избавляет от необходимости использовать абсолютные пути



0



Lambdik

1048 / 942 / 107

Регистрация: 04.11.2012

Сообщений: 972

Записей в блоге: 3

09.11.2015, 23:11

15

Virviglaz Ну как, получается? Слишком много букв лишних в этой теме.

Важно понимать, что для записи в файл используется два разных механизма, не зависящих друг от друга.
Один механизм, это работа с файлом. А второй, работа с потоком данных.
Ведь можно открыть файл и тут же закрыть его, ничего с ним не делая, не так ли?

Запись в файл сделаем пошагово.

Lisp
1
2
3
4
5
;;; Для начала немного прелюдии.
;; узнать местонахождения файла открытого рисунка
(setq address (getvar "dwgprefix"))
;; создать путь к целевому файлу
(setq file-path (getfiled "Выбрать/Создать файл для записи" address "txt" 1))
Lisp
1
2
3
4
5
6
7
;;; А теперь работаем с файлом.
;; открыть файл на дозапись
(setq descriptor (open file-path "a"))
;; записать координату [используем поток данных]
(prin1 '(5.2 8.1 0.0) descriptor)
;; закрыть файл
(close descriptor)
Lisp
1
2
3
4
5
6
;; можем повторить, только теперь учтём перенос строки
(setq descriptor (open file-path "a"))
;; следующая координата
(print '(4.6 2.9 0.0) descriptor)
;; закрыли
(close descriptor)

Считывание из файла.

Lisp
1
2
3
4
5
6
7
8
;; открыть файл на чтение
(setq descriptor (open file-path "r"))
;; считать строку
(read-line descriptor)
;; считать следующую строку, если её там нет - вернёт nil
(read-line descriptor)
;; закрыть файл
(close descriptor)

Здесь полезная информация.



2



3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

10.11.2015, 04:13

 [ТС]

16

Цитата
Сообщение от Lambdik
Посмотреть сообщение

Ну как, получается?

Пока нет. Большое спасибо за ссылку. Итак,из файла мы считываем строку, которая содержит координаты точки. В дальнейшем, чтобы их использовать мы должны как-то преобразовать строку в список. Из идей только эта: разбить саму строку на подстроки, которые и объединить в список. (Надо/не надо; Верно/ не верно???)
P.S. Ранее хотелось сделать так, чтобы считывалось по одной точке из файла за каждый вызов функции. Ну а то что программа вообще увидела файл будем считать успехом.



0



Lambdik

1048 / 942 / 107

Регистрация: 04.11.2012

Сообщений: 972

Записей в блоге: 3

10.11.2015, 10:34

17

Цитата
Сообщение от Virviglaz
Посмотреть сообщение

мы должны как-то преобразовать строку в список. Из идей только эта: разбить саму строку на подстроки, которые и объединить в список.

Функция read читает из строки до первого пробела.

Lisp
1
2
3
(setq coordinate "(5.2 8.1 0.0)")
;; скобки там уже есть, потому просто читаем
(read coordinate)

Функции для работы со строками.



2



Virviglaz

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

16.11.2015, 06:00

 [ТС]

18

Lambdik, вы не совсем поняли мой последний вопрос, но для начала я покажу что у меня вообще получилось

Lisp
1
2
3
4
5
6
7
8
(setq p1 (getpoint "Введите координaты любой точки через запятую:"))
    )
;;запись в файл координат, введённых пользователем с клавиатуры
 (progn
(setq FILE (open "d:\user.txt" "a"))
(prin1 p1   FILE)
(close FILE)
 )

Если с записью всё хорошо, то с выводом будет хуже:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(setq answer (getstring "n Ввести точку вручную или из файла? <В/Ф>"));ветвление на различные способы ввода
  (if (or (= answer "Ф")(= answer "ф"))
   (progn 
(setq FILE (open "d:\points.txt"  "r"))
(setq p2 (read-line FILE))
(setq p1 (list))
 
(while (/= p2 nil)
(setq p1 (append p1 (list p2))) ;;попытка что-то сделать с полученной строкой
(setq p2 (read-line FILE))
  )
(close FILE)

Программа видит и читает файл. Загвоздка в условии. Это задача на определение вхождения точки в заштрихованную область. В моём случае областью является круг с центром в начале координат (радиус = 2). В круге есть вертикально расположенный прямоугольник (высота = 2, ширина = 1). Я писала проверку для точки введённой с клавиатуры. Выглядит она так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(setq x (car p1)) ;; разбиваем нашу точку на отдельные координаты, чтобы подставить в уравнение
  (setq y (cadr p1))
  (setq Rad 4)
  (setq r (+ (expt x 2) (expt y 2)))
    (
     if (and (<= r  Rad) (or (<= x 0) (>= x 1))) ;;уравнение окружности с центром в нач. коорд. + учёт прямоугольн.
      (progn
    (command "_.Color" "61")
    
      (SetVar "PDMODE" 34)
      (SetVar "PDSIZE" 0)
      (command "_.Point" p1 )
    
      (command "_.Text" p1  "0.1" "0" "Попал")
      )
      (progn
       (command "_.Color" "61");; всякая красота для оповещения пользователя
       (SetVar "PDMODE" 34)
       (SetVar "PDSIZE" 0)
      (command "_.Point" p1 )
       (command "_.Text" p1  "0.1" "0" "Не попал")))

Для точки введённой с клавиатуры проверка работает. Как быть с точкой которую мы считали (строку по сути дела)? Ведь для проверки необходимо как-то преобразовать строку в список. Вот на этом я и застряла. Может надо в принципе переписать как-то код?



0



Lambdik

1048 / 942 / 107

Регистрация: 04.11.2012

Сообщений: 972

Записей в блоге: 3

16.11.2015, 22:50

19

Virviglaz Очень рад что стараетесь учить, это я одобряю. Могу помочь с типами данных.
Преобразуем строку в список:

Lisp
1
2
3
4
(setq string "123.0 45.0 0.0")
(read (strcat "(" string ")"))
 
=> (123.0 45.0 0.0)

То есть если в файле записаны координаты без скобок, а просто числа. То считываем из файла, сцепляем со скобками и применяем read. Всё просто.
А на счёт попадания в область, так это уже геометрия.

Добавлено через 8 часов 36 минут
И ещё, функция command принимает аргументы как списочного, так и строкового типа. Чтобы не делать лишних преобразований.

Lisp
1
2
3
(command "_.line" "0,0,0" "5,7,0" "")
 
(command "_.line" '(0.0 0.0 0.0) '(5.0 -7.0 0.0) "")



1



Virviglaz

3 / 3 / 1

Регистрация: 21.10.2015

Сообщений: 92

18.11.2015, 00:52

 [ТС]

20

Я сдаюсь

Lisp
1
2
3
(setq FILE (open "d:\points.txt"  "r"))
(setq p2 (read-line FILE))
(setq p1(read(strcat "(" p2 ")")))

; ошибка: неверный тип аргумента: numberp: nil
и ещё много много много разных вариантов и команд.



0



  • Ошибка невозможно запросить shsh
  • Ошибка неверный тип аргумента 2d 3d точка nil
  • Ошибка невозможно записать файлы проверьте адреса результатов cinema 4d
  • Ошибка неверный суффикс инструкции для push
  • Ошибка невозможно записать файлы на диск