找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1458|回复: 9

[其他]:AutoLisp 生成的ARX.........

[复制链接]
发表于 2006-1-4 14:01:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
朋友们:
   我将AutoLisp 的函数转成ARX后。运行的速度并没有明显提高。这是为什么?谁有一个合理的解释?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-1-4 14:04:18 | 显示全部楼层
其实autolisp转成arx后,还是faS格式的
要看你是怎么做的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 08:34:24 | 显示全部楼层
我理解ARX是已编译的执行文件,直接由系统调入执行,而LISP是解释型的,需由系统装入解释器,对LISP进行逐语句解释执行,运行速度应该不是一个数量级的。就向早期的BASIC与编译的其它程序一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-8 16:28:12 | 显示全部楼层
在R14的情况下,通过把lisp编辑成arx文件的过程是这样的
(刚刚没有说清楚,楼下的再看一下吧)

做的成的arx文件其实是这样的:
1.首先把源代码都编辑成FAS文件
2,然后拷贝一个文件,就是你选择的Vlarts.arx或者Vlrts.arx
3.将该文件改名成你的目标文件ARX
4,把那些FAS文件一个一个附加到这个目标文件ARX里面去
这是我解读编辑过程序得到的.

所以说ARX只是个骗人的东西,实际上还是解释形的fas文件.

以下是核心函数
来自文件vlide.lsp
[php]
(defun make-package+ (exe-fnm           modules-fnm        xdf-list
                      dcl-list           ini-names        /
                      app-fnm           arx-xdf-list
                      )
  (setq        app-fnm        (cdr exe-fnm)
        exe-fnm        (if (eq (car exe-fnm) t)
                  nil
                  (car exe-fnm)
                  )
        )
  ;;============================================================
  (princ "\nStart making application...\n")

  ;;+* VSV 02/01/98 VLX case: no prototype ARX
  (if (null exe-fnm)
    ;; VLX application
    (progn
      (VL-FILE-DELETE app-fnm)
      )
    ;; ARX application
    (progn
      (if (equal "" (VL-FILENAME-DIRECTORY exe-fnm))
        (setq exe-fnm (strcat
                        (VL-FILENAME-DIRECTORY (VL-EXE-FILENAME))
                        "/"
                        exe-fnm
                        )
              )
        )
      (princ "Copy ")
      (princ exe-fnm)
      (princ " to ")
      (princ app-fnm)
      (princ "...")
      (if (file-readable-p app-fnm)
        (if (not (VL-FILE-DELETE app-fnm))
          (_vlisp-fatal-exit
            (strcat
              "can not delete prevous executable file;\n"
              "try (ARXUNLOAD "
              (VL-PRIN1-TO-STRING app-fnm)
              ")"
              )
            )
          )
        )
      (if (not (VL-FILE-COPY exe-fnm app-fnm))
        (_vlisp-fatal-exit "can not copy executable file")
        )
      (princ " done.\n")
      )
    )

  ;; ini-file appears as user file (maybe compiled)
  ;; or can be generated by the system
  (princ "Packing init file...")
  (VLISP-FASRES-UPDATE
    app-fnm
    (car modules-fnm)
    (strcat (VL-FILENAME-BASE app-fnm) "-INIT") ;** VSV 31/07/96
    )
  (magic-sync app-fnm)
  (princ " done.\n")

  (princ "Packing fas files...")
  (foreach fn (cdr modules-fnm)
    (VLISP-FASRES-UPDATE app-fnm fn (VL-FILENAME-BASE fn))
    (magic-sync app-fnm)
    )
  (if (cdr modules-fnm)
    (princ " done.\n")
    (princ " skipped.\n")
    )

  (foreach fl xdf-list
    (cond
      ((= (car fl) "ARX")
       (setq arx-xdf-list (cons (cadr fl) arx-xdf-list))
       )
      ((= (car fl) "XDF")
       (setq arx-xdf-list (cons (cadr fl) arx-xdf-list))
       )
      (t
       (princ "\n; *** WARNING: illegal XDF file specification ")
       (prin1 fl)
       (terpri)
       )
      )
    )

  (princ "Packing XDF files...")
  (if arx-xdf-list
    (progn
      (VLISP-XDFRES-UPDATE
        app-fnm                                ; application filename
        (reverse arx-xdf-list)                ; XDF file names
        (VL-FILENAME-BASE app-fnm)                ; resource name
        )
      (magic-sync app-fnm)
      (princ " done.\n")
      )
    (princ " skipped.\n")
    )

  (princ "Packing DCL files...")
  (if dcl-list
    (progn
      (foreach fl dcl-list
        (cond
          ((= (car fl) "DCL")
           (VLISP-DCLRES-UPDATE
             app-fnm
             (cadr fl)
             (VL-FILENAME-BASE (cadr fl))
             )
           (magic-sync app-fnm)
           )
          (t
           (princ "\n; *** WARNING: illegal DCL file specification ")
           (prin1 fl)
           (terpri)
           )
          )
        )
      (princ " done.\n")
      )
    (princ " skipped.\n")
    )

  (princ "Packing init functions...")
  (if ini-names
    (progn
      (VLISP-INIRES-UPDATE app-fnm ini-names)
      (magic-sync app-fnm)
      (princ " done.\n")
      )
    (princ " skipped.\n")
    )

  ;|(princ "To start application type:\n\t(")
  (princ (if exe-fnm
           "ARXLOAD "
           "LOAD " ) )
  (prin1 app-fnm)
  (princ ")\n")|;
  (princ "Application packed ")
  (prin1 app-fnm)
  (princ "\nOK.\n")
  (princ)
  )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-8 16:52:06 | 显示全部楼层
那里那里,真正的arx是vc开发的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-9 08:05:25 | 显示全部楼层
最初由 nigma 发布
[B]那里那里,真正的arx是vc开发的 [/B]

其实使用SharpLisp软件也能生成ARX。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-9 08:08:47 | 显示全部楼层
谢谢二楼有朋友!实际上R14是将解释器与FAS捆半绑到一起,构成一个ARX可执行文件,我的理解是否正确。
如果是这样,一定可以将R2000以后的LISP转换为“ARX”的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-9 08:13:30 | 显示全部楼层
R2000以后的LISP是无法转换为“ARX”的,你可试试SharpLisp软件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-9 08:38:50 | 显示全部楼层
最初由 WHGF 发布
[B]谢谢二楼有朋友!实际上R14是将解释器与FAS捆半绑到一起,构成一个ARX可执行文件,我的理解是否正确。
如果是这样,一定可以将R2000以后的LISP转换为“ARX”的。 [/B]


我有想过这么做,但是后来看过R14的做法后,就没有这想法了
实在是没有意义的事情.
而且,做面fas还可以方便在各个CAD版本内使用,而做成arx就会有版本限制,很不方便.

所以建议你还是不要想这个东东了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-11 10:34:03 | 显示全部楼层
同意楼上的意见,还是fas好, 通用一些
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-29 01:21 , Processed in 0.649398 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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