Написать комментарии к коду - Lisp
Формулировка задачи:
Помогите плс нужно написать комментарии к коду подсчет общий длины линии (для AutoCAD)
Листинг программы
- (if (not (= (substr (ver) 1 11) "Visual LISP")) (load "acad2006doc.lsp"))
- ;; Silent load.
- (princ)
- (defun c:an (/ string string1 string2 nums is num i vla_txt)
- (vl-load-com)
- (setq higth (getint "\nВведите высоту текста..."))
- (setq nums (getint "\nВведите стартовый номер..."))
- (setq is (getint "\nВведите кол-во..."))
- (setq string1 (getstring "\nВведите начало текста..."))
- (setq string2 (getstring "\nВведите окончание текста..."))
- (setq string (strcat string1 (rtos nums 2 0) string2))
- (setq vla_txt1
- (vla-addtext
- (vla-get-modelspace
- (vla-get-activedocument (vlax-get-acad-object))
- )
- string
- (vlax-3d-point
- (getpoint "\nУкажите точку вставки текста...")
- )
- higth;высота
- )
- )
- (while (< num is)
- (setq num (+ 1 nums ))
- (setq nums num)
- (setq string (strcat string1 (rtos nums 2 0) string2))
- vla_txt1
- (vla-addtext
- (vla-get-modelspace
- (vla-get-activedocument (vlax-get-acad-object))
- )
- string
- (vlax-3d-point
- (getpoint "\nУкажите точку вставки текста...")
- )
- higth;высота
- )
- );while
- )
- (defun C:Dlina (/ Nab Sum i Curve Param)
- (vl-load-com)
- (if (setq Nab (ssget))
- (progn
- (setq Sum 0 i 0 value 0)
- (repeat (sslength Nab)
- (setq Curve (vlax-ename->vla-object (ssname Nab i))
- i (1+ i)
- Param (vl-catch-all-apply 'vlax-curve-getEndParam
- (list Curve))
- )
- (if (not (vl-catch-all-error-p Param))
- (setq Sum (+ Sum (vlax-curve-getDistAtParam Curve
- Param)))
- )
- )
- )
- )
- (princ (strcat "\nСумма длин выбранных элементов равна: " (rtos
- Sum 2 2)))
- (setq value (rtos Sum 2 2))
- (alert (strcat "Сумма = " value))
- (prin1)
- )
- ;;;функция для нумерации.
- ;;;вводите начальное число
- ;;;выбираете предварительно подготовленный текст по порядку
- ;;;программа увеличивает выбранное число на 1 от предыдущего
- (defun c:plus1(/ s n g a name string1 string2)
- (setq Name 0)
- (setq i 1)
- (setq s (getint "\nВведите первый номер:"))
- (setq i (getint "\nВведите Шаг:"))
- (setq string1 (getstring T "\nВведите начало текста..."))
- (setq string2 (getstring T "\nВведите окончание текста..."))
- ; (if (i=nil) (setq i 1))
- ;(princ (strcat "\nСу " (rtos i 2 2)))
- (while Name
- (setq Name (car (entsel "\nУкажите текст или [Enter]:")))
- (if Name
- (if (= (cdr (assoc '0 (entget Name))) "TEXT")
- (progn
- (setq n (entget name))
- (print n)
- (setq str (strcat string1 (rtos s 2 0) string2 ) )
- (setq g (cons 1 str ) )
- (entmod (subst g (assoc '1 n) n))
- (setq s (+ i s))
- );progn
- );if
- );if
- );while
- );defun
- ;;;функция для нумерации.
- ;;;вводите начальное число
- ;;;выбираете предварительно подготовленный текст по порядку
- ;;;программа увеличивает выбранное число на 1 от предыдущего
- (defun c:plus1m(/ s n g a name string1 string2)
- (setq Name 0)
- (setq i 1)
- (setq s (getint "\nВведите первый номер:"))
- (setq i (getint "\nВведите Шаг:"))
- (setq string1 (getstring T "\nВведите начало текста..."))
- (setq string2 (getstring T "\nВведите окончание текста..."))
- (while Name
- (setq Name (car (entsel "\nУкажите текст или [Enter]:")))
- (if Name
- (if (= (cdr (assoc '0 (entget Name))) "MTEXT")
- (progn
- (setq n (entget name))
- (print n)
- (setq str (strcat string1 (rtos s 2 0) string2 ) )
- (setq g (cons 1 str ) )
- (entmod (subst g (assoc '1 n) n))
- (setq s (+ i s))
- );progn
- );if
- );if
- );while
- );defun
- (defun c:z-calc-text-value (/ value ent obj ss)
- (vl-load-com)
- (princ
- "\nВыберите текстовые объекты среди которых будет произведененна калькуляция"
- ) ;_ princ
- (setq ss (ssget '((0 . "TEXT,MTEXT"))))
- (if (not ss)
- (princ "Не выбраны объекты")
- (progn
- (setq
- value (rtos
- (apply
- (function +)
- (mapcar
- (function
- (lambda (a)
- (atof
- (vl-string-trim
- "%Uu {\\Ll}"
- (vl-string-subst
- "."
- ","
- (cdr (assoc 1 (entget a)))
- ) ;_ vl-string-subst
- ) ;_ vl-string-trim
- ) ;_ atof
- ) ;_ lambda
- ) ;_ function
- (vl-remove-if
- (function listp)
- (mapcar (function cadr)
- (ssnamex ss)
- ) ;_ mapcar
- ) ;_ vl-remove-if
- ) ;_ mapcar
- ) ;_ apply
- ) ;_ rtos
- ) ;_ setq
- (if (vl-string-position (ascii ".") value)
- (setq value (vl-string-right-trim ".0" value))
- ) ;_ if
- (princ (strcat "\n Сумма = " value))
- (alert (strcat "Сумма = " value))
- (setvar "ERRNO" 0)
- (while
- (and (not (setq ent
- (car
- (nentsel
- (strcat
- "\n Выберите текстовый объект для записи значения <Выход>:"
- ) ;_ strcat
- ) ;_ entsel
- ) ;_ car
- ) ;_ setq
- ) ;_ not
- (equal (getvar "ERRNO") 7)
- ) ;_ and
- (setvar "ERRNO" 0)
- ) ;_ while
- (if (and ent
- (vlax-property-available-p
- (setq obj (vlax-ename->vla-object ent))
- 'TextString
- ) ;_ vlax-property-available-p
- ) ;_ and
- (progn
- (vlax-put-property obj 'TextString value)
- (vlax-release-object obj)
- ) ;_ progn
- ) ;_ if
- ) ;_ progn
- ) ;_ if
- (princ)
- ) ;_ defun
Решение задачи: «Написать комментарии к коду»
textual
Листинг программы
- (defun C:DLINA (/ Nab Sum i Curve Param value)
- (vl-load-com)
- (if (setq Nab (ssget)) ;_ Если выбран набор
- (progn
- (setq Sum 0
- i 0
- ) ;_ Устанавливаем сумму и счетчик в ноль
- (repeat (sslength Nab) ;_ Для каждого объекта в наборе
- (setq Curve (vlax-ename->vla-object (ssname Nab i))
- i (1+ i)
- Param (vl-catch-all-apply ;_ находим его конечный параметр
- 'vlax-curve-getEndParam
- (list Curve)
- )
- )
- (if (not (vl-catch-all-error-p Param))
- (setq Sum (+ Sum ;_ и, если он (объект) имеет длину, прибавляем ее к общей сумме
- (vlax-curve-getDistAtParam Curve Param)
- )
- )
- )
- )
- )
- )
- (princ (strcat "\nСумма длин выбранных элементов равна: "
- (rtos Sum 2 2)
- )
- ) ;_ а затем сумму выводим в ком.строку
- (setq value (rtos Sum 2 2))
- (alert (strcat "Сумма = " value)) ;_ и во всплывающее сообщение
- (prin1) ;_ и наконец выходим по-тихому
- )
Объяснение кода листинга программы
В этом коде представлена функция, которая вычисляет сумму длин выбранных элементов в наборе. Вот список действий, которые выполняет код:
- Загрузка визуального лайаута.
- Проверка, выбран ли набор.
- Если выбран, инициализация суммы и счетчика.
- Для каждого объекта в наборе: a. Получение объекта. b. Получение конечного параметра объекта. c. Если конечный параметр получен без ошибок, прибавление его длины к сумме.
- Если ни один конечный параметр не получен без ошибок, вывод суммы длин в командную строку.
- Сохранение значения суммы в переменной.
- Вывод значения суммы во всплывающее окно.
- Выход из функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д