| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как запустить файл FAS если команду знаю

Как запустить файл FAS если команду знаю

Ответ
Поиск в этой теме
Непрочитано 15.03.2017, 11:10 #1
Как запустить файл FAS если команду знаю
Миксер
 
Регистрация: 10.01.2006
Сообщений: 144

Здравствуйте.
Есть программка скаченная из интернета для работы с xrf. Соответственно команды для запуска XRR и XRP . Программки в автокад загружаются, но автокад пишет , что таких команд не знает.

Как их запустить?

Increase Size Decrease Size Нажмите для просмотра
https://www.youtube.com/watch?v=7KsI06EDm-o
У разработчика все работает(

Вложения
Тип файла: rar Работа с XRF.rar (72.5 Кб, 42 просмотров)

Просмотров: 12972
 
Непрочитано 15.03.2017, 11:28
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Цитата:
Сообщение от Миксер Посмотреть сообщение
У разработчика все работает(
Терроризируй разраба - гарантированно его косяк.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2017, 11:29
#3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,093


так там два файла, причем vlx, похоже, основной, а fas - то ли дополнительный, то ли вспомогательный. "Вызыватель" обоих команд сидит в vlx, его надо загрузить, и все работает.
kp+ вне форума  
 
Автор темы   Непрочитано 15.03.2017, 13:20
#4
Миксер


 
Регистрация: 10.01.2006
Сообщений: 144


Так запускал оба. Это две разные программы . Они независимы

Может ли влиять на запуск версия автокад ? У меня 2015. У разраба не меньше 2013 точно, судя по видео)
Миксер вне форума  
 
Непрочитано 15.03.2017, 13:54
#5
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,093


Цитата:
Сообщение от Миксер Посмотреть сообщение
Может ли влиять на запуск версия автокад ?
На 2010 vlx загрузился, Fas - нет. После загрузки vlx стали доступны обе команды - в смысле, они запустились без каких-либо сообщений об ошибках. В деле их не проверял, честно говоря, и что они делают - не совсем понял. Видео в моем браузере почему-то не воспроизводится, если что - дайте прямую ссылку на Ютюб.

Пардон! Команды XRR и XRP совпали по именам с командами Toolpack, поэтому создалась иллюзия их работоспособности.

Последний раз редактировалось kp+, 15.03.2017 в 14:21.
kp+ вне форума  
 
Непрочитано 15.03.2017, 19:37
1 | 1 #6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


в архиве хтмл -файлы
gomer вне форума  
 
Непрочитано 17.03.2017, 09:11
#7
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Команда: (LOAD "C:/Users/roaa/Desktop/XRR.fas") ; ошибка: неверный формат быстрой загрузки в файле: "C:/Users/roaa/Desktop/XRR.fas"
Команда: (LOAD "C:/Users/roaa/Desktop/XRP.VLX") nil
Команда: xrr
Неизвестная команда "XRR". Для вызова справки нажмите F1.
Команда: XRp
Неизвестная команда "XRP". Для вызова справки нажмите F1.


По ходу битые файлы...
roaa вне форума  
 
Непрочитано 17.07.2017, 14:04
#8
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


​       

Последний раз редактировалось lenivec, 18.07.2017 в 11:47.
lenivec вне форума  
 
Непрочитано 17.07.2017, 16:28
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Цитата:
Сообщение от lenivec Посмотреть сообщение
В содержимое скачанных/запускаемых файлов надо заглядывать
Ты умеешь вскрывать fas / vlx?? Покажи, как!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.07.2017, 20:58
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
умеешь вскрывать fas / vlx?? Покажи, как!
А зачем? ну, вскроешь, ну, посмотришь, ну, даже взломаешь. А потом понадобится тебе новый функционал и все, приплыли
gomer вне форума  
 
Непрочитано 17.07.2017, 22:51
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


gomer, я не про это. Ну да ладно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.07.2017, 06:29
#12
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


      

Последний раз редактировалось lenivec, 18.07.2017 в 11:48.
lenivec вне форума  
 
Непрочитано 18.07.2017, 06:55
#13
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от lenivec Посмотреть сообщение
С помощью блокнота (notepad.exe)
Издевается, нехороший человек.
Profan вне форума  
 
Непрочитано 18.07.2017, 06:56
#14
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


14-Nov-2004 http://www.sporaw.com/work/decompilers.htm
https://lispbox.wordpress.com/2014/1...ing-procedure/

Цитата:
А-то может оказаться, что внутри HTML-страница с фейсбука
trir вне форума  
 
Непрочитано 18.07.2017, 10:16
#15
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от lenivec Посмотреть сообщение
Не, ну я, например, много чего выковырял для себя из чужих lisp-файлов. Доработал, упростил или наоборот функционала добавил
Переписать не проще ли, чем выковыривать?
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 18.07.2017, 10:33
#16
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


​       

Последний раз редактировалось lenivec, 18.07.2017 в 11:48.
lenivec вне форума  
 
Непрочитано 18.07.2017, 11:04
#17
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от lenivec Посмотреть сообщение
Так было спрошено "вскрывать", а не декомпилировать или хотя бы взламывать
И не исходный lisp-код, а "fas / vlx"
И не издеваюсь, а шучу
Не надо юлить и изворачиваться, редиска.
Profan вне форума  
 
Непрочитано 18.07.2017, 11:18
#18
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Да, подрастают новые поколения, надеющиеся "декомпилировать" FAS/VLX. Как когда-то пытались декомпилировать bi2/bi4.

Ничего из этого не получится принципиально, разве что текстовые ресурсы в виде строк вытащить.

Единственно что было возможно и давно сделано - расшифровка "AutoCAD Protected Lisp-files", да и то потому, что шифровка детская.

Любой LISP гораздо проще написать заново, и даже ещё лучше - только посмотреть что он делает. Ну если только не использует какие-то "авторские" никому не известные формулы для расчетов. На форуме человек двадцать это могут сделать.
ShaggyDoc вне форума  
 
Непрочитано 18.07.2017, 11:20
#19
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Во-во )) Очень информативно смотреть в блокноте на fas )) Ну разве что на заголовок, удостовериться.

Цитата:
Сообщение от lenivec Посмотреть сообщение
Проще - если знаешь все lisp-функции. А как новичку, то быстрее выковырять у кого-нибудь, особенно если надо срочно, и не знаешь куда копать (с чего начать).
Чего-то я не понял Если не знаешь языка и не знаешь куда копать, и еще и быстро надо, то уж конечно проще в чужом коде разобраться, ага ))
Код:
[Выделить все]
 (defun aiku:bss  (e00 e01 / x00 x01 x02 la0 la1 la2 n0i n1i n0n1 jay-n0n1i diagonal f-greens weights mask non)
  (if (/= 1
          (apply '+
                 (mapcar (function (lambda (e10)
                                     (if e10
                                       0
                                       1)))
                         e01)))
    (aiku:exit "Значение не единственное")
    (progn (setq x00 (apply 'append
                            (mapcar (function (lambda (e10 e11)
                                                (if (not e10)
                                                  e11)))
                                    e01
                                    '((cadr caddr car) (car caddr cadr) (car cadr caddr))))
                 x02 (apply 'mapcar
                            (cons (function
                                    (lambda (e10 e11) (expt 2 (/ (- (fix (1- (* 0.5 (/ (log  (- e10 e11))) (log 2)))) 52) 3.0))))
                                  (mapcar 'apply
                                          '(mapcar mapcar)
                                          (mapcar 'cons
                                                  '(max min)
                                                  (list (setq x01 (vl-sort (vl-sort e00 (function (lambda (e20 e21) (< ((eval (car x00)) e20) ((eval (car x00)) e21)))))
                                                                           (function (lambda (e20 e21) (< ((eval (cadr x00)) e20) ((eval (cadr x00)) e21))))))
                                                        x01)))))
                 x01 ((eval
                        (setq la0 (function
                                    (lambda (e10 e11)
                                      (if (car e11)
                                        (apply 'cons
                                               (mapcar 'apply
                                                       (list 'list la0)
                                                       (if (apply 'and (mapcar 'or (mapcar 'not e01) (mapcar '> x02 (mapcar 'abs (mapcar '- e10 (car e11))))))
                                                         (list (apply 'mapcar (cons 'if (list e01 e10 (mapcar '/ (mapcar '+ e10 (car e11)) '(2.0 2.0 2.0)))))
                                                               (list (cadr e11) (cddr e11)))
                                                         (list e10 (list (car e11) (cdr e11))))))
                                        (list e10))))))                                                              (car x01)
                                                                                                                                                                    (cdr x01)))
           (mapcar 'set
                   '(n0 n1 n2)
                   (setq auxi (mapcar (function (lambda (e10) (mapcar (function (lambda (e20) ((eval e10) e20))) x01))) x00)))
           (mapcar 'set '(n0i n1i) (mapcar (function (lambda (e10) ((eval e10) e01))) x00))
           (and (apply 'or
                        (mapcar 'or
                                (setq non (mapcar (function (lambda (e10) (mapcar (function (lambda (e20) (zerop e20))) e10)))
                                                  (setq x00 0
                                                        diagonal
                                                         (mapcar (function
                                                                   (lambda (e10 e11 / a10)
                                                                     (setq x00 (1+ x00)
                                                                           a10 0)
                                                                     (mapcar (function (lambda (e20 e21 / a20)
                                                                                         (if (eq x00 (setq a10 (1+ a10)))
                                                                                           1.0
                                                                                           (sqrt (apply '+ (mapcar '* (setq a20 (mapcar '- e20 e21)) a20))))))
                                                                             e10
                                                                             e11)))
                                                                 (apply 'mapcar
                                                                        (cons 'list
                                                                              (setq diagonal ((eval (setq la0 (function (lambda (e10 e11)
                                                                                                                          (if (zerop e10)
                                                                                                                            (list e11)
                                                                                                                            (cons e11 ((eval la0) (1- e10) n0n1)))))))
                                                                                                                                                                   (1- (length (setq n0n1 (mapcar 'list n0 n1))))
                                                                                                                                                                   n0n1))))
                                                                 diagonal))))))
             (apply '+
                    (mapcar '*
                            (setq jay-n0n1i (list n0i n1i)
                                  weights   (mapcar
                                              (function (lambda (e10) (apply '+ (mapcar '* e10 n2))))
                                              (apply
                                                'mapcar
                                                (cons 'list
                                                      (car
                                                        ((eval
                                                           (setq la0 (function
                                                                       (lambda (e10 e11 / a10 a11)
                                                                         (apply (function
                                                                                  (lambda (e20 e21 / a20)
                                                                                    (list (cons (setq a20 (cadar e21)) e20)
                                                                                          (mapcar (function (lambda (e30 / a30)
                                                                                                              (list (cdar e30)
                                                                                                                    (if (zerop (setq a30 (caar e30)))
                                                                                                                      (cadr e30)
                                                                                                                      (mapcar '- (cadr e30) (mapcar (function (lambda (e40) (* e40 a30))) a20))))))
                                                                                                  (cdr e21)))))
                                                                                (cond ((not (cdr e10))
                                                                                       (list nil
                                                                                             (cons (if (zerop (setq a10 (caar e10)))
                                                                                                     (aiku:exit "Опорный ноль")
                                                                                                     (list nil (cdr (mapcar (function (lambda (e20) (/ e20 a10))) (car e10)))))
                                                                                                   ((eval (setq la2
                                                                                                                 (function
                                                                                                                   (lambda (e20 / a20 a21 a22)
                                                                                                                     (mapcar 'set '(a20 a21) (mapcar 'mapcar '(car cdr) (list e20 e20)))
                                                                                                                     (if (cdr e20)
                                                                                                                       (progn
                                                                                                                         (append
                                                                                                                           (list (cons (list (car a20)) (list (car a21))))
                                                                                                                           (mapcar 'cons
                                                                                                                                   (mapcar 'append (mapcar 'car (setq a22 ((eval la2) (cdr a21)))) (mapcar 'list (cdr a20)))
                                                                                                                                   (mapcar 'cdr a22))))
                                                                                                                       (list (cons a20 a21)))))))
                                                                                                                    e11))))
                                                                                      ((car
                                                                                         (mapcar 'set
                                                                                                 '(a10 e10)
                                                                                                 ((eval (setq la1 (function (lambda (e20 e21 / a20)
                                                                                                                              (cond ((not (setq a20 (car e20))) (cons nil (list e21)))
                                                                                                                                    ((zerop (car a20)) ((eval la1) (cdr e20) (cons a20 e21)))
                                                                                                                                    (t (cons a20 (list (append (cdr e20) e21)))))))))          e10
                                                                                                                                                                                               nil)))
                                                                                       (setq a11 (car a10)
                                                                                             a10 (mapcar (function (lambda (e20) (/ e20 a11))) a10))
                                                                                       ((eval la0) (mapcar 'cdr
                                                                                                           (mapcar (function (lambda (e20 / a20)
                                                                                                                               (setq a20 (car e20))
                                                                                                                               (mapcar '- e20 (mapcar (function (lambda (e30) (* e30 a20))) a10))))
                                                                                                                   e10))
                                                                                                   (append (list (cdr a10)) e11)))
                                                                                      (t ((eval la0) (cdr e10) (append (list (car e10)) e11)))))))))
                                                          (append (cdr
                                                                    (setq x00 (mapcar 'append
                                                                                      (setq x00      0
                                                                                            f-greens (mapcar (function (lambda (e10 / a10)
                                                                                                                         (setq x00 (1+ x00)
                                                                                                                               a10 0)
                                                                                                                         (mapcar (function (lambda (e20)
                                                                                                                                             (if (eq x00 (setq a10 (1+ a10)))
                                                                                                                                               0.0
                                                                                                                                               (* (expt e20 2) (1- (log e20))))))
                                                                                                                                 e10)))
                                                                                                             diagonal))
                                                                                      (cadr
                                                                                        ((eval (setq la1 (function (lambda (e10 e11)
                                                                                                                     (if (zerop e10)
                                                                                                                       '(nil nil)
                                                                                                                       (list (cons 0 (car (setq a00 ((eval la1) (1- e10) (cons 0 e11)))))
                                                                                                                             (apply 'cons (mapcar 'append (list (append e11 '(1)) nil) a00))))))))
                                                                                                                                                                                               (length n0n1)
                                                                                                                                                                                               nil)))))
                                                                  (list (car x00)))
                                                          nil))))))
                            (mapcar (function (lambda (e10 e11)
                                                (if e10
                                                  0.0
                                                  e11)))
                                    (setq mask (mapcar (function (lambda (e10) (zerop e10)))
                                                       (setq diagonal (apply 'mapcar
                                                                             (cons (function
                                                                                     (lambda (e10 e11) (sqrt (apply '+ (mapcar (function (lambda (e20) (expt e20 2))) (list e10 e11))))))
                                                                                   (apply 'mapcar (cons 'list (mapcar (function (lambda (e10) (mapcar '- jay-n0n1i e10))) n0n1))))))))
                                    (mapcar (function (lambda (e10) (* (expt e10 2) (1- (log e10)))))
                                            (mapcar (function (lambda (e10 e11)
                                                                (if e10
                                                                  1.0
                                                                  e11)))
                                                    mask
                                                    diagonal)))))))))
Как насчет быстро что-то выковырять ))
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 18.07.2017, 11:22
#20
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


Цитата:
Сообщение от Profan Посмотреть сообщение
Не надо юлить и изворачиваться, редиска.
Хоть я и не редиска, а lenivec, но так и быть.
Я отвечу просто:
Цитата:
Терроризируй разраба - гарантированно его косяк.
))

Последний раз редактировалось lenivec, 18.07.2017 в 12:57.
lenivec вне форума  
 
Непрочитано 18.07.2017, 11:48
#21
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от lenivec Посмотреть сообщение
Во-вторых, я быстрее разберусь с Вашим кодом, чем вызубрю учебник по AutoLIPS
Мне кажется, этой фразой многие заинтересовались. Разъясните, как можно разобраться с чужим кодом, не зная функций?
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 18.07.2017, 12:18
#22
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


       ‎

Последний раз редактировалось lenivec, 18.07.2017 в 12:54.
lenivec вне форума  
 
Непрочитано 18.07.2017, 12:27
#23
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Ну так разберитесь с приведенным в примере кодом и расскажите, какие у него должны быть данные на входе, что должно быть на выходе, что этот код делает вообще, раз вы специалист
Было бы не плохо реконструировать вычислительный алгоритм, но это высший пилотаж
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 18.07.2017, 12:53
#24
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


      ‎

Последний раз редактировалось lenivec, 19.07.2017 в 06:07.
lenivec вне форума  
 
Непрочитано 18.07.2017, 13:28
#25
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Вот комментарии к этому лиспу:
;;;интерполяция бигармонической сплайн-поверхностью
;;;комплексные вычисления эмулируются списком (Re Im)
;;;обратная матрица находится методом Гаусса-Жордана
;;;e00 - заданные значения узлов по осям, список с тройками координат
;;;e01 - значения точки по осям, список с тройками координат, искомое - nil
Легче стало? А раз вы, по собственным же словам, не специалист, тогда не беритесь рассуждать о том, в чем вы дилетант, как например, об одном из отличий грамотного кода от неграмотного, которое заключается в наличии построчных комментариев, или о сравнительной простоте адаптации чужой законченной функции по сравнению с написанием собственной новой.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 18.07.2017, 13:50
#26
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


      ‎

Последний раз редактировалось lenivec, 20.07.2017 в 08:28.
lenivec вне форума  
 
Непрочитано 18.07.2017, 14:12
#27
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Приведенные комментарии достаточны для понимания работы законченной функции, чтобы использовать ее в дальнейшем, но это так И говорят вовсе не о необходимости писать построчные комментарии, а о необходимости документировать написанное, а это не одно и то же.
Естественно, я не буду учить вас писать оптимальный код, потому что вы по собственным же словам, еще и учебника не освоили И собственно, учебник вам поможет, хотя бы чтобы применительно к лиспу не упоминать подпрограммы.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 19.07.2017, 05:26
#28
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


       ‎

Последний раз редактировалось lenivec, 21.07.2017 в 10:13.
lenivec вне форума  
 
Непрочитано 19.07.2017, 10:59
#29
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ciril Посмотреть сообщение
о необходимости документировать написанное
а разве в ал поддерживаются докстринги? может я что-то пропустил?
gomer вне форума  
 
Непрочитано 19.07.2017, 15:11
#30
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от lenivec Посмотреть сообщение
Вот Вам выдержка из автокадовской справки:
У нас, наверное, разные справки))
Цитата:
AutoLISP Reference Guide > AutoLISP Functions > F Functions >
function

Tells the Visual LISP compiler to link and optimize an argument as if it were a built-in function

(function symbol | lambda-expr)
The function function is identical to the quote function, except it tells the Visual LISP compiler to link and optimize the argument as if it were a built-in function or defun.

Compiled lambda expressions that are quoted by function will contain debugging information when loaded into the Visual LISP IDE.

Arguments

symbol
A symbol naming a function.

lambda-expr
An expression of the following form:

(LAMBDA arguments {S-expression}* )

Return Values

The result of the evaluated expression.

Examples

The Visual LISP compiler cannot optimize the quoted lambda expression in the following code:

(mapcar
'(lambda (x) (* x x))
'(1 2 3))
After adding the function function to the expression, the compiler can optimize the lambda expression. For example:

(mapcar
(function (lambda (x) (* x x)))
'(1 2 3))
И в справке Subroutine применяется в отношении к VBA либо as an external subroutine, так что не надо ля-ля
Не из акадовской справки, но для общего понимания:
Цитата:
There are two ways to indicate a function to be used in a function-call form. One is to use a symbol that names the function. This use of symbols to name functions is completely independent of their use in naming special and lexical variables. The other way is to use a lambda-expression, which is a list whose first element is the symbol lambda. A lambda-expression is not a form; it cannot be meaningfully evaluated. Lambda-expressions and symbols, when used in programs as names of functions, can appear only as the first element of a function-call form, or as the second element of the function special form. Note that symbols and lambda-expressions are treated as names of functions in these two contexts.
Цитата:
Сообщение от lenivec Посмотреть сообщение
Между прочим, Гугловский и Майкрософтовский (софтверные гиганты, если что)
Так пишите на императивных языках, к чему вам функциональный подход

Цитата:
Сообщение от gomer Посмотреть сообщение
а разве в ал поддерживаются докстринги? может я что-то пропустил?
Здесь документирование в общем смысле как спецификация назначения функции, ее аргументов и возвращаемого значения. И да, с помощью комментирования строк, потому что докстринги не поддерживаются.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 19.07.2017, 18:36
#31
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ciril Посмотреть сообщение
спецификация назначения функции, ее аргументов и возвращаемого значения.
в таком случае есть простая формула. Если ваш код нуждается в комментариях, то это плохой код
gomer вне форума  
 
Непрочитано 19.07.2017, 18:58
#32
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от gomer Посмотреть сообщение
в таком случае есть простая формула. Если ваш код нуждается в комментариях, то это плохой код
если не планируется поддерживать/развивать/использовать куски кода в других проектах - то можно обойтись и говорящими названиями переменных и функций) Недаром есть поговорка "Самый тупой карандаш лучше самой острой памяти" (с).
Сергей812 вне форума  
 
Непрочитано 19.07.2017, 22:05
#33
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если не планируется
всегда не планируется и всегда приходится, поэтому имеем то, что имеем
gomer вне форума  
 
Непрочитано 19.07.2017, 22:20
#34
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Бессмысленный разговор. Каждый для себя сам решает - бегать все время по граблям или подстелить "соломку". Тем более, если есть механизмы для этого типа XML комментариев и ему подобного. Хотя IDE лиспа, как и VBA - безнадежно отстал уже в этом смысле, конечно.
Сергей812 вне форума  
 
Непрочитано 19.07.2017, 22:26
#35
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
этого типа XML комментариев
эт что-такое? кажется я безнадежно отстал... А насчет IDE... многие не умеют пользоваться и даже не знают и половины его плюшек
gomer вне форума  
 
Непрочитано 19.07.2017, 22:56
#36
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от gomer Посмотреть сообщение
эт что-такое? кажется я безнадежно отстал...
XML документация или документирующие комментарии XML https://habrahabr.ru/post/41514/
Сергей812 вне форума  
 
Непрочитано 19.07.2017, 23:46
#37
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
документирующие комментарии XML
это все припарки парсера
gomer вне форума  
 
Непрочитано 20.07.2017, 00:05
#38
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Offtop:
Цитата:
Сообщение от gomer Посмотреть сообщение
это все припарки парсера
Это все удобство работы, это надо попробовать - чтобы понять) Как и сам .Net язык, как WPF c XAML - это все удобство и скорость в работе в первую очередь.
Сергей812 вне форума  
 
Непрочитано 20.07.2017, 05:51
#39
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


       ‎

Последний раз редактировалось lenivec, 21.07.2017 в 10:13.
lenivec вне форума  
 
Непрочитано 20.07.2017, 09:47
#40
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от lenivec Посмотреть сообщение
А как насчет совместной работы при разработке софта?
Это предложение?
gomer вне форума  
 
Непрочитано 20.07.2017, 11:33
#41
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


       ‎

Последний раз редактировалось lenivec, 21.07.2017 в 10:06.
lenivec вне форума  
 
Непрочитано 20.07.2017, 11:54
#42
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от lenivec Посмотреть сообщение
Что касается разработки софта, то я могу только идеи генерировать.
Цитата:
Сообщение от lenivec Посмотреть сообщение
P.S. Я использую все возможности(все языки программирования) для реализации того, что мне необходимо. В Автокаде это - AutoLISP и VB и скриптовые языки, изначально не имеющие отношения к Автокаду. То, что невозможно реализовать на одном языке программирования, я реализую на другом.
Без слов
Сергей812 вне форума  
 
Непрочитано 20.07.2017, 11:56
#43
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Вы че-то совсем в сторону ушли! Может, в чате кодами померяетесь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2017, 12:16
#44
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от gomer Посмотреть сообщение
в таком случае есть простая формула. Если ваш код нуждается в комментариях, то это плохой код
Собственно, соглашусь, если это относится к построчным комментариям, я вообще слабо представляю зачем, если не в учебных целях, комментировать каждую строку кода, там же все и так написано. Но вот всю функцию лучше все-таки документировать, чтобы потом не рыться в памяти, что у нее за параметры и что вычисляется в результате.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Тем более, если есть механизмы для этого типа XML комментариев и ему подобного. Хотя IDE лиспа ... безнадежно отстал уже в этом смысле, конечно.
В IDE autolisp'a достаточно функционала для полноценной работы. XML комментарии и ему подобное, это уже, по-моему, как-то избыточно. То, что работу бы чуть-чуть упростило, те же док-стринги, просто этим лиспом не поддерживаются.

Цитата:
Сообщение от lenivec Посмотреть сообщение
Факт остается фактом - если в справке по лиспу говорится о Subroutine(подпрограммах),
А ведь да-а Не, не 2009, а 2010, еще chm'ы. И там действительно Subroutine or List. Хм, я что-то упустил. Что это за тип такой Subroutine, что-то я такого типа в справке онлайновой не нашел

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вы че-то совсем в сторону ушли!
Ну как бы да, зато столько нового и интересного! Опять же, может подрастающее поколение что вынесет
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 20.07.2017, 12:56
#45
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от ciril Посмотреть сообщение
Собственно, соглашусь, если это относится к построчным комментариям, я вообще слабо представляю зачем, если не в учебных целях, комментировать каждую строку кода, там же все и так написано. Но вот всю функцию лучше все-таки документировать, чтобы потом не рыться в памяти, что у нее за параметры и что вычисляется в результате.
Ну на основании собственного опыта:
1. Если конечные теги блоков кода (круглые скобки в лиспе, фигурные в С и т.д.) включают в себя много вложенного кода - то их лучше прокомментировать лучше с начальными (проще потом будет поддерживать/модернизировать). Особенно, если этот блок на экран не помещается.
2. Если используется "нестандартное" вычисление индексов списков/массивов с помощью дополнительных полей/условий - лучше прокомментировать.
3. Комментировать функциональность отдельных блоков данных - все таки большая часть пишет на английском код (не будем вспоминать чудо-язык 1С всуе). И когда просматриваешь код через некоторое время - глаз "цепляется" за строчки комментариев на русском. А поскольку опыт потихоньку растет - то можно заметить ранее пропущенные "ньюансы/подводные" камни либо просто выкинуть половину "избыточного" кода.

Цитата:
Сообщение от ciril Посмотреть сообщение
XML комментарии и ему подобное, это уже, по-моему, как-то избыточно
Сначала тоже показалось какое-то трудно читаемое новшество) Но по факту эти комменты нужны не сколько для самой функции/поля и т.п., а чтобы оперативно получать информацию при использовании этих элементов далее в коде. Ведь там можно множество строк с переносами строк записать между тегами и это так и будет выведено в виде столбца в виде подсказки.
Сергей812 вне форума  
 
Непрочитано 20.07.2017, 12:57
#46
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от lenivec Посмотреть сообщение
И где Вы выковыряли "as an external subroutine"
Из описания vl-acad-defun, единственное осмысленное применение понятия подпрограммы в данном контексте.

Цитата:
Сообщение от lenivec Посмотреть сообщение
Очевидно, для Вас подпрограмма(Subroutine) - это только то, что вызывается командой GOSUB?
Не знаком с командой этой, увы. Для меня подпрограмма, это то, что вызывается инструкцией call.

Цитата:
Сообщение от lenivec Посмотреть сообщение
Не знаю о чем Вы,
Я о том, что вы пытаетесь пристроить термин из императивной парадигмы программирования к декларативной парадигме, оно конечно, простительно, раз уж сам autodesk, ввел это понятие в своем хелпе, но это не оправданно. Для лиспа, как для языка функционального, слово подпрограмма смысла не имеет. Для алиспа, есть форма, которая может быть самовычисляемой (числа, строки, символы) или списком (специальный оператор, вызов функции). Соответственно, в форме вызова функции car может быть либо символом имени фунции, либо лямбда-выражением (списком с car lambda). Собственно, можно сказать, любая функция, причем неважно, она базовая или пользовательская (именованная или неименованная) является подпрограммой, но это, ну, неграмотно, что ли.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 20.07.2017, 13:10
#47
trir


 
Регистрация: 18.12.2010
Сообщений: 5,051


Цитата:
В языках программирования высокого уровня используется два типа подпрограмм: процедуры и функции.
https://ru.wikipedia.org/wiki/%D0%9F...BC%D0%BC%D0%B0
trir вне форума  
 
Непрочитано 20.07.2017, 13:22
#48
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну на основании собственного опыта
Ну не знаю, скорее всего, дело привычки и действительно, опыта-стиля-назначения. Я, например, просто не понимаю, зачем комментить лисповый код построчно, ведь, действительно, все уже написано на лиспе, для чего это еще дублировать на английском (русском) как это вычисляется. Отлаженная функция, по моему, вещь в себе, может быть я просто оформляю в именованные функции достаточно небольшие куски кода, которым хватает документирования типа что-делает-параметры-возвращаемое. Ну и опять же, смотря на чем писать, все, что говорил, относится к лиспу, на ассемблере я код, комментирую построчно, особенно секцию данных и определения структур.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Но по факту эти комменты нужны не сколько для самой функции/поля и т.п., а чтобы оперативно получать информацию при использовании этих элементов далее в коде.
Как бы да, с получением справочной информации адесковское иде лиспа проседает, но опять же, чего в языке нет, того и в иде нет. Для cl в связке emacs+slime+sbcl и подобный функционал реализован, опять же, чего не хватает, всегда дописать можно

----- добавлено через ~40 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
Это аргумент чего?
__________________
На работе было скучно:shout:

Последний раз редактировалось ciril, 20.07.2017 в 14:02.
ciril вне форума  
 
Непрочитано 20.07.2017, 14:23
#49
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от trir Посмотреть сообщение
В языках программирования высокого уровня используется два типа подпрограмм: процедуры и функции.
паскаль и бейсик - это не все языки. В с-подобных языках все есть функция. в питоне тоже, в лиспе тем более. О чем спор? Отличить defun от defun-q не можете?
gomer вне форума  
 
Непрочитано 20.07.2017, 14:38
#50
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от trir Посмотреть сообщение
В языках программирования высокого уровня используется два типа подпрограмм: процедуры и функции.
Цитата:
Функция — это подпрограмма специального вида, которая, кроме получения параметров, выполнения действий и передачи результатов работы через параметры имеет ещё одну особенность— она всегда должна возвращать результат.
например, в синтаксисе C# вообще нет процедур - есть только функции, не возвращающие значения (void). А возвращение значений через ссылочный тип аргументов в процедурах?
Сергей812 вне форума  
 
Непрочитано 20.07.2017, 15:31
#51
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


       ‎

Последний раз редактировалось lenivec, 21.07.2017 в 10:07.
lenivec вне форума  
 
Непрочитано 20.07.2017, 16:48
#52
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от lenivec Посмотреть сообщение
из этой выдержки можно сделать определенный вывод
У меня не получилось сделать вывод, что за тип такой в акадовском лиспе - подпрограмма Объясните.

Цитата:
Сообщение от lenivec Посмотреть сообщение
Как же так?! Это же классика! Вернее сказать, "основа основ", т.е. Basic
Да??? Не знаю его Основа чего же это?

Цитата:
Сообщение от lenivec Посмотреть сообщение
Между приведенными Вами цитатами связи нет.
Без слов, как мне кажется, была не оценка связи, а выражение отношения вот к этому.

Цитата:
Сообщение от lenivec Посмотреть сообщение
P.S. Я использую все возможности(все языки программирования) для реализации того, что мне необходимо. В Автокаде это - AutoLISP и VB и скриптовые языки, изначально не имеющие отношения к Автокаду. То, что невозможно реализовать на одном языке программирования, я реализую на другом
Я и сам поржал с этой фразы, просто не написал ничего. Как бы профессиональный программист в основном использует пару-тройку языков для полноценной работы, редко, когда больше. Эти языки он уверенно знает и может реализовать на них поставленные задачи. Ну может еще на паре он читает и пишет со словарем время от времени. А ваши слова, что вы используете все языки программирования, значат то, что ни одного вы не толком знаете, а так, слышали, что они есть В основном, все можно реализовать на любом языке, вопрос целесообразности затрат времени написания, отладки и исполнения.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 20.07.2017, 18:20
#53
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ciril Посмотреть сообщение
У меня не получилось сделать вывод, что за тип такой в акадовском лиспе - подпрограмма
Код:
gomer вне форума  
 
Непрочитано 20.07.2017, 19:03
#54
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от ciril Посмотреть сообщение
Да??? Не знаю его Основа чего же это?
Ну да, "Basic" - основа всего. Это же BASIC!! У самого Билла в визитке "Basic programmer"! Основа "Всех языков", которые пациент "знает". А не знать GOSUB - это уже за гранью... Это хуже, чем не знать GOTO
ShaggyDoc вне форума  
 
Непрочитано 21.07.2017, 08:35
#55
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


Цитата:
Сообщение от ciril Посмотреть сообщение
А ваши слова, что вы используете все языки программирования, значат то, что ни одного вы не толком знаете, а так, слышали, что они есть
Фразу про "все языки программирования" можно понимать по-разному. Если мне понадобиться что-то реализовать, я буду использовать любой подходящий язык программирования.
Когда-то (~ до 8 класса) я не знал ни одного. Сейчас, в той или иной степени: Basic, ASSEMBLER, JavaScript, VBscript, C/C++, VisualBasic, скрипты Autohotkey, AutoLISP.

А "толком" - это как? Например, для себя на VisualC++ я написал калькулятор. Вроде работает. Есть толк или нету? На AutoLISP написал маленькую тележку программ для ускорения работы в Автокаде. Тоже работают без сбоев. По-моему толк есть, поскольку скорость работы увеличилась в разы.

Цитата:
В основном, все можно реализовать на любом языке, вопрос целесообразности затрат времени написания, отладки и исполнения.
Приведите, пожалуйста, пример обработчика нажатий отдельных клавиш и кнопок мыши в AutoLISP.

Последний раз редактировалось lenivec, 21.07.2017 в 09:40.
lenivec вне форума  
 
Непрочитано 21.07.2017, 08:38
#56
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от lenivec Посмотреть сообщение
Приведите, пожалуйста, пример обработчика нажатий отдельных клавиш и кнопок мыши в AutoLISP.
grread
gomer вне форума  
 
Непрочитано 21.07.2017, 08:50
#57
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


Цитата:
Сообщение от ciril Посмотреть сообщение
Да??? Не знаю его Основа чего же это?
Basic = Основной

----- добавлено через ~6 мин. -----
Цитата:
Сообщение от gomer Посмотреть сообщение
grread
Спасибо! Пригодится. Хотя на среднюю кнопку мыши почему-то не реагирует.
Мне бы что-то вроде реактора по аналогии с on_MouseClick() на VB, чтобы считывать какая кнопка мыши нажата в сочетании с какой клавишей и был ли двойной клик. А если и дополнительные (боковые) кнопки будет обрабатывать, то вообще было бы супер.

Последний раз редактировалось lenivec, 21.07.2017 в 09:24.
lenivec вне форума  
 
Непрочитано 21.07.2017, 09:34
#58
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от lenivec Посмотреть сообщение
Спасибо! Пригодится. Хотя на среднюю кнопку мыши почему-то не реагирует.
Мне бы что-то вроде реактора по аналогии с on_MouseClick() на VB, чтобы считывать какая кнопка мыши нажата в сочетании с какой клавишей и был ли двойной клик. А если и дополнительные (боковые) кнопки будет обрабатывать, то вообще было бы супер.
так вы же знаете С++ -> acedRegisterFilterWinMsg в ObjectARX. Ну или экспортируйте эту функцию фильтра сообщений в NETAPI.
Сергей812 вне форума  
 
Непрочитано 21.07.2017, 09:44
#59
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Ну да, "Basic" - основа всего
основа, а не всего

Последний раз редактировалось lenivec, 21.07.2017 в 10:45.
lenivec вне форума  
 
Непрочитано 21.07.2017, 10:00
#60
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от lenivec Посмотреть сообщение
Во-первых, речь ведь шла, о том, что можно реализовать на любом языке. Мне надо на AutoLISP.
Во-вторых, C++ я знаю "в той или иной степени".
В-третьих, я у же реализовал это в VB. Зачем мне лишние примочки в виде .ARX? Который для каждой версии Автокада надо компилировать отдельно.
Мне просто интересно, как это можно реализовать в AutoLISP. Я со своими "знаниями" AutoLISP не нашел такого способа.
Хватит отмазываться) Так и скажите, что без готового большей части чужого кода ничего своего написать не в состоянии. Если бы действительно занимались программированием, то знали бы - что можно писать на отличным от лиспа языке и вызывать в лиспе как обычную функцию. Это все находиться в поисковиках для тех, кто реально хочет решит задачу.
Сергей812 вне форума  
 
Непрочитано 21.07.2017, 10:22
#61
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Хватит отмазываться) Так и скажите, что без готового большей части чужого кода ничего своего написать не в состоянии
Я же с этого и начинал - что мне проще (для своих собственных целей) использовать части подходящего "чужого" кода, чем зубрить учебник. И что для реализации того, что мне надо я использую все возможности всех любых языков и сред программирования, реализованные и найденные мной в справке или через поисковик. Если бы я писал всё сам и с нуля, меня бы вы здесь не встретили.
А написать что-то простенькое, с нуля, я в состоянии. А в Visual среде - тем более.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Если бы действительно занимались программированием, то знали бы - что можно писать на отличным от лиспа языке и вызывать в лиспе как обычную функцию
Что я и делаю с помощью макросов и SendCommand() в VB

Последний раз редактировалось lenivec, 21.07.2017 в 10:44.
lenivec вне форума  
 
Непрочитано 21.07.2017, 10:54
#62
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


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

Цитата:
Сообщение от lenivec Посмотреть сообщение
Что я и делаю с помощью макросов и SendCommand() в VB
Например, перехватываете сообщения операционной системы для акада? Чтобы не использовать внешнюю программу типа HotKey, а работать непосредственно в пространстве акада/надстройки?
Сергей812 вне форума  
 
Непрочитано 21.07.2017, 11:04
#63
lenivec

проектирование
 
Регистрация: 16.09.2005
KZ
Сообщений: 135


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Зачем зубрить учебники? Практика параллельно с теорией - самый лучший способ
Это по мне!

----- добавлено через ~1 ч. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Например, перехватываете сообщения операционной системы для акада? Чтобы не использовать внешнюю программу типа HotKey, а работать непосредственно в пространстве акада/надстройки?
Нет. До такого я еще не дорос

Последний раз редактировалось lenivec, 21.07.2017 в 12:36.
lenivec вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как запустить файл FAS если команду знаю

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Revit 2017. Что делать, если на мощном компьютере сильно тормозит файл ревита весом 35мб? klenk100 Revit 17 07.04.2017 08:39
Графические примитивы, скопированные через буфер обмена "тянут" за собой "мусор", который "раздувает" файл и впоследствии "убивает" буфер обмена Shaggy AutoCAD 2 01.07.2016 22:37
Можно ли запустить команду для списка файлов, не открывая файлов? Alexander_Liseev Программирование 4 28.02.2013 11:41
Приоткрытии чертежа в автокаде файл требует файл формы, что делать? kiraxmaz AutoCAD 3 11.08.2011 13:56
Файл сохранен тока для просмотра можно ли его редактировать Анальный пират AutoCAD 3 17.02.2008 06:01