找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4735|回复: 28

[求助] 为什么用command打开图形不成功?

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-23 16:34:41 | 显示全部楼层 |阅读模式

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

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

×

  1. 命令: (command "_.open" "c:\\abc\\1.dwg" )
  2. 未知命令“C:\ABC\1.DWG”。按 F1 查看帮助。
不会进行,提示错误,请高手帮忙。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-23 17:36:47 | 显示全部楼层
这是由于在SDI=0下,从VisualLisp执行open命令是不行的,原因是当执行OPEN命令时候,AutoCAD内部要创建一个新的文档并且激活它,在激活一个新的文档窗口后,AutoCAD继续执行LISP表达式,但它继续求值的表达式是在旧的文档下的,所以要出错了。

解决这个问题可以用ActiveX接口(在内部激活新窗口后,马上会回到旧的文档继续求值LISP表达式)

[pcode=lisp,true]
(vl-load-com)
(defun c:vlopen ()
(setq acadApp (vlax-get-acad-object)
        acadDocs (vla-get-documents acadApp)
)

(vla-open acadDocs "c:/abc/1.dwg")
)
[/pcode]

点评

老大,我试了下,写成相对路径就提示错误如下: “错误: Automation 错误。 未找到文件 .\结构专业\JIEGOU.DWG” 有没有支持相对路径的写法呢?  详情 回复 发表于 2013-8-26 22:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1077个

财富等级: 财源广进

发表于 2013-8-26 22:26:57 | 显示全部楼层
XDSoft 发表于 2013-4-23 17:36
这是由于在SDI=0下,从VisualLisp执行open命令是不行的,原因是当执行OPEN命令时候,AutoCAD内部要创建一个 ...

老大,我试了下,写成相对路径就提示错误如下:
“错误: Automation 错误。 未找到文件 .\结构专业\JIEGOU.DWG”
有没有支持相对路径的写法呢?

点评

路径用两个斜杠 \\ 分割试试。  详情 回复 发表于 2013-8-27 04:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-27 04:44:16 | 显示全部楼层
hardthinking 发表于 2013-8-26 22:26
老大,我试了下,写成相对路径就提示错误如下:
“错误: Automation 错误。 未找到文件 .\结构专业\JIEG ...

路径用两个斜杠 \\ 分割试试。

点评

老大,绝对路径的可以执行,相对路径的不行...我是用 \\ 两个斜杠分割的,我想达到的目的是文件夹目录结构 和 文件名取名办法都固定,快速打开工程文件。请问有LISP打开相对路径dwg的办法吗?只要能打开dwg  详情 回复 发表于 2013-8-28 23:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

发表于 2013-8-27 12:59:45 | 显示全部楼层
这要在打开新文档之前,用lisp写一段代码让新文档自动加载那段代码并自动执行,代码的作用是让新文档的控制权交返给旧文档,以便让旧文档继续执行剩下的表达式。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-27 13:19:24 来自手机 | 显示全部楼层
ayl1004 发表于 18 分钟前
这要在打开新文档之前,用lisp写一段代码让新文档自动加载那段代码并自动执行,代码的作用是让新文档的控制权交返给旧文档,以便让旧文档继续执行剩下的表达式。

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

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

发表于 2013-8-27 13:27:56 | 显示全部楼层


  1. (defun getcommandname (file   /     acadapp   documents
  2.            actdoc   mnlfile   tmpfile   tmpf
  3.            value   str1     abcDoc
  4.           )
  5.   (vl-load-com)
  6.   (setq  acadapp    (vlax-get-acad-object)
  7.   documents (vla-get-documents acadapp)
  8.   actdoc    (vla-get-activedocument acadapp)
  9.   )
  10.   ;;寻找自动加载的"acad.mnl"文件,并在同目录下创建"tmpfile.lsp"文件
  11.   (setq  mnlfile  (findfile "acad.mnl")
  12.   tmpfile  (strcat (vl-filename-directory mnlfile) "\\tmpfile.lsp")
  13.   tmpf  (open tmpfile "w")
  14.   )
  15.   ;;在tmpfile.lsp"文件里写入 findfunc 函数定义
  16.   (princ (vl-prin1-to-string
  17.      '(defun
  18.        findfunc
  19.        (file / lst1 lst2 lst3)
  20.        (mapcar
  21.         '(lambda (x)
  22.      (if (or (wcmatch x "C:*")
  23.        (wcmatch x "c:*")
  24.          )
  25.        (setq lst1 (cons x lst1))
  26.      )
  27.          )
  28.         (atoms-family 1)
  29.        )
  30.        (load file (princ))
  31.        (mapcar
  32.         '(lambda (x)
  33.      (if (or (wcmatch x "C:*")
  34.        (wcmatch x "c:*")
  35.          )
  36.        (setq lst2 (cons x lst2))
  37.      )
  38.          )
  39.         (atoms-family 1)
  40.        )
  41.        (mapcar
  42.         '(lambda (x)
  43.      (if (not (member x lst1))
  44.        (setq lst3 (cons x lst3))
  45.      )
  46.          )
  47.         lst2
  48.        )
  49.        (vl-bb-set 'a lst3)
  50.       ) ;_ 结束defun
  51.    ) ;_ 结束 vl-princ1-to-string
  52.    tmpf
  53.   ) ;_ 结束 princ
  54.   ;;在文件的后面添加两行代码
  55.   ;;(findfunc file) ;_ 执行自定义函数
  56.   ;;(vl-load-com) ;_ 在第二个文档的名称空间里加载ActiveX支持
  57.   ;;(vla-Activate actDoc) ;_ 激活前一个文档,把控制权交还给它
  58.   (princ (strcat "\n(findfunc " (vl-prin1-to-string file) " )")
  59.    tmpf
  60.   )
  61.   (princ "\n(vl-load-com)" tmpf)
  62.   (princ "\n(vla-Activate actdoc)" tmpf)
  63.   ;;关闭"tmpfile.lsp"文件
  64.   (close tmpf)
  65.   ;;从头到尾依次读取指定文件的每一行,
  66.   ;;如果文件存在指定的字符串,就返回这
  67.   ;;条字符串,并停止搜索,否则返回nil。
  68.   (defun readeveryline (fd string / str)
  69.     (if  (setq str (read-line fd))
  70.       (if (/= string str)
  71.   (readeveryline fd string)
  72.   str
  73.       )
  74.     )
  75.   )
  76.   ;;打开"acad.mnl"文件,依次读取每一行
  77.   ;;寻找是不是存在(load tmpfile (princ))这一行代码
  78.   ;;若不存在,就在文件里添加
  79.   (setq  tmpf (open mnlfile "r")
  80.   str1 (strcat "(load " (vl-prin1-to-string tmpfile) " (princ))")
  81.   )
  82.   (if (readeveryline tmpf str1)
  83.     (close tmpf)
  84.     (progn (close tmpf)
  85.      (setq tmpf (open mnlfile "a"))
  86.      (princ (strcat "\n" str1) tmpf)
  87.      (close tmpf)
  88.     )
  89.   )
  90.   ;;新建一个文档,同时,把控制权交给它
  91.   (setq abcDoc (vla-add documents ""))
  92.   ;;第二个文档执行完所有的代码后,自动把控制权交还给第一个文档
  93.   ;;第一个文档得到控制权后,就关闭第二个文档
  94.   (vla-close abcDoc)
  95.   ;;从黑板读取变量值
  96.   (setq value (vl-bb-ref 'a))
  97.   ;;删除黑板的变量
  98.   (vl-bb-set 'a nil)
  99.   ;;删除文件
  100.   (vl-file-delete tmpfile)
  101.   value
  102. )

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-8-27 14:35:15 | 显示全部楼层
;;打开文件时,不出现字体选择对话框 自贡黄明儒 2013年2月5日
(defun C:MyOpen (/ *ACAD* DOCOBJ DWGNAME)
  (setq *ACAD* (vlax-get-acad-object))
  (setq DwgName (getfiled "打开文件" (getvar "dwgprefix") "dwg" 0))
  (setq DocObj (vla-open (vla-get-Documents *ACAD*) DwgName))
  (vla-Activate DocObj)
  (if *ACAD* (vlax-release-object *ACAD*))
  (princ)
)

点评

不出现字体选择,是不是也不太好啊,有些图打开后可能字看不到了。  详情 回复 发表于 2013-8-27 14:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-27 14:51:48 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-8-27 14:35
;;打开文件时,不出现字体选择对话框 自贡黄明儒 2013年2月5日
(defun C:MyOpen (/ *ACAD* DOCOBJ DWGNAME ...

不出现字体选择,是不是也不太好啊,有些图打开后可能字看不到了。

点评

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

使用道具 举报

发表于 2013-8-27 16:14:12 来自手机 | 显示全部楼层
以前RAVE版主写过一个可以自定义字体静默替换ARX,可惜没有升级了,期望API能加入

点评

用现有的API函数就可以写一个这样的LISP啊。  详情 回复 发表于 2013-8-27 17:00
vla-open 打开,也是用默认字体打开的吧? acad.fmp  详情 回复 发表于 2013-8-27 16:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-8-27 16:58:14 | 显示全部楼层
Free-Lancer 发表于 2013-8-27 16:14
以前RAVE版主写过一个可以自定义字体静默替换ARX,可惜没有升级了,期望API能加入

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-27 17:00:05 | 显示全部楼层
Free-Lancer 发表于 2013-8-27 16:14
以前RAVE版主写过一个可以自定义字体静默替换ARX,可惜没有升级了,期望API能加入

用现有的API函数就可以写一个这样的LISP啊。

点评

网上看过一篇文章介绍这个自动替换字体,Open时监视是否出现替换字体对话框,如果有进行抑制不让其出现,后台自动替换,和事后替换是两个概念  详情 回复 发表于 2013-8-27 17:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-27 17:17:04 | 显示全部楼层
newer 发表于 2013-8-27 17:00
用现有的API函数就可以写一个这样的LISP啊。

网上看过一篇文章介绍这个自动替换字体,Open时监视是否出现替换字体对话框,如果有进行抑制不让其出现,后台自动替换,和事后替换是两个概念

点评

altfont 可以在系统变量里面设置,保存到注册表的应该,会自动替换,你试试看。  详情 回复 发表于 2013-8-27 17:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-27 17:45:35 | 显示全部楼层
Free-Lancer 发表于 2013-8-27 17:17
网上看过一篇文章介绍这个自动替换字体,Open时监视是否出现替换字体对话框,如果有进行抑制不让其出现, ...

altfont 可以在系统变量里面设置,保存到注册表的应该,会自动替换,你试试看。

点评

这个altfont在哪?只找到一个vla-put-altfont,我知道有个fmp文件可以做替换,但是是基于确定的字体文件名,拷贝的图字体名太多了!  详情 回复 发表于 2013-8-27 18:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 20:36 , Processed in 0.494239 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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