baitang36 发表于 2022-9-16 10:46:50

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

本帖最后由 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字节码的朋友请不要浪费币。



tigcat 发表于 2022-9-16 10:53:23

支持盛老师的的研究。

不死猫 发表于 2022-9-16 11:01:43

本帖最后由 不死猫 于 2022-9-16 11:32 编辑

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

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

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

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

ludaweb 发表于 2022-9-16 12:31:08

大神门自己编写的fas文件在中望和浩辰等国产CAD上都不能正常加载,太可惜了。

baitang36 发表于 2022-9-16 15:59:43

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

国产cad很少有人去研究

hhh454 发表于 2022-9-16 16:11:34

本帖最后由 hhh454 于 2022-9-16 16:13 编辑

ludaweb 发表于 2022-9-16 12:31
大神门自己编写的fas文件在中望和浩辰等国产CAD上都不能正常加载,太可惜了。
用官网自带的转化小程序就可以用,可能有些不能兼容,我测试过常用的函数都能用





ludaweb 发表于 2022-9-16 17:22:51

hhh454 发表于 2022-9-16 16:11
用官网自带的转化小程序就可以用,可能有些不能兼容,我测试过常用的函数都能用

嗯,谢谢楼上热心回复,这里说的是大神自己编写的fas文件。

hhh454 发表于 2022-9-16 17:32:37

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

嗯,改掉原始的结构了,估计是不行了,我用vlisp输出的fas用上面的转化后,都可以用的

baitang36 发表于 2022-9-19 13:18:49

hhh454 发表于 2022-9-16 17:32
嗯,改掉原始的结构了,估计是不行了,我用vlisp输出的fas用上面的转化后,都可以用的

转换程序对fas文件的结构要求很严格,稍微有差别就不能转换

aiming 发表于 2022-9-20 19:46:30

与我测试结果差不多(在搜索路径下只能返回文件名), 如果要 在搜索目录下的文件 和 不在搜索目录下的文件两种情况 都获取到路径,需要增加一个判断,可以先用 (Findfile "自身路径.vlx") 如果返回 nil 然后用猫大侠的变量
页: [1]
查看完整版本: 免内部函数获取VLX文件路径与FAS文件路径的方法原理与可靠性研究