明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 621|回复: 6

[源码] 加载云端的lsp代码

  [复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
  1. (vl-load-com)
  2. (defun c:tt (/ url xPost startTime lispCode)
  3.     "加载云端的lsp代码"

  4.     ;; 云端 URL
  5.     (setq url "https://tool.zml84.xyz/lisp/code_test/test.lsp")
  6.    
  7.     ;; 禁用缓存的方法1:URL添加时间戳参数
  8.     (setq url (strcat url
  9.           (if (vl-string-search "?" url)
  10.                 "&"
  11.                 "?"
  12.           )
  13.           "time="
  14.           (rtos (getvar "CDATE") 2 6) ;_获取当前时间
  15.         )
  16.     )

  17.     ;;尝试创建 XMLHTTP 对象
  18.     (if  (setq xPost (vlax-get-or-create-object "Microsoft.XMLHTTP"))
  19.         (progn

  20.             ;; 同步打开连接
  21.             (vlax-invoke-method xPost 'open "GET" url :vlax-false)

  22.             ;; 禁用缓存的方法2:禁用缓存的完整实现
  23.             (vlax-invoke-method
  24.                 xPost
  25.                 'SetRequestHeader
  26.                 "If-Modified-Since"
  27.                 "0"
  28.             ) ;_设置请求头禁用缓存。
  29.             (vlax-invoke-method
  30.                 xPost
  31.                 'SetRequestHeader
  32.                 "Cache-Control"
  33.                 "no-cache"
  34.             ) ;_标准HTTP请求头指令,其作用为:客户端必须向服务器验证缓存有效性。与响应头中的 Cache-Control 不同,此处是客户端主动声明缓存策略。
  35.             (vlax-invoke-method
  36.                 xPost
  37.                 'SetRequestHeader
  38.                 "Pragma"
  39.                 "no-cache"
  40.             ) ;_针对HTTP/1.0客户端,与Cache-Control形成兼容性覆盖。
  41.             (vlax-invoke-method
  42.                 xPost
  43.                 'SetRequestHeader
  44.                 "Expires"
  45.                 "0"
  46.             ) ;_设置资源过期时间为过去时间,强制客户端重新请求。
  47.             (vlax-invoke-method
  48.                 xPost
  49.                 'SetRequestHeader
  50.                 "If-None-Match"
  51.                 "*"
  52.             ) ;_客户端要求服务器验证所有缓存版本,无论ETag(实体标签)具体值如何。

  53.             ;; 发送请求
  54.             (vlax-invoke-method xPost 'send)

  55.             ;; 判断状态,并添加超时机制
  56.             (setq startTime (getvar "DATE"))
  57.             (while (and  (/= (vlax-get-property xPost 'readyState) 4)
  58.                         (< (- (getvar "DATE") startTime) 5) ;_5秒超时
  59.                     )
  60.                 (princ "\r正在等待响应...")
  61.             )

  62.             ;; 检查请求是否成功完成
  63.             (if  (and (= (vlax-get-property xPost 'readyState) 4)
  64.                     (= (vlax-get-property xPost 'status) 200)
  65.                 )
  66.                 (progn
  67.                     ;; 取出结果
  68.                     (setq lispCode
  69.                         (vlax-get-property xPost 'responseText)
  70.                     )

  71.                     ;; 显示内容
  72.                     (print lispCode)

  73.                     ;; 运行代码
  74.                     (eval (read (strcat "(progn " lispCode ")")))
  75.                 )
  76.                 (princ (strcat "****出错啦。HTTP错误"
  77.                         (itoa (vlax-get-property xPost 'status))
  78.                         ":"
  79.                         (vlax-get-property xPost 'statusText)
  80.                     )
  81.                 )
  82.             )

  83.             ;; 释放资源
  84.             (vlax-release-object xPost)
  85.         )
  86.         (princ "****出错啦。无法创建 XMLHTTP 对象。")
  87.     )

  88.     ;; 静默退出
  89.     (princ)
  90. )

评分

参与人数 3明经币 +3 金钱 +5 收起 理由
hn10183051 + 1
这只胆小鬼 + 1 很给力!
tigcat + 1 + 5 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
大佬玩得高端.
回复 支持 反对

使用道具 举报

发表于 昨天 14:55 | 显示全部楼层
想学习怎么做到的
回复 支持 反对

使用道具 举报

发表于 昨天 15:43 | 显示全部楼层
有报错。不知道为什么

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 昨天 16:10 | 显示全部楼层
本帖最后由 kozmosovia 于 2025-4-15 16:13 编辑

你这好像读取的是个FAS或者VLX
回复 支持 反对

使用道具 举报

发表于 半小时前 | 显示全部楼层
要能直接加载云端代码,怎么实现
回复 支持 反对

使用道具 举报

发表于 19 分钟前 | 显示全部楼层
hn10183051 发表于 2025-4-16 08:00
要能直接加载云端代码,怎么实现

可以实现
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-16 08:47 , Processed in 0.185095 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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