找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1096|回复: 10

[求助] [求助]:■请问在LSP如何判定已经加载了某个ARX程序啊?我问了一天都没有人回答■

[复制链接]
发表于 2006-5-19 21:29:04 | 显示全部楼层 |阅读模式

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

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

×
请问在LSP命令里如何判定已经加载了某个ARX程序?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8157个

财富等级: 富甲天下

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

使用道具 举报

发表于 2006-5-19 22:06:45 | 显示全部楼层
假如还想得到所加载arx文件的路径的话,可以用Michael Kolomiyets这个比较复杂的函数
[php]
;**************************************FindARXPaths*********************************
;Author:   Michael Kolomiyets
;Function: Return list of full paths of all loaded ARX files
;Usage:    (FindARXPaths)

(vl-load-com)
(defun FindARXPaths(/ PCDrives PCDrive PCDriveChoice PCDriveLetter
                                PCFolder PCFolderPath i)
    (setq ReturnFolders nil)
    (setq ContProc T)
    (setq FlSysObj(vlax-create-object "scripting.filesystemobject"))
    (setq ARXCheckList(mapcar '(lambda(ARXItm)(cons ARXItm "No"))(arx)))
    (setq PCDrives(vlax-get-property FlSysObj 'Drives))
    (vlax-for PCDrive PCDrives
     (setq PCDriveChoice(vlax-get-property PCDrive 'DriveLetter))
     (if(/= PCDriveChoice "A")
      (setq PCDriveLetter(cons PCDriveChoice PCDriveLetter))
     );if
    );vlax
    (setq i 0)
    (while (and(<= i (1-(length PCDriveLetter)))ContProc)
     (setq PCDrive(vlax-get-property PCDrives 'Item (nth i PCDriveLetter)))
     (if(and
         (=(vlax-get-property PCDrive 'DriveType) 2)
         (=(vlax-get-property PCDrive 'IsReady):vlax-true)
        );and
        (progn
          (setq PCFolder(vlax-get-property PCDrive 'RootFolder))
          (setq PCFolderPath(vlax-get-property PCFolder 'Path))
          (MainProc PCFolderPath)
        );progn
      );if
      (setq i(1+ i))
    );while
    ;(mapcar '(lambda(x)(princ(strcat x "\n"))) (reverse ReturnFolders))
    (reverse ReturnFolders)
);defun

(defun MainProc(SearchFolder / PCFolder PCSubFolders
                                          PCLoopFolder PCFolderPath FullPath)
  (if(/=(substr SearchFolder (strlen SearchFolder) 1) "\\")
    (setq SearchFolder(strcat SearchFolder "\\"))
  );if
  (foreach ARXDotPr ARXCheckList
    (if(equal(cdr ARXDotPr) "No")
      (progn
        (setq FullPath(strcat SearchFolder(car ARXDotPr)))
        (if(=(vlax-invoke-method FlSysObj 'FileExists FullPath) :vlax-true)
          (progn
            (setq ReturnFolders(cons FullPath ReturnFolders))
            (setq ARXCheckList(subst(cons(car ARXDotPr) "Yes")ARXDotPr ARXCheckList))
            (if(not(vl-remove "Yes"(mapcar 'cdr ARXCheckList)))
              (setq ContProc nil)
            );if
          );progn
        );if
      );progn
     );if
   );for
    (if ContProc
      (progn
        (if
         (not(vl-catch-all-error-p(setq PCFolder(vl-catch-all-apply
          'vlax-invoke-method (list FlSysObj 'GetFolder SearchFolder)))))
         (progn
          (setq PCSubFolders(vlax-get-property PCFolder 'SubFolders))
          (vlax-for PCLoopFolder PCSubFolders
            (if ContProc
              (progn
                (setq PCFolderPath(vlax-get-property PCLoopFolder 'Path))
                (MainProc PCFolderPath)
              );progn
            );if
          );vlax
         );progn
        );if
      );progn
    );if
);defun


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

使用道具 举报

 楼主| 发表于 2006-5-20 02:31:42 | 显示全部楼层
2楼中的命令(arx)的确可以看到加载的程序,但怎么用lisp来判定是否加载了某个程序而非人工去看呢? 也就是说用什么函数进行判定返回的表中有要的字符串呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-20 06:39:39 | 显示全部楼层
[PHP]
(defun c:test ( / )
  (setq arxFile "myarx.arx")
  (if (member (strcase arxFile t) (arx))
    (progn
      (alert "已经加载!")
    )
    (alert "没有加载!")
  );if
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-20 14:18:27 | 显示全部楼层
谢谢5楼的回答!如果没有加载该程序,它会提示“没有加载”,但加载上后再执行您的命令,会有如下提示:Select Objects in Current Drawing or Xref:  这个怎么解决呢?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8157个

财富等级: 富甲天下

发表于 2006-5-20 15:59:59 | 显示全部楼层
;;; arxFileName should with ext ie:MyApp.Arx
;;; usage: (qArxLoad "MyApp.Arx")
(defun qArxLoad (arxFileName)
  (cond
    ((not (findfile arxFileName)) nil)
    ((member (strcase arxFileName T) (arx)) nil)
    (T (ArxLoad arxFileName))
  )
  (prin1)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-20 19:55:16 | 显示全部楼层
这个信息"Select Objects in Current Drawing or Xref:"什么时候出现的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-20 22:16:58 | 显示全部楼层
最初由 王咣生 发布
[B]这个信息"Select Objects in Current Drawing or Xref:"什么时候出现的? [/B]

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-5-22 09:56:15 | 显示全部楼层
这个问题真这么难吗?我看那个代码好像没有什么问题啊 奇怪了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 08:18 , Processed in 0.197214 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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