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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как использовать готовые лисп-функции?

Как использовать готовые лисп-функции?

Ответ
Поиск в этой теме
Непрочитано 12.01.2014, 16:43 #1
Как использовать готовые лисп-функции?
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,072

Добрый человек прислал ссылку http://www.4d-technologies.com/techcenter/index.htm, в которой много готовых лисп-функций.
Как не программисту ими воспользоваться?
Какой-то минимум, наверное, и не программист может дописывать, чтобы подобное использовать? Или вряд ли?
Например из http://www.4d-technologies.com/techcenter/index.htm:
Код:
[Выделить все]
 ;; | ---------------------------------------------------------------------------
;; | AM_GetTmpTable
;; | ---------------------------------------------------------------------------
;; | Function : Returns the name of an un-used object table that can be used as
;; |            a temporary table
;; | Arguments: (none)
;; | Returns  : An available name of object table
;; | Updated  : May 6, 2001
;; | (C) 1999-2004, Four Dimension Technologies, Bangalore
;; | e-mail   : rakesh.rao@4d-technologies.com 
;; | Web      : www.4d-technologies.com
;; | ---------------------------------------------------------------------------


(defun AM_GetTmpTable( / tmp cnt More )

(setq
	cnt 1
	More T
)
(while More
	(if (ade_odtabledefn (setq tmp (strcat "$TEMP$" (itoa cnt))))
		(setq cnt (1+ cnt))
		(setq More nil)
	)
)
(if (not More) tmp nil)
)
Или из http://www.4d-technologies.com/techcenter/index.htm:
Код:
[Выделить все]
 ;; | ---------------------------------------------------------------------------
;; | AM_CopyObjectData
;; | ---------------------------------------------------------------------------
;; | Function : Copies all object data from one entity to another
;; | Arguments: 'srcEname' - Source entity name
;; |            'tgtEname' - Target entity name
;; | Comments : All object data in all tables attached to the source entity will
;; |            be copied to the target entity
;; | Updated  : July 10, 2005
;; | e-mail   : rakesh.rao@4d-technologies.com 
;; | Web      : www.4d-technologies.com
;; | ---------------------------------------------------------------------------


(defun AM_CopyObjectData( srcEname tgtEname / TableLst )
(setq TableLst (AM_GetTables srcEname))

(foreach Table TableLst
	(setq Lst (AM_GetTableData srcEname Table))
	(if Lst
	(progn
		(AM_PutTableData tgtEname Lst Table "Overwrite")
		(if #Verbose (princ (strcat "\n" (itoa (length Lst)) " record(s) of table " Table " transferred.")))
	))
)
)
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 1085
 
Непрочитано 12.01.2014, 18:42
1 | #2
ShaggyDoc

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


Цитата:
Как не программисту ими воспользоваться?
"Не программисту" функции не нужны. А программист (пусть "простой инженер") может использовать их в своих функциях и всё вместе - в своих "программах" (которые также являются функциями).

Для практического использования надо собирать из подобных функций библиотеку - файл, в котором собраны определения всех функций, но нет вызовов их на исполнение. Далее надо обеспечить автоматическую загрузку этого файла, например включением его загрузки в acaddoc.lsp. Тогда каждая такая функция будет доступна так же, как и штатные.

Подробно все это писано в книге "САПР на базе AutoCAD - как это делается".

Цитата:
Какой-то минимум, наверное, и не программист может дописывать, чтобы подобное использовать? Или вряд ли?
Разумеется, может. И не минимум. Как раз подавляющее большинство "лиспов" написаны инженерами, не имеющими специального программисткого образования. Надо только рационально организовать сам процесс разработки, чтобы в результате использования библиотеки функций "конечные программы" были простыми и короткими.

А функции с http://www.4d-technologies.com/ можно использовать как прекрасные образцы - хотя снобы и будут морщить носики - "фи, #Verbose, фи, setq".
Их там много, надо все себе утащить. Именно все, потому что нельзя будет использовать AM_CopyObjectData если в библиотеке не будет функций AM_GetTables, AM_GetTableData, AM_PutTableData. А в них наверняка могут тоже использоваться еще какие-то нештатные функции.
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как использовать готовые лисп-функции?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoLisp. Можно использовать компилированные функции на других диалекта? Kirill_Ja LISP 8 03.05.2013 13:52
Предложение: Готовые функции Apelsinov Библиотека функций 170 27.06.2010 23:51
Функции AutoLISP из ... DLL! Supermax LISP 21 27.06.2010 14:18
Как использовать чужие функции при неизвестных передаваемых параметрах. Diman111 Программирование 4 27.03.2009 11:47
Как использовать в FIELDS Лисп переменные (2007)? Startrek AutoCAD 3 11.04.2006 17:39