明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1562|回复: 8

[讨论] @lisp CAD应用云: 管理及分发自己的代码,实现autolisp程序的云管理。

[复制链接]
发表于 2020-12-22 06:53:57 | 显示全部楼层 |阅读模式
本帖最后由 vitalgg 于 2020-12-22 15:06 编辑

@lisp 是一个运行于 AutoCAD 的应用管理器。用于管理AutoLisp 程序的网络下载安装、加载、卸载、升级、查询等。可方便地实现 autolisp 程序的云管理。开发者不再需要制作自己的安装程序就可以发布到网上了。


* 如何成为开发者

  安装 @lisp开发工具 并输入个人信息就可以使用本网开发的 *开发工具* 创建应用、编译应用、上传和发布你的应用了。

  安装 @lisp开发工具 后输入您的 email 手机号 和 呢称(也可以用真名,应用包显示的作者名称。)。

  然后 点击菜单 开发 -> 获取开发令牌 ,过程中输入一个密码。如果你的 Email 和手机号没有被注册过的话,就可以进行应用的创建和发布了。

*  @lisp开发工具 的使用
** 创建应用
   该功能可创建一个初始的空应用包,注意应用包的标识名为全网唯一,不能与已有的应用名重复(英文标识),中文显示的名称可以重复,显示的作者不同。

   *应用包的标识名* 与安装的文件夹 (目录)应完全一致。创建后它们是一致的,不得更改。

   英文标识名(pkg.lsp 文件中的 :name) 尽量采用有意义的单词,命令行安装时易于识别。

   中文名称(pkg.lsp 文件中的 :full-name)尽量能表明功能。这个可以更改为自己中意的名称。

   简介(pkg.lsp 文件中的 :description)对应用包的功能进行简述。

   请记住   *应用包的标识名* 在编译和发布时需要输入。

  下面两个图片是自动创建的源文件。

** 编译应用
   当你创建了一个应用包,并完成功能代码的编写工作之后。就可以 *编译应用* 了, *编译应用* 可以将你的开发包定义中的 :files 中的可执行文件(不含扩展名的文件) 进行编译 生成 .fas 文件。

** 上传和发布应用

   上传应用 是 将你编写的应用包上传到 *@lisp服务器* 的 *先行版数据池* 中,用于测试及公众测试 。

   发布应用 是 将你编写的应用包上传到 *@lisp服务器* 的 *稳定版数据池* 中,供一般用户使用 。



* 应用包的架构组成

  @lisp 采用包的方式管理相对独立的程序。

  每个包有自己的目录结构。

  包目录文件结构:

    * pkg.lsp :包定义文件
    * readme 包功能及用法说明文档。
    * 包定义中指定的文件。

  首先需要对自己的程序进行包定义。用于定义包的名称,作者,下载网址及组成文件等。

  包定义文件命名方式为  pkg.lsp 。

  如 vitaltools 包 ,其定义文件名为 pkg.lsp

  其内容示例如下:
#+BEGIN_SRC lisp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; vitaltools -- 唯他工具集
;;; Author: VitalGG<vitalgg@gmail.com>
;;; Description: 基于 AutoLisp/VisualLisp 开发的绘图工具集
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(@:def-pkg '((:name . "vitaltools")
             (:full-name . "唯她工具集")
             (:author . "vitalGG")
             (:email  . "vitalgg@gmail.com")
             (:version . "1.0.0")
             (:description . "CAD 常用工具,图层、文本、基本数学运算、批量打印、业务逻辑化管理。")
             (:category . "通用")
             (:tags . ("批量打印"))
             (:url . "htt://atlisp.cn")
             (:files . ("tools-anti-virus"
                       "virus.lib"
                       "tools-contents"
                       "tools-layer"
                       "tools-math"
                       "tools-text"
                       "tukuang.dwg" ))))

;; Local variables:
;; coding: gb2312
;; End:
#+END_SRC

  在 files 点对中对应的文件列表,不带扩展名的文件均为 lsp 文件,编译上传后为 fas 文件。其它文件则需要带有扩展名,如病毒库文件 virus.lib,图框的dwg 文件等。

  如果需要安装这个包,需在 CAD 命令行 输入
#+BEGIN_SRC lisp
@I vitaltools
#+END_SRC



#+BEGIN_SRC lisp
(@:package-install "vitaltools")
#+END_SRC

  即可完成下载及安装配置工作,并重新生成菜单。

  CAD 在启动加载的时候会按这个文件列表加载各个 fas 文件(用户)。

* 包定义及开发主要函数

  @:def-pkg    定义包

  @:add-menu  菜单生成函数(用于在安装时生成菜单)

  @:help      命令提示函数(用于运行前的功能用法提示)

  @:define-config 定义包中可供使用者修改的参数。

  @:set-config  使用者修改包中定义的变量。

  @:get-config  取包中定义的变量的值。


* 菜单相关函数

  @lisp 可以在安装时生成相应的菜单。目前 所有的功能菜单均集中于 @lisp(A) 中。

  @:add-menu 函数用于生成菜单。

  格式如下:

#+BEGIN_SRC lisp
(@:add-menu "子菜单" "功能名称" "(功能函数)")
(defun 功能函数 ()
   ...
)
#+END_SRC

示例(无参数):
#+BEGIN_SRC lisp
(@:add-menu "大绘图" "附着签名" "(@:attach-sign)")
(defun @:attach-sign ( )
   ...
)
#+END_SRC

示例(有参数):

#+BEGIN_SRC lisp
(@:add-menu "大绘图" "插入图框" "(@:insert-tukuang \"tukuang.dwg\" @:*tukuang*)")
(@:add-menu "变更及工程处理" "变更" "(@:insert-tukuang \"bg-tukuang.dwg\" @:*bg-tukuang*)")
(@:add-menu "变更及工程处理" "处理方案" "(@:insert-tukuang \"fa-tukuang.dwg\" @:*fa-tukuang*)")

(defun @:insert-tukuang (tk-file tk-dwg)
...)

#+END_SRC

* 使用参数项的定义与使用

#+BEGIN_SRC lisp
(@:define-config 'vitaltools:projects-output "D:\\Output" "本地PDF输出目录")
(@:set-config 'vitaltools:projects-output "D:\\PDF")
(@:get-config 'vitaltools:projects-output)
(@:list-config)
#+END_SRC
说明:
** 变量定义
   (@:define-config 可供用户修改的变量名(符号)  默认值  变量说明)
** 变量设置及修改值
   (@:set-config 可供用户修改的变量名(符号)  用户设定值)
** 变量读值
   (@:get-config 可供用户修改的变量名(符号)  )

** 列所有的变量
   (@:list-config)
* 帮助及提示系统

在函数定义体后跟提示内容. 在配置文件 @config.lsp 中设置提示方式。
目前有两种提示方式, 1 是命令行提示方式, 2 是 alert 提示方式。
#+BEGIN_SRC lisp
(defun foobar  ()
(@:help "运行时提示该 foobar 函数的使用方法等。 ")
...)

#+END_SRC

* Hello world 示例

  包定义:
  pkg.lsp :
#+BEGIN_SRC lisp

(@:def-pkg '((:name . "helloworld")
             (:full-name . "hello world 示例")
             (:author . "vitalGG")
             (:email  . "vitalgg@gmail.com")
             (:version . "1.0.0")
             (:description . "第一个示例。")
             (:url . "htt://atlisp.cn")
             (:files . ("helloworld"))))

#+END_SRC

  helloworld.lsp :

#+BEGIN_SRC lisp
(@:add-menu "Hello" "helloworld" "(helloworld)")
(defun helloworld ()
  (@:help "输出hello world 到命令行及对话框提示。")
  (princ "hello world.\n")
  (alert "hello world.")
  (princ)
)
;; Local variables:
;; coding: gb2312
;; End:
#+END_SRC

  安装 helloworld 包

#+BEGIN_SRC lisp
(@:package-install "helloworld")
#+END_SRC

  完成后会在 菜单中出现相应的 helloworld 项。点击会执行相应的代码功能.

* 布署

  如果你有自己的服务器, 可将 包定义的的 url 改成你自己的网址,确保 files 中的文件能从你的网址中下载。
  下载地址为 *url/stable/* 下的文件。

  然后把 包定义文件 pkg.lsp 分享到包数据库中即可。






"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-12-22 08:31:14 | 显示全部楼层
楼主起得真早,谢谢分享!
 楼主| 发表于 2020-12-22 10:04:51 | 显示全部楼层
本帖最后由 vitalgg 于 2020-12-22 10:07 编辑
panliang9 发表于 2020-12-22 08:31
楼主起得真早,谢谢分享!

只是想推荐一种开发及程序的组织模式。以及程序的管理模式,网上查软件,下载,安装。管理多个小程序太麻烦。而且小程序分布太散,重复轮子太多。

小程序定义的命令名 容易重复 比如 太多的 (defun C:TT ()..),所以建议开发的defun 命名都用自己的包或不同的英文加 : 后跟函数名的方式进行隔离。

@lisp 程序 的函数 命名均为  @:开头。

[size=14.6667px]本功能相关命令均为 @+单个字符 。在CAD命令行中输入以下命令即可完成相应操作。

命令
助记符
功能
@

重新加载 @lisp , 如果 @lisp 不完整,多次运行可自行修补完整 。
@H
help
显示CAD命令及用法。
@I
install
输入该命令后输入想要安装的应用包,就可以下载并安装相应的应用包了。
@L
list
GUI/CUI 显示已安装的应用包列表。
@M
menu
重新生成菜单。如果 @lisp 菜单与现有的环境不匹配,可运行此命令。
@P
package
GUI 包管理器。可以选择要使用的应用包。
@R
remove
从本地移除应用包。
@S
setup
GUI 设置系统变量的值。
@U
update
手动更新 @lisp 系统及已安装的包。
@W
www
访问 @lisp 网站。查询 @lisp 新动态及新增应用包。

 楼主| 发表于 2020-12-22 17:42:38 | 显示全部楼层
fonts 常用字体包有问题不能加载,按以下方法处理,暂时不要使用。

Q: 当@lisp 启动时提示有错误,如果显示 加载 fonts 包 后,提示: 参数类型错误 stringp nil

A: 用记事本打开 pkg-in-use.lst 文件,删除 fonts 那一行后,在 CAD 命令窗口 输入 `@' 重新加载 @lisp. 或者删除 pkg-in-use.lst 文件。再重新加载 @lisp 后 @P 重新配置要使用的包。
发表于 2020-12-22 18:54:30 | 显示全部楼层
这个程序在哪有
 楼主| 发表于 2020-12-22 19:27:57 | 显示全部楼层
本帖最后由 vitalgg 于 2020-12-22 19:30 编辑

atlisp.cn/stable/@lisp.fas 不能上传,也不能发链接。更多内容见网址: atlisp.cn
发表于 2020-12-22 21:19:44 | 显示全部楼层
vitalgg 发表于 2020-12-22 19:27
atlisp.cn/stable/@lisp.fas 不能上传,也不能发链接。更多内容见网址: atlisp.cn

下载了几个程序包,运行秋枫批量打印出现致命错误,现在CAD开不了了,怎么删除那些程序包
 楼主| 发表于 2020-12-22 21:27:24 | 显示全部楼层
本帖最后由 vitalgg 于 2020-12-22 21:37 编辑
烟盒迷唇 发表于 2020-12-22 21:19
下载了几个程序包,运行秋枫批量打印出现致命错误,现在CAD开不了了,怎么删除那些程序包

所有内容 都在 Administrator 目录下 的 @lisp 目录,把这个目录删了就行了。
批量打印的那个目录是 batchplot .

你把 @lisp 目录下的 pkg-in-use.lst 这个文件删了就不加载其他小程序了。只加载 @lisp核心。

出现什么致命错误,CAD 版本是多少? 这些我都在CAD2016试过可以运行的,所以才发上去了。有好多vlx我这个加载时容易退出的,都没往上传。

看来这个也得下架了。

批量打印 看我另一个贴子。

http://bbs.mjtd.com/thread-182860-1-1.html
 楼主| 发表于 2020-12-29 03:33:28 | 显示全部楼层
新增图框自动编号功能 。命令行输入 @U 自动升级到新版
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 13:37 , Processed in 0.165545 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表