明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1664|回复: 9

[讨论] 免内部函数获取VLX文件路径与FAS文件路径的方法原理与可靠性研究

  [复制链接]
发表于 2022-9-16 10:46 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2022-9-16 10:48 编辑

不死猫大侠在http://bbs.mjtd.com/thread-186220-1-1.html?_dsign=f530f7a1中发布了一种免内部函数获取VLX文件路径与FAS文件路径的方法,很多朋友问我原理是什么?可靠性如何?
为了解答这个问题,我做了些研究。
我的结论是:这种方式是读取了上次执行load函数时在内存中遗留的痕迹,效果和(getvar "lastprompt")类似,跟加载时的命令行显示内容有关,但跟lastprompt这个系统变量无关。
由于是读取内存中遗留的痕迹,因此这部分数据是已经过期的,不受控制的,很可能受到其它因素的干扰,影响可靠性。用这种方法要多做试验,防止意外情况。
猫大侠要求在vlx中把获取路径的fas放到第一个文件的位置,目的就是在第一时间读到这个痕迹,减少干扰。
先做一个试验,把不死猫大侠的“自身路径.vlx“这个文件复制到C:\Program Files (x86)\AutoCAD 2008\下
在命令行输入(load "自身路径.vlx")回车
返回的是:
19 nil
并没有返回文件的路径。
把这个vlx文件直接拖到acad的绘图区,显示:
命令: (LOAD "C:/Program Files (x86)/AutoCAD 2008/自身路径.vlx")
"C:/Program Files (x86)/AutoCAD 2008/自身路径.vlx" nil
由此可以证明,这种方法和(getvar "lastprompt")一样,受命令行显示内容的影响。
test1.fas 是读取上次load函数执行痕迹的小试验程序,看不懂fas字节码的朋友请不要浪费币。



本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +30 收起 理由
highflybird + 1 + 30 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-9-16 10:53 | 显示全部楼层
支持盛老师的的研究。
发表于 2022-9-16 11:01 | 显示全部楼层
本帖最后由 不死猫 于 2022-9-16 11:32 编辑

之前有人问我不用内部函数能不能实现,所以硬找的一种方法出来

lastprompt不支持APPload加载
在搜索目录下的文件,也可以用(Findfile "自身路径.vlx")直接获取路径。

如果愿意用内部函数获取会更稳定,不愿意的话可以考虑使用这个方法,算是一种思路。

使用非内部函数的方法,国产CAD也可以采用这个方法去获取一些数据。
只是中望上面经过测试,并没有得到想要的数据,有点可惜。

评分

参与人数 1明经币 +1 收起 理由
LYC688 + 1

查看全部评分

发表于 2022-9-16 12:31 | 显示全部楼层
大神门自己编写的fas文件在中望和浩辰等国产CAD上都不能正常加载,太可惜了。
 楼主| 发表于 2022-9-16 15:59 | 显示全部楼层
ludaweb 发表于 2022-9-16 12:31
大神门自己编写的fas文件在中望和浩辰等国产CAD上都不能正常加载,太可惜了。

国产cad很少有人去研究
发表于 2022-9-16 16:11 | 显示全部楼层
本帖最后由 hhh454 于 2022-9-16 16:13 编辑
ludaweb 发表于 2022-9-16 12:31
大神门自己编写的fas文件在中望和浩辰等国产CAD上都不能正常加载,太可惜了。

用官网自带的转化小程序就可以用,可能有些不能兼容,我测试过常用的函数都能用





本帖子中包含更多资源

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

x
发表于 2022-9-16 17:22 | 显示全部楼层
hhh454 发表于 2022-9-16 16:11
用官网自带的转化小程序就可以用,可能有些不能兼容,我测试过常用的函数都能用

嗯,谢谢楼上热心回复,这里说的是大神自己编写的fas文件。
发表于 2022-9-16 17:32 | 显示全部楼层
ludaweb 发表于 2022-9-16 17:22
嗯,谢谢楼上热心回复,这里说的是大神自己编写的fas文件。

嗯,改掉原始的结构了,估计是不行了,我用vlisp输出的fas用上面的转化后,都可以用的
 楼主| 发表于 2022-9-19 13:18 | 显示全部楼层
hhh454 发表于 2022-9-16 17:32
嗯,改掉原始的结构了,估计是不行了,我用vlisp输出的fas用上面的转化后,都可以用的

转换程序对fas文件的结构要求很严格,稍微有差别就不能转换
发表于 2022-9-20 19:46 | 显示全部楼层
与我测试结果差不多(在搜索路径下只能返回文件名), 如果要 在搜索目录下的文件 和 不在搜索目录下的文件两种情况 都获取到路径,需要增加一个判断,可以先用 (Findfile "自身路径.vlx") 如果返回 nil 然后用猫大侠的变量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 05:22 , Processed in 0.403321 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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