乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 78|回复: 17

[综合讨论] 所以我们又见面了!

[复制链接]

4

主题

30

帖子

26

银币

初来乍到

Rank: 1

铜币
20
发表于 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”)
 
离这儿近吗?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-7 00:03:19 | 显示全部楼层
  1. (command ".insert" "I:/borders/11x17" [color="red"]pause [/color]"1" "1" "0")
回复

使用道具 举报

4

主题

30

帖子

26

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-7 00:07:33 | 显示全部楼层
非常感谢。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-7 00:11:21 | 显示全部楼层
 
不客气。
回复

使用道具 举报

4

主题

30

帖子

26

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-7 00:15:09 | 显示全部楼层
还有一个问题。如果我有一个名为DIMENSION的层,并且无论我当前使用的是哪一层,我都希望标记出现在该层上,那么这可以通过宏来完成吗?或者这是否超出了它的限制?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

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

使用道具 举报

4

主题

30

帖子

26

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-7 00:22:26 | 显示全部楼层
如果我继续把它添加到我的宏中,这行得通吗
 
  1. (command ".clayer" "dimension") (command ".insert" "I:/borders/11x17" [color=red]pause [/color]"1" "1" "0")
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-7 00:25:05 | 显示全部楼层
 
当你自己尝试时会发生什么?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-7 00:29:00 | 显示全部楼层
如果我要用宏执行此操作,我会加载以下LISP代码:
 
  1. (defun c:Insert11x17Border (/ *error* layerName oldClayer)
  2. (defun *error* (msg)
  3.     (and oldClayer (setvar 'clayer oldClayer))
  4.     (cond ((not msg))                                                  ; Normal exit
  5.           ((member msg '("Function cancelled" "quit / exit abort")))   ; <esc> or (quit)
  6.           ((princ (strcat "\n** Error: " msg " ** ")))                 ; Fatal error, display it
  7.     )
  8.     (princ)
  9.   )
  10. (if (tblsearch "layer" (setq layerName "Dimension"))
  11.    (progn
  12.      (setq oldClayer (getvar 'clayer))
  13.      (setvar 'clayer layerName)
  14.      (command "._insert" "I:/borders/11x17" pause "1.0" "1.0" "0.0")
  15.    )
  16.    (*error* (strcat """ layerName "" layer not found"))
  17. )
  18. (*error* nil)
  19. )

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

 
... 第一次点击按钮时,如果需要加载LISP文件:
  1. ^C^C^P(if (not c:Insert11x17Border)(load "Insert11x17Border.lsp")) Insert11x17Border ^P

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

使用道具 举报

4

主题

30

帖子

26

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-7 00:31:44 | 显示全部楼层
我真的用它做了一组标签。我的公司有9个标签,标签是一个六边形,里面有一个标注编号,其中8个有45度间隔方向的箭头。因此,我制作了这个托盘,使其更容易插入,而无需每次通过windows资源管理器。我使用了border示例,因为它们与insert命令密切相关,我觉得使用它更容易解释,然后将“暂停”与这些新命令关联起来。
 
005804tm85988ttb5banjg.jpg
 
所以现在他们只需点击与所需标签相关的按钮。
 
我确实尝试了另一个宏来更改图层,效果很好!唯一消极的一面是,图层保持在维度上,尽管它仍然比我们所做的要容易得多,但我预见到这些老人会抱怨
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 04:58 , Processed in 0.537520 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表