Ahankhah 发表于 2022-7-6 08:40:18

如何控制OPEN命令vi

嗨,球童们,
 
正如你们大多数人所知,CommandWillStart和CommandEnded是两个反应器,当一个命令调用和一个命令结束时触发。
 
我正在寻找一种方法来控制打开命令后,选择一个图形,然后才真正打开它。这个任务可能吗?
 
非常感谢您的建议和帮助。

SOliver 发表于 2022-7-6 08:49:30

您可以创建一个包含类似以下内容的函数,而不是使用“open”命令
 
setq filePath (getfiled "Select file" "" "dwg" )
 
这样,您将只返回文件路径,允许您在打开文件之前执行任何操作。
 
希望这有帮助

BlackBox 发表于 2022-7-6 09:03:07

阿汉哈-请澄清。。。我不明白在打开一幅画之前,你想对它做什么?
 
SOliver-不幸的是,GetField没有提供保存的快捷方式(标准打开对话框左侧的链接),也没有“记住”上次打开的目录(没有额外的编码,可能使用GETENV/SETENV?),这就是为什么我也使用带有标准OPEN、XATTACH等命令的reactor。但是,在较新版本的AutoCAD中,我必须修改代码以包含前置命令(INITDIA),以便强制执行某些命令的对话框版本。

Ahankhah 发表于 2022-7-6 09:14:09

 
SOliver,非常感谢您的建议,但更改OPEN命令不会影响。打开(内部ommand),因此任何调用“_.OPN”或“.OPEN”的代码都将绕过我捕获要打开的文件的方式。

Ahankhah 发表于 2022-7-6 09:16:40

 
RenderMan,我想:
1-确定图形是否为只读。
2-在某些情况下(取决于登录(用户)的名称),即使它实际上不是只读的,也可以在没有任何消息的情况下以只读方式打开它。
3-对于某些情况,请像AutoCAD一样打开它。
 
我希望它足够清楚?

BlackBox 发表于 2022-7-6 09:24:51

 
是的,这很有帮助。
 
不幸的是,考虑到您概述的条件步骤,您将不得不使用getfield选项。下面是一个小示例,它结合了Lee的_FileOpen-p函数来确定只读状态:
 

(defun c:FOO(/ _FileOpen-p _Open f)
(princ "\rFOO ")
(vl-load-com)

(defun _FileOpen-p(fileName / f)
   ;; Lee Mac, 2011
   ;; filename = filename of file to test
   ;; Returns T if specified file is open
   (if (setq f (open fileName "a"))
   (close f)
   T))

(defun _Open (acApp f o)
   (vla-activate (vla-open (vla-get-documents acApp) f o)))

(if (setq f (getfiled "Select file" "" "dwg" )
   ((lambda (acApp user / s)
      (cond

      ;; If user is a member, open read-only
      ((vl-position user '("user1" "user2" "user3"))
         (_Open acApp f :vlax-true))

      ;; If available, open normally, else open read-only
      ((if (_FileOpen-p f)
         (progn
             (alert "File is already open. ")
             (_Open acApp f :vlax-true))
         (_Open acApp f :vlax-false)))))
   (vlax-get-acad-object)
   (getvar 'loginname)))
(princ))

 
希望这有帮助!
 
**编辑-在选择位于(getvar’dwgprefix)中的图形时,还要注意GetField的行为,因为您需要使用STRCAT添加active directory。

Ahankhah 发表于 2022-7-6 09:39:33

 
非常感谢RenderMan,这真的很有帮助。
 
李,一如既往,您可以回答AutoCAD编码中的任何问题。
我非常感谢你的帮助。

BlackBox 发表于 2022-7-6 09:41:39

 
不客气。
页: [1]
查看完整版本: 如何控制OPEN命令vi