本帖最后由 vitalgg 于 2022-5-18 04:20 编辑
快速安装 :
将以下代码复制到 CAD 命令行内,回车即可开始安装。
(在代码行里用鼠标连续三击全选,然后右键复制或Ctrl+C 。到CAD命令行内,右键粘贴或Ctrl+V)

快速上手:

1 @lisp 函数库
@lisp 函数库是一个开源、共享、可云端加载的 autolisp 函数库。由像您一样热爱开源共享的爱好者所构筑并维护。可依据开放许可协议自由使用。
@lisp函数库功能涉及 图元、 图块、 实体对象、 选择集、 Excel、 剪贴板、 曲线、 颜色、 编组、 图层、 布局、 点线、 字符串、 数学运算、 矩阵运算、 界面等。更多内容持续迭代中 …
1.1 社区驱动
@lisp 函数库是一个多元化的信息分享社区,它充满激情,并且每天都在成长。我们的参与者包括 lisp 程序共享爱好者、lisp开发编程人员、CAD从业人员、服务器维护工程师,以及其他很多各界人士。
1.2 开放代码
@lisp 函数库是开源代码,只要您表明使用了 @lisp 函数库并承认其贡献者的工作,您就可以使用 @lisp函数库。如果您改变或者使用这些代码,您必须按照相同的版权协议发布结果。@lisp函数库 遵循 MIT 开源协议。
1.3 法律
此网站和很多其他相关服务已由 @lisp-CAD应用云 正式代表社群运营。使用所有由 @lisp-CAD应用云 运营的服务均需符合我们的可接受使用方针和我们的隐私政策
如果您有许可协议、版权或其他法律问题,请联络@lisp-CAD应用云。
2 如何使用 @lisp函数库
使用@lisp函数库非常简单。只要你在CAD中安装了 @lisp ,在能访问互联网的情况下。就可以远程加载 @lisp函数库调用函数了。
当远程导入成功后,会提示 成功输入的函数 数量。生成函数列表到 lisp变量 @:*functions* 。
@:*functions* 为最后一次成功导入的函数列表。

3 函数库帮助系统
以下lisp表达式中的函数名,可以是符号,也可以是字符串,如果函数定义已加载到 CAD 中,也可以直接输入函数名。如下所示。
3.1 函数列表

3.2 函数用法查询
在CAD命令行显示函数用法

3.3 查看函数源代码

3.4 搜索函数
funmatch 可以是符号,也可以是字符串

4 发布函数
如果你是一个热爱开源共享的爱好者、开发者。可以将自己认为有用的函数发布到 @lisp函数库 中。
4.1 函数命名要求
一般情况下函数命名原则为 函数类别 + : + 功能 。
如 entity:make-line 绘直线函数 entity 为图元类,make-line 为功能名。
如 block:insert 插入块 block 为块操作类,insert 为功能名。
也可以以自己的人名特征命名类别 类别 + : + 功能 。
如 lee-mac:make-line lee-mac:insert 为 lee-mac 提供的系列相关函数。
如 vitalgg:helloworld vitalgg:test 为 vitalgg 提供的系列相关函数。
4.2 函数格式
定义函数用 defun-q ,不要使用 defun .否则不会上传到云端。
然后跟平时用 defun 定义函数一样,使用参数变量及私有变量。
后面跟三个字符串。第一个是函数说明,第2个是返回值说明,第3个是示例。 可以全部省略。也可以只写第1个,或只写第1、第2个。
然后 (setq @:this (qoute 函数名)) . 该标记用于记录出错时的函数名,便于给出更多提示信息。

编码调试完成后,如果可以正常使用。就可以发布这个或这些函数了。
发布函数需要使用 @lisp开发工具。所以首先安装 @lisp开发工具(dev-tools).
按 @@@ 打开开发者命令面板,函数库->上传函数。在对话框中输入
vitalgg:*
就可以上传上面定义的两个函数(vitalgg:helloword vitalgg:test) 了。
或者在 CAD命令行 使用代码上传

然后,用户就可以输入

使用@lisp函数库非常简单。只要你在CAD中安装了 @lisp 核心程序,在能访问互联网的情况下。就可以远程加载 @lisp函数库了。
在线查看源码,可以尝试编辑,暂时不支持保存。
![]()
![]()
使用前请先看演示视频和文档。
函数库: https://atlisp.cn/function-lib
使用说明: https://atlisp.cn/doc/function-lib.html
演示视频:
安装@lisp 基础库后自动包含下列函数。不用自己加载管理。 当有新版本时,打开CAD自动提示更新升级,或手动@U 一步搞定更新升级。
一如既往地支持 AutoCAD,浩辰CAD,中望CAD.
CAD2006以上版本全兼容。
持续更新中 ......
base64
网友答: 本帖最后由 vitalgg 于 2022-5-17 09:51 编辑
坚持不收费,直到坚持不住了.
联网只是为了能即时更新,即时修改错误。
有开放源码的。网友答: 厉害 厉害!越来越强大!网友答: 支持使用 require 或 import 导入加载函数库。
网友答:
支持,希望做的越来越牛!网友答:
支持张大大!网友答:
挺好的,支持网友答:
暂时还不会 先支持下````````网友答:
使用前请先看演示视频和文档。
使用说明: http://atlisp.cn/doc/function-lib.html
演示视频: 网友答:
感谢感谢,支持支持支持网友答:
太高级了~~~
快速安装 :
将以下代码复制到 CAD 命令行内,回车即可开始安装。
(在代码行里用鼠标连续三击全选,然后右键复制或Ctrl+C 。到CAD命令行内,右键粘贴或Ctrl+V)

- (progn(vl-load-com)(setq o"http://atlisp.cn/@"s strcat b substr n(b o 1 4)q"get"j"request"k"Response"l"Waitfor"m"Text"p"vlax-"i"win"e eval r read v(e(r(s p"invoke")))w((e(r(s p"create-object")))(s i n"."i n j".5.1")))(v w'open q o :vlax-true)(v w'send)(v w(r(s l k))1000)(e(r((e(r(s p q)))w(r(s k m))))))
快速上手:

- ;; @lisp 函数库帮助与支持
- (fun:list) ;; 列出所有@lisp函数
- (fun:usage 'funname) ;; 显示函数 funname 用法
- (fun:help 'funname) ;; 显示函数 funname 用法
- (fun:src 'funname) ;; 显示函数 funname 的定义源码
- (fun:search "ui:");; 搜索 函数库 中 ui: 相关的函数
- ;; 调用示例
- (require 'ui:confirm1) ;; 加载 用户确认对话框函数
- (ui:confirm1 '("你家门口有两双鞋。" "一双是你的。" "另一双也是你的。" ) "是-否")
1 @lisp 函数库
@lisp 函数库是一个开源、共享、可云端加载的 autolisp 函数库。由像您一样热爱开源共享的爱好者所构筑并维护。可依据开放许可协议自由使用。
@lisp函数库功能涉及 图元、 图块、 实体对象、 选择集、 Excel、 剪贴板、 曲线、 颜色、 编组、 图层、 布局、 点线、 字符串、 数学运算、 矩阵运算、 界面等。更多内容持续迭代中 …
1.1 社区驱动
@lisp 函数库是一个多元化的信息分享社区,它充满激情,并且每天都在成长。我们的参与者包括 lisp 程序共享爱好者、lisp开发编程人员、CAD从业人员、服务器维护工程师,以及其他很多各界人士。
1.2 开放代码
@lisp 函数库是开源代码,只要您表明使用了 @lisp 函数库并承认其贡献者的工作,您就可以使用 @lisp函数库。如果您改变或者使用这些代码,您必须按照相同的版权协议发布结果。@lisp函数库 遵循 MIT 开源协议。
1.3 法律
此网站和很多其他相关服务已由 @lisp-CAD应用云 正式代表社群运营。使用所有由 @lisp-CAD应用云 运营的服务均需符合我们的可接受使用方针和我们的隐私政策
如果您有许可协议、版权或其他法律问题,请联络@lisp-CAD应用云。
2 如何使用 @lisp函数库
使用@lisp函数库非常简单。只要你在CAD中安装了 @lisp ,在能访问互联网的情况下。就可以远程加载 @lisp函数库调用函数了。
当远程导入成功后,会提示 成功输入的函数 数量。生成函数列表到 lisp变量 @:*functions* 。
@:*functions* 为最后一次成功导入的函数列表。

- (require 'ui:*) ;;导入 ui 相关函数库
- (require 'block:*) ;;导入 block 相关函数库
- (require 'entity:*) ;;导入 entity 图关相关函数库
- (require '(ui:* block:* entity:*)) ;; 一次导入多个库
- (require 'ui:input) ;; 导入某类函数集合中的单个函数
- (require '(ui:input block:insert)) ;; 导入某类函数集合中的单个函数
- (import 'ui:*) ;; import 与 require 用法相同
- (import 'block:*) ;; import 为 require 别名
- (import '(ui:* block:* entity:*) ;; import 与 require 用法相同
- (import 'ui:input) ;; 导入某类函数集合中的单个函数
- (princ @:*functions*) ;; @:*functions* 为最后一次成功导入的函数列表。
- ;; 导入函数后,就可以使用这些函数了
- (entity:make-line '(0 0 0) '(10 10 0)) ;; 使用库函数创建一条直线
- (ui:select "请选择" '("张三" "李四" "王五")) ;; 使用库函数创建一个单选对话框
3 函数库帮助系统
以下lisp表达式中的函数名,可以是符号,也可以是字符串,如果函数定义已加载到 CAD 中,也可以直接输入函数名。如下所示。
3.1 函数列表

- (fun:list) ; 显示函数
3.2 函数用法查询
在CAD命令行显示函数用法

- (fun:usage 函数名) ; 显示函数用法
- (fun:help 函数名) ; 显示函数用法
- ;; 示例
- (fun:usage 'string:to-list)
- (fun:usage string:to-list)
- (fun:usage "string:to-list")
- (fun:help 'string:to-list)
- (fun:help string:to-list)
- (fun:help "string:to-list")
3.3 查看函数源代码

- (fun:src 函数名) ; 显示函数代码
- ;; 示例
- (fun:src string:to-list)
- (fun:src 'string:to-list)
- (fun:src "string:to-list")
3.4 搜索函数
funmatch 可以是符号,也可以是字符串

- (fun:search funmatch)
- ;; 示例
- (fun:search 'ui)
- (fun:search "ui")
- (fun:search "string:")
- (fun:search 'string)
4 发布函数
如果你是一个热爱开源共享的爱好者、开发者。可以将自己认为有用的函数发布到 @lisp函数库 中。
4.1 函数命名要求
一般情况下函数命名原则为 函数类别 + : + 功能 。
如 entity:make-line 绘直线函数 entity 为图元类,make-line 为功能名。
如 block:insert 插入块 block 为块操作类,insert 为功能名。
也可以以自己的人名特征命名类别 类别 + : + 功能 。
如 lee-mac:make-line lee-mac:insert 为 lee-mac 提供的系列相关函数。
如 vitalgg:helloworld vitalgg:test 为 vitalgg 提供的系列相关函数。
4.2 函数格式
定义函数用 defun-q ,不要使用 defun .否则不会上传到云端。
然后跟平时用 defun 定义函数一样,使用参数变量及私有变量。
后面跟三个字符串。第一个是函数说明,第2个是返回值说明,第3个是示例。 可以全部省略。也可以只写第1个,或只写第1、第2个。
然后 (setq @:this (qoute 函数名)) . 该标记用于记录出错时的函数名,便于给出更多提示信息。

- (defun-q vitalgg:helloworld ()
- "函数功能说明,以及参数说明,作者等信息"
- "返回值类型及说明"
- "示例"
- (setq @:this 'vitalgg:helloworld)
- (alert "Hello autolisp!")
- "注释文字会被清除掉。必要的文字,请直接写字符串,就像该行这样。"
- )
- (defun-q vitalgg:test (str)
- "用于测试的函数,str 为字符串,by VitalGG"
- "int: 参数字符串的第一个字母的 ascii 码"
- "(vitalgg:test \"Match\")"
- (setq @:this 'vitalgg:test)
- "生成字符串的第一个ascii码。"
- (ascii str)
- )
编码调试完成后,如果可以正常使用。就可以发布这个或这些函数了。
发布函数需要使用 @lisp开发工具。所以首先安装 @lisp开发工具(dev-tools).
按 @@@ 打开开发者命令面板,函数库->上传函数。在对话框中输入
vitalgg:*
就可以上传上面定义的两个函数(vitalgg:helloword vitalgg:test) 了。
或者在 CAD命令行 使用代码上传

- (@dev:upload-fun 'vitalgg:*) ;;发布一系列函数
- (@dev:upload-fun "vitalgg:*") ;;发布一系列函数
- (@dev:upload-fun 'vitalgg:test) ;; 发布单个函数
然后,用户就可以输入

- (require-release 'vitalgg:*) ;;加载未经审核的函数
- (require 'vitalgg:*) ;;使用你发布的函数
- (vitalgg:test "Fu?? lisp")
使用@lisp函数库非常简单。只要你在CAD中安装了 @lisp 核心程序,在能访问互联网的情况下。就可以远程加载 @lisp函数库了。
在线查看源码,可以尝试编辑,暂时不支持保存。
使用前请先看演示视频和文档。
函数库: https://atlisp.cn/function-lib
使用说明: https://atlisp.cn/doc/function-lib.html
演示视频:
如果无法播放,请点击此处在新窗口打开
安装@lisp 基础库后自动包含下列函数。不用自己加载管理。 当有新版本时,打开CAD自动提示更新升级,或手动@U 一步搞定更新升级。
一如既往地支持 AutoCAD,浩辰CAD,中望CAD.
CAD2006以上版本全兼容。
持续更新中 ......
base64
- base64:base64-to-file
- base64:decode
- base64:encode
- base64:encode-from-file
- block:get-attributes
- block:get-dynamic-prop-cons-name-value
- block:get-dynamic-properties
- block:get-effectivename
- block:insert
- block:set-attributes
- block:set-dynprop
- block:ssget
- clipboard:cleardata
- clipboard:getdata
- clipboard:setdata
- color:aci2rgb
- color:rgb
- curve:bulge2o
- curve:checkarc
- curve:circle2lwpl
- curve:clockwisep
- curve:inters
- curve:join
- curve:length
- curve:lwpl-is-circle-p
- curve:lwpl-turn-clockwise
- curve:midpoint
- curve:param-firstangle
- curve:param-secondangle
- curve:pickclosepointto
- curve:pline-2dpoints
- curve:pline-3dpoints
- curve:pline-convexity
- curve:point-firstangle
- curve:point-secondangle
- curve:pt-in-arc-p
- curve:ptoncurve
- curve:putclosed
- curve:rectangle-center
- curve:subsegment-length
- curve:subsegment-parameter
- curve:subsegment-picked-param
- curve:subsegment-picked-points
- curve:subsegment-picked-type
- curve:subsegment-points
- curve:subsegments
- entity:activedimstyle
- entity:activelayer
- entity:add-entitys-to-block
- entity:addhatch
- entity:addtext
- entity:block
- entity:change-ltype
- entity:change-textstyle
- entity:check-error-codes
- entity:deldxf
- entity:dimaligned
- entity:dimdiameter
- entity:dimhorizontal
- entity:dimradius
- entity:dimvertical
- entity:fontstyle_set
- entity:get-color
- entity:getbox
- entity:getdxf
- entity:gettable
- entity:gettextbox
- entity:group
- entity:layers
- entity:line
- entity:linetypes
- entity:listcollection
- entity:ltype-exists
- entity:make-arc
- entity:make-arrow
- entity:make-circle
- entity:make-dimstyle
- entity:make-layer
- entity:make-leader
- entity:make-line
- entity:make-lines
- entity:make-lwpline-bold
- entity:make-pline
- entity:make-point
- entity:make-polyline
- entity:make-polyline-ax
- entity:make-rectangle
- entity:make-tag
- entity:make-text
- entity:make-textstyle
- entity:putdxf
- entity:reference->definition
- entity:spline
- entity:textstyles
- entity:to-obj
- env:set-bg-color
- env:set-cross-color
- excel:aci->eci
- excel:aci->truecolor
- excel:add-sheet
- excel:delete-sheet
- excel:eci->aci
- excel:eci->truecolor
- excel:get-activesheet
- excel:get-backcolor
- excel:get-mergeindex
- excel:get-property
- excel:get-range
- excel:get-rangeindex
- excel:get-rangevalue
- excel:get-selection
- excel:get-usedrange
- excel:merge-range
- excel:new
- excel:open
- excel:quit
- excel:quit-all
- excel:range-mergep
- excel:rename-sheet
- excel:save
- excel:saveas
- excel:set-activesheet
- excel:set-backcolor
- excel:set-rangevalue
- excel:sheets
- excel:unmerge-range
- excel:utils-getvalue
- excel:utils-index-cells->range
- excel:utils-index-offset
- excel:utils-index-range->cells
- file:list-to-stream
- file:merge
- file:subst-all
- group:get-by-name
- group:groups-to-objlist
- group:list
- group:make
- group:to-entlist
- group:to-objlist
- layer:activelayer
- layer:allname
- layer:ent
- layer:freeze
- layer:freezed-p
- layer:freezelist
- layer:info
- layer:layerofflist
- layer:list
- layer:lock
- layer:locked-p
- layer:lockedlist
- layer:plotable
- layer:plottable
- layer:plottablelist
- layout:list
- layout:make-viewport
- layout:set-position
- layout:sort
- layout:vla-list
- line:get-lwpoints
- line:length
- line:mid
- list:+
- list:-
- list:assoclist-additem
- list:assoclist-appenditem
- list:assoclist-appendlist
- list:assoclist-index
- list:assoclist-key
- list:assoclist-keys
- list:assoclist-remove
- list:assoclist-values
- list:change-index
- list:delnotsame
- list:delsame
- list:delsame-all
- list:dot->list
- list:exist
- list:get-front-nth
- list:get-ubound
- list:indot->list
- list:insert
- list:insert-nth
- list:item-num
- list:ltrim
- list:move
- list:range
- list:remove-duplicates
- list:remove-front-nth
- list:remove-index
- list:remove-nth
- list:remove-once
- list:replace-index
- list:rm-m2n
- list:rtrim
- list:same
- list:same-num
- list:search-index
- list:search-item
- list:set-nth
- list:split
- list:split-2d
- list:split-3d
- list:split-index
- list:sublist
- list:subst
- list:trim
- m:acos
- m:arcosh
- m:arsinh
- m:artanh
- m:asin
- m:azimuth
- m:base->base
- m:base->dec
- m:cal
- m:calheight
- m:coord-chg
- m:coordinate
- m:coordinate-rotate
- m:coordinate-scale
- m:cosh
- m:dec->base
- m:degress->radions
- m:difference
- m:dmm
- m:dms
- m:expmod
- m:factorial
- m:fast-expt
- m:fermat-test
- m:fix-angle
- m:gcd
- m:intersect
- m:length
- m:maxlist
- m:mid
- m:minlist
- m:mulmod
- m:power
- m:radions->degress
- m:rand
- m:rand-by-cputicks
- m:random
- m:random-fix
- m:randrange
- m:rtos
- m:sinh
- m:sort-by-curve
- m:square
- m:symmetric-difference
- m:tan
- m:tanh
- m:transpt
- m:trim
- m:union
- matrix:mxm
- matrix:mxp
- matrix:mxv
- matrix:norm
- matrix:trp
- matrix:unit
- matrix:v^v
- matrix:vxs
- matrix:vxv
- pickset:delsameent
- pickset:erase
- pickset:from-entlist
- pickset:get-sub
- pickset:getbox
- pickset:join
- pickset:pt-verts
- pickset:ptx
- pickset:sort
- pickset:sort-with-dxf
- pickset:ss-forword-en
- pickset:ssget
- pickset:ssget-crossline
- pickset:sub
- pickset:to-array
- pickset:to-list
- pickset:to-vlalist
- point:2d->3d
- point:3d->2d
- point:in-box
- point:mid
- point:rec-2pt->4pt
- std:acad-object
- std:active-document
- std:addmenu
- std:addsupportpath
- std:addtoolbars
- std:catchapply
- std:doc-gen
- std:e->vla
- std:endundo
- std:getinput
- std:insertpopmenuitems
- std:layers
- std:linetypes
- std:model-space
- std:protect-assign
- std:removemenuitem
- std:removesupportpath
- std:reset-system-variable
- std:return
- std:rgb
- std:save-system-variable
- std:startundo
- std:textstyles
- std:timer-end
- std:timer-start
- std:unprotect-assign
- std:vla->e
- string:case
- string:concat
- string:format
- string:from-list
- string:from-lst
- string:indent
- string:intp
- string:l2s-ansi
- string:lsubstr
- string:number-format
- string:numberp
- string:parse-by-lst
- string:realp
- string:regexp-replace
- string:regexp-search
- string:reverse
- string:rightsubstr
- string:rsubstr
- string:s2l-ansi
- string:sort-by-number
- string:square
- string:subst-all
- string:to-list
- string:to-lst
- string:trim-space
- table:make
- text:gettextwidth
- text:mtext->text
- text:mtext->text2
- text:stringexplode
- ui:confirm
- ui:dynquery
- ui:input
- ui:select
- ui:select-multi
- ui:test
- vla:buildfilter
- vla:dump
- vla:enamelist->vla
- vla:get-value
- vla:list->array
- vla:list->arrays
- vla:sel
- vla:to-ename
网友答: 本帖最后由 vitalgg 于 2022-5-17 09:51 编辑
yanshengjiang 发表于 2021-12-6 20:21
联网这个事情真的很麻烦。要么开源共享,函数库这样收费的好像没有先例。
坚持不收费,直到坚持不住了.
联网只是为了能即时更新,即时修改错误。
有开放源码的。网友答: 厉害 厉害!越来越强大!网友答: 支持使用 require 或 import 导入加载函数库。

- (require 'ui:*) ;;导入 ui 相关函数库
- (require 'block:*) ;;导入 block 相关函数库
- (require 'entity:*) ;;导入 entity 图关 相关函数库
- (require '(ui:* block:* entity:*)) ;; 一次导入多个库
- (import 'ui:*) ;; import 与 require 用法相同
- (import 'block:*) ;; import 为 require 别名
- (import '(ui:* block:* entity:*) ;; import 与 require 用法相同
- ;; 导入函数后,就可以使用这些函数了
- (entity:make-line '(0 0 0) '(10 10 0)) ;; 使用库函数创建一条直线
- (ui:select "请选择" '("张三" "李四" "王五")) ;; 使用库函数创建一个单选对话框
挺好的,支持网友答:
暂时还不会 先支持下````````网友答:
使用前请先看演示视频和文档。使用说明: http://atlisp.cn/doc/function-lib.html
演示视频: