vitalgg 发表于 2021-11-18 06:11:24

@lisp函数库,开源、云加载、易维护。实时查看函数定义。

本帖最后由 vitalgg 于 2022-5-18 04:20 编辑

快速安装 :
将以下代码复制到 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函数库了。


在线查看源码,可以尝试编辑,暂时不支持保存。


http://bbs.mjtd.com/data/attachment/forum/202112/22/103122d9u89985u91eu99e.png



http://atlisp.cn/static/functionlib.gif

使用前请先看演示视频和文档。
函数库: https://atlisp.cn/function-lib
使用说明: https://atlisp.cn/doc/function-lib.html
演示视频: https://atlisp.cn/static/@lisp-function-lib.mp4

安装@lisp 基础库后自动包含下列函数。不用自己加载管理。 当有新版本时,打开CAD自动提示更新升级,或手动@U 一步搞定更新升级。

一如既往地支持 AutoCAD,浩辰CAD,中望CAD.
CAD2006以上版本全兼容。
持续更新中 ......

base64
[*]base64:base64-to-file
[*]base64:decode
[*]base64:encode
[*]base64:encode-from-file
block
[*]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
[*]clipboard:cleardata
[*]clipboard:getdata
[*]clipboard:setdata
color
[*]color:aci2rgb
[*]color:rgb
curve
[*]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
[*]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
[*]env:set-bg-color
[*]env:set-cross-color
excel
[*]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
[*]file:list-to-stream
[*]file:merge
[*]file:subst-all
group
[*]group:get-by-name
[*]group:groups-to-objlist
[*]group:list
[*]group:make
[*]group:to-entlist
[*]group:to-objlist
layer
[*]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
[*]layout:list
[*]layout:make-viewport
[*]layout:set-position
[*]layout:sort
[*]layout:vla-list
line
[*]line:get-lwpoints
[*]line:length
[*]line:mid
list
[*]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
[*]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
[*]matrix:mxm
[*]matrix:mxp
[*]matrix:mxv
[*]matrix:norm
[*]matrix:trp
[*]matrix:unit
[*]matrix:v^v
[*]matrix:vxs
[*]matrix:vxv
pickset
[*]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
[*]point:2d->3d
[*]point:3d->2d
[*]point:in-box
[*]point:mid
[*]point:rec-2pt->4pt
std
[*]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
[*]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
[*]table:make
text
[*]text:gettextwidth
[*]text:mtext->text
[*]text:mtext->text2
[*]text:stringexplode
ui
[*]ui:confirm
[*]ui:dynquery
[*]ui:input
[*]ui:select
[*]ui:select-multi
[*]ui:test
vla
[*]vla:buildfilter
[*]vla:dump
[*]vla:enamelist->vla
[*]vla:get-value
[*]vla:list->array
[*]vla:list->arrays
[*]vla:sel
[*]vla:to-ename







vitalgg 发表于 2021-12-6 20:27:42

本帖最后由 vitalgg 于 2022-5-17 09:51 编辑

yanshengjiang 发表于 2021-12-6 20:21
联网这个事情真的很麻烦。要么开源共享,函数库这样收费的好像没有先例。
坚持不收费,直到坚持不住了.
联网只是为了能即时更新,即时修改错误。
有开放源码的。

xj6019 发表于 2021-11-18 08:24:29

厉害 厉害!越来越强大!

vitalgg 发表于 2021-11-19 09:34:49

支持使用 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 "请选择" '("张三" "李四" "王五")) ;; 使用库函数创建一个单选对话框

AndyWang 发表于 2021-11-18 10:56:43

支持,希望做的越来越牛!

1006015131 发表于 2021-11-18 14:41:45

支持张大大!

紫苏炒黄瓜 发表于 2021-11-19 14:49:59

挺好的,支持

gzsod 发表于 2021-11-20 09:30:21

暂时还不会 先支持下````````

vitalgg 发表于 2021-11-20 10:13:46

使用前请先看演示视频和文档。

使用说明: http://atlisp.cn/doc/function-lib.html
演示视频: http://atlisp.cn/static/@lisp-function-lib.mp4

轮回 发表于 2021-11-20 15:47:37

感谢感谢,支持支持支持

magicheno 发表于 2021-11-20 15:53:40

太高级了~~~
页: [1] 2 3 4 5 6
查看完整版本: @lisp函数库,开源、云加载、易维护。实时查看函数定义。