tomhamlet 发表于 2022-7-6 23:58:01

所以我们又见面了!

多么长时间的缺席啊。当然,这篇文章还有更多内容。
 
不久前,我制作了一个图标,这样我公司的起草者只需点击鼠标就可以将右边框放置在正确的位置。这是我的宏:
 
(命令“.insert”“I:/borders/11x17”“0,0”“1”“1”“0”)
 
这将在图形上以1的比例和0度的旋转在坐标0,0处插入边框。但是如果我想在你必须选择插入点的地方做这个,我该怎么做呢?我的第一个想法是:
 
(命令“.insert”“I:/borders/11x17”“0”“1”“0”)
 
离这儿近吗?

BlackBox 发表于 2022-7-7 00:03:19

(command ".insert" "I:/borders/11x17" pause "1" "1" "0")

tomhamlet 发表于 2022-7-7 00:07:33

非常感谢。

BlackBox 发表于 2022-7-7 00:11:21

 
不客气。

tomhamlet 发表于 2022-7-7 00:15:09

还有一个问题。如果我有一个名为DIMENSION的层,并且无论我当前使用的是哪一层,我都希望标记出现在该层上,那么这可以通过宏来完成吗?或者这是否超出了它的限制?

BlackBox 发表于 2022-7-7 00:19:05

 
这是一个常见的请求。。。基本上有两种选择:
 
您可以在宏中使用命令调用来存储现有层,设置所需层,并在完成后还原,但如果用户点击escape等,则缺少错误处理。。
 
或者,您可以使用LISP例程(宏可以调用LISP,而不是使用Diesel),其中包括适当的错误处理。
 
最后,您可以使用Visual LISP Reactor,它始终基于特定命令的使用设置所需的层。。。不确定这是否对您有好处,但我将其用于外部参照、图像等。。这里的好处是,不需要自定义命令或宏,用户可以使用功能区、菜单或键盘别名。

tomhamlet 发表于 2022-7-7 00:22:26

如果我继续把它添加到我的宏中,这行得通吗
 
(command ".clayer" "dimension") (command ".insert" "I:/borders/11x17" pause "1" "1" "0")

BlackBox 发表于 2022-7-7 00:25:05

 
当你自己尝试时会发生什么?

BlackBox 发表于 2022-7-7 00:29:00

如果我要用宏执行此操作,我会加载以下LISP代码:
 

(defun c:Insert11x17Border (/ *error* layerName oldClayer)

(defun *error* (msg)
    (and oldClayer (setvar 'clayer oldClayer))
    (cond ((not msg))                                                ; Normal exit
          ((member msg '("Function cancelled" "quit / exit abort")))   ; <esc> or (quit)
          ((princ (strcat "\n** Error: " msg " ** ")))               ; Fatal error, display it
    )
    (princ)
)

(if (tblsearch "layer" (setq layerName "Dimension"))
   (progn
   (setq oldClayer (getvar 'clayer))
   (setvar 'clayer layerName)
   (command "._insert" "I:/borders/11x17" pause "1.0" "1.0" "0.0")
   )
   (*error* (strcat "\"" layerName "\" layer not found"))
)
(*error* nil)
)

 
... 并使用以下宏之一。。。如果在打开图形时加载LISP文件,则:

^C^C^PInsert11x17Border ^P

 
... 第一次点击按钮时,如果需要加载LISP文件:

^C^C^P(if (not c:Insert11x17Border)(load "Insert11x17Border.lsp")) Insert11x17Border ^P

 
... 假设LISP文件名为“Insert11x17Border.lsp”,并且驻留在SFSP中。

tomhamlet 发表于 2022-7-7 00:31:44

我真的用它做了一组标签。我的公司有9个标签,标签是一个六边形,里面有一个标注编号,其中8个有45度间隔方向的箭头。因此,我制作了这个托盘,使其更容易插入,而无需每次通过windows资源管理器。我使用了border示例,因为它们与insert命令密切相关,我觉得使用它更容易解释,然后将“暂停”与这些新命令关联起来。
 

 
所以现在他们只需点击与所需标签相关的按钮。
 
我确实尝试了另一个宏来更改图层,效果很好!唯一消极的一面是,图层保持在维度上,尽管它仍然比我们所做的要容易得多,但我预见到这些老人会抱怨
页: [1] 2
查看完整版本: 所以我们又见面了!