打开*。来自Autol的dwg文件
如何打开*。Autolisp中的dwg文件?行:(命令“_open”“文件路径和名称”)似乎不起作用。 它不起作用的原因是,您需要将变量“FILEDIA”更改为“0”,以显示open命令的命令行版本。
(command "FILEDIA" 0)
你将以什么方式使用它?作为一个开放的常规,还是作为一个更大的常规的一部分?这将有助于我们了解如何进一步做到这一点。
编辑:当“FILEDIA”设置为“0”时,打开命令将需要完整的图形路径才能打开正确的图形。如果这只是为了打开一个图形,而不是一个更大的例程的一部分,那么最好只使用“打开”对话框I.M.O。 以下是我所拥有的:
它从命令行工作,但不从代码工作。
需要做哪些改变才能使其发挥作用? 我进一步研究了它,虽然我也无法让它正常工作,但我确实在AfraLisp上看到了这个页面:
此网站上有以下代码。我还没有试过(因为我正准备加入俱乐部),但看看这是否对你有帮助:
;;;----------------CODING STARTS HERE---------------------------
;;; ( GEN:OpenDwgFile filename bit )
;;; Function discerns which Acad version and applies appropriate command.
;;; Bit controls as follows
;;; 0 = Open file if Acad2000 or separate session if Acad14
;;; 1 = Open file - Don't save current drawing
;;; 2 = Open file - Save current drawing.
( defun GEN:OpenDwgFile ( filenm bit / cmd f )
;;; local functions
( defun OpenDwgFileR15 ( f / cmd )
; string together the cmd expression and send to VBASTMT e.g.
; ( command "vbastmt" "AcadApplication.Documents.Open
\"x:/ADG/templates/ControlledSurveys.dwt\"")
( setq cmd ( strcat "AcadApplication.Documents.Open \"" f "\"" ))
( command "vbastmt" cmd )
) ; local defun
( defun OpenDwgFileR14 ( f bit / cmd )
( command "pan" "0.0,1.0,0.0" "0.0,0.0,0.0" ) ; force prompt
( if ( = bit 1 )
( command "_.open" "n" f ) ; save changes
( command "_.open" "y" f ) ; don't save changes
)
) ; local defun
( defun OpenDwgFile>0 ( f )
( alert "When using this file either SAVEAS and edit file \n OR
\nCUT and PASTE but don't overwrite original." )
(if ( wcmatch ( getvar "ACADVER" ) "15*" )
( progn
( setvar "SDI" 0 ) ; turn on multiple document interface
( OpenDwgFileR15 f ) ; if R2000 open dwg otherwise start separate
session of Acad.
); progn
( startapp "acad.exe" f)
)
); local defun
( defun OpenDwgFile>1 ( filenm / f ) ; don't save changes
(if ( wcmatch ( getvar "ACADVER" ) "15*" )
( progn ( OpenDwgFileR15 filenm ));progn
( OpenDwgFileR14 filenm 0 )
)
); local defun
( defun OpenDwgFile>2 ( filenm / f ) ;save changes
(if ( wcmatch ( getvar "ACADVER" ) "15*" )
( progn ( OpenDwgFileR15 filenm ));progn
( OpenDwgFileR14 filenm 1 )
)
); local defun
; main function
( if ( setq f ( findfile filenm )) ; locate file
( progn
( cond
(( = bit 0 )( OpenDwgFile>0 f )); access another drawing
(( = bit 1 )( OpenDwgFile>1 f )); don't save changes
(( = bit 2 )( OpenDwgFile>2 f )); save changes
);cond
);progn
( alert ( strcat "AutoCad cannot find " filenm ))
)
) ; defun
;;;----------------CODING ENDS HERE---------------------------
你好
证明这一点:
3 我知道vla的人能做到。。。还没学会。。。 感谢Dommy2Hotty和SpeedCAD的帮助。Vla肯定在我的编程学习列表中。
你好
碰巧我遇到了和你一样的问题。我已经尝试了本主题中的所有代码,但都无法实现。真是个讨厌鬼。不知道为什么它可以从命令行运行,但不能从脚本运行。这真是垃圾。我只是想知道你找到解决办法了吗?我尝试了Speedcad的代码,但不知道它是如何工作的。
谢谢
艾伦 我访问了Autocad网站支持并找到了解决方案。在使用该命令之前,我们必须禁用多设计环境(MDE)
(setvar“SDI”1)
这是我使用的代码
(命令“FILEDIA”0)
(命令“_.打开”y“文件)
(setvar“filedia”1)
希望这有帮助
艾伦 我仍然对is有问题
奇怪的是,我一打开文件,函数中定义的所有变量就被重置为零。我试图用我的脚本来打开文件,进行更改,然后另存为不同的名称。但当我执行那个命令时,我所有的变量集都消失了。你知道如何定义变量,使其保持不变吗。
谢谢
艾伦
页:
[1]
2