明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

[【高飞鸟】] 【飞鸟集】心随我动--为LISP定制的动态输入,拖拉和动态信息函数(更新至20130731)

    [复制链接]
发表于 2011-11-17 23:56 | 显示全部楼层
没有2004,不过看上去应该是可以的,要是有的话一定要测试一下
发表于 2011-11-18 02:14 | 显示全部楼层
了不起!
发表于 2011-11-18 08:43 | 显示全部楼层
飞版辛苦了!2004测试成功!若再能支持2000~2002就完美了!写了个自动加载程序,程序根据cad版本自动加载飞版的arx不同版本文件!
  1. ;;;将dynarxfor2004-2006.arx等四个文件拷贝到CAD支持目录!(autoladdynarx)函数根据CAD不同版本自动加载!
  2. (defun autoladdynarx (/ loaded fn)
  3.   (cond ((= 16 (atoi (getvar 'acadver)))
  4.   (if (not (member "dynarxfor2004-2006.arx" (arx)))
  5.     (if (setq fn (findfile "dynarxfor2004-2006.arx"))
  6.       (setq loaded (arxload fn "1"))
  7.       (setq loaded "2")
  8.       )
  9.     )
  10.   )
  11. ((= 17 (atoi (getvar 'acadver)))
  12.   (if (not (member "dynarxfor2007-2009.arx" (arx)))
  13.     (if (setq fn (findfile "dynarxfor2007-2009.arx"))
  14.       (setq loaded (arxload fn "1"))
  15.       (setq loaded "2")
  16.       )
  17.     )
  18.   )
  19. ((= 18 (atoi (getvar 'acadver)))
  20.   (if (= "x86" (getenv "PROCESSOR_ARCHITECTURE"))
  21.     (if (not (member "dynarxfor2010-2012x32.arx" (arx)))
  22.       (if (setq fn (findfile "dynarxfor2010-2012x32.arx"))
  23.         (setq loaded (arxload fn "1"))
  24.         (setq loaded "2")
  25.         )
  26.       )
  27.     (if (not (member "dynarxfor2010-2012x64.arx" (arx)))
  28.       (if (setq fn (findfile "dynarxfor2010-2012x64.arx"))
  29.         (setq loaded
  30.         (arxload (findfile "dynarxfor2010-2012x64.arx")
  31.           "1"))
  32.         (setq loaded "2")
  33.         )
  34.       )
  35.     )
  36.   )
  37. )
  38.   (if (= "1" loaded)
  39.     (progn
  40.     (alert "dynarx加载失败!程序将退出!")
  41.     (exit)
  42.     )
  43.     (if (= "2" loaded)
  44.     (progn
  45.     (alert "未找到对应的dynarx文件!程序将退出!")
  46.     (exit)
  47.     )
  48.       (princ "dynarx成功加载!")
  49.       )
  50.     )
  51.   (princ)
  52.   )

点评

Ea
修改下文件名,自动加载就简单了,如改为DynArxForR16.arx ;DynArxForR17.arx ;DynArxForR17x64.arx DynArxForR18.arx ;DynArxForR18x64.arx  发表于 2011-11-20 19:36
谢谢Gu_xl带来的自动加载程序。  发表于 2011-11-18 09:09

评分

参与人数 1明经币 +1 收起 理由
highflybir + 1 赞一个!

查看全部评分

发表于 2011-11-18 09:44 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-11-18 09:45 编辑
Gu_xl 发表于 2011-11-18 08:43
飞版辛苦了!2004测试成功!若再能支持2000~2002就完美了!写了个自动加载程序,程序根据cad版本自动加载飞 ...


我还发现一个问题,就是在打开cad第一次自动加载arx后接着调用(HFB_PointMonitor "InfoCallback"),不起作用,需要调调用一次(HFB_PointMonitor "InfoCallback")才起作用!以后再打开cad窗口就没问题了!原因何在?飞版帮助分析一下!再次感谢!
调用代码:
  1. ;;;cad第一次加载,命令行运行tt,(HFB_PointMonitor "InfoCallback")没起作用,需再次运行tt才行!
  2. (defun InfoCallback (dynpt / txt lst dat)
  3.     (setq txt (vl-princ-to-string (mapcar 'rtos dynpt)))
  4.     (setq txt (strcat "\n当前点的坐标是:" txt))
  5.     (if (setq lst (nentselp dynpt))
  6.       (progn
  7. (setq dat (entget (car lst)))
  8.         (strcat txt "\n这个图元的类型是:" (cdr (assoc 0 dat)))
  9.       )
  10.       txt
  11.     )
  12.   )
  13. (defun c:tt  (/ loaded)
  14.   (GXL-ERROR-INIT (list 'cmdecho 0))
  15.   (cond ((= 16 (atoi (getvar 'acadver)))
  16.   (if (not (member "dynarxfor2004-2006.arx" (arx)))
  17.     (if (setq fn (findfile "dynarxfor2004-2006.arx"))
  18.       (setq loaded (arxload fn "1"))
  19.       (setq loaded "2")
  20.       )
  21.     )
  22.   )
  23. ((= 17 (atoi (getvar 'acadver)))
  24.   (if (not (member "dynarxfor2007-2009.arx" (arx)))
  25.     (if (setq fn (findfile "dynarxfor2007-2009.arx"))
  26.       (setq loaded (arxload fn "1"))
  27.       (setq loaded "2")
  28.       )
  29.     )
  30.   )
  31. ((= 18 (atoi (getvar 'acadver)))
  32.   (if (= "x86" (getenv "PROCESSOR_ARCHITECTURE"))
  33.     (if (not (member "dynarxfor2010-2012x32.arx" (arx)))
  34.       (if (setq fn (findfile "dynarxfor2010-2012x32.arx"))
  35.         (setq loaded (arxload fn "1"))
  36.         (setq loaded "2")
  37.         )
  38.       )
  39.     (if (not (member "dynarxfor2010-2012x64.arx" (arx)))
  40.       (if (setq fn (findfile "dynarxfor2010-2012x64.arx"))
  41.         (setq loaded
  42.         (arxload (findfile "dynarxfor2010-2012x64.arx")
  43.           "1"))
  44.         (setq loaded "2")
  45.         )
  46.       )
  47.     )
  48.   )
  49. )

  50.   (if (not (or (= 1 loaded) (= 2 loaded)))
  51.     (if *dynView* ;_ 储存图形浏览关闭或打开变量
  52.       (progn
  53. (HFB_PointMonitor)
  54. (princ "\n图形浏览关闭!")
  55. (setq *dynView* nil)
  56. )
  57.       (progn
  58. (HFB_PointMonitor "InfoCallback")
  59. (princ "\n图形浏览打开!")
  60. (setq *dynView* t)
  61. )
  62.       )
  63.     )
  64.   
  65.   (princ)
  66.   )

点评

有可能还是vl-acad-defun,手动在lisp加上应当OK  发表于 2011-11-18 11:58
待我有空分析这个地方的bug.  发表于 2011-11-18 09:58
发表于 2011-11-18 10:21 | 显示全部楼层
怎么没有2008的?我用的是2008bit64的.....

点评

现在1楼已经更新2007,2008,2009的的64位版本。  发表于 2011-11-18 10:38
发表于 2011-11-18 11:39 | 显示全部楼层
期待50楼,分享源码,学习
发表于 2011-11-18 12:22 | 显示全部楼层
Gu_xl 发表于 2011-11-18 09:44
我还发现一个问题,就是在打开cad第一次自动加载arx后接着调用(HFB_PointMonitor "InfoCallback"),不起 ...

添加一句(vl-acad-defun 'InfoCallback)就搞定了!谢谢飞诗指点!

点评

在我的机器上运行正常,即使第一次加载也没出现那个问题。呵呵,不知道这个问题是否与机器有关?  发表于 2011-11-18 14:13
发表于 2011-11-18 15:00 | 显示全部楼层
可以用了。。。
发表于 2011-11-18 15:10 | 显示全部楼层
太厉害了!要顶。尽快到50楼。
发表于 2011-11-18 19:15 | 显示全部楼层
顶到50也没用看不懂ARX
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 04:05 , Processed in 0.184966 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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