乐筑天下

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

[综合讨论] 用于复制粘贴为块的宏

[复制链接]

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:10:39 | 显示全部楼层 |阅读模式
您好,这个问题有两个部分,创建一个新命令,然后编写一个宏。显示了尝试。
(1) 要在“编辑”快捷菜单(单击鼠标右键)上创建新命令,我转到CUI,然后单击星形图标“创建新命令”。如果这是错的,请告诉我。
(2) 编写宏,该宏执行以下操作:复制基点,删除所有选定项,在最初选定的基点位置粘贴为块。尝试了以下操作,但没有成功。
  1. ^C^C_copybase;0,0,0;\;[b]_ERASE;p;;[/b]_pasteblock;0,0,0;
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:20:21 | 显示全部楼层
我的第一个建议就是我写下我所有的习惯。mnu在记事本中,并使用menuload制作cuix。您可以在CUI编辑器和记事本之间进行复制和粘贴,从而窃取任何命令和工具栏图标等。这样,您的菜单与主菜单分离。
 
  1. ^c^c(ssget)(command "copybase" "0,0,0" "p" "" "_ERASE" "p" "" "_pasteblock" "0,0,0")

001043ezcieifvcitwtcpx.png
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:24:19 | 显示全部楼层
谢谢BIGAL,这确实有效。
唯一的问题是,参考点位于原点(0,0,0)。我希望参考点是一个选中的点,这是一个额外的步骤或由用户输入。
我尝试使用(0,0,0)是希望它是一个相对坐标。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:31:59 | 显示全部楼层
将“0,0,0”替换为(getpoint“\n点击点”)
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:40:17 | 显示全部楼层
感觉它应该起作用,但实际上不起作用。
该过程似乎在第一个getpoint之后停止,请参阅所附图像。
  1. ^c^c(ssget)(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint "\nPick point"))

 
001048depuu7i5gkkyu07a.png
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:43:06 | 显示全部楼层
请改为尝试此操作(命令“copybase”(getpoint“\nPick point”)“p”“”“\u ERASE”“p”“”“\u pasteblock”(getpoint(getvar‘lastpoint)“\nPick point”))
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:46:45 | 显示全部楼层
比加尔,我还有和上面一样的问题。
尝试了以下两种情况。
顺便说一句,我使用的是CUI,而不是之前建议的自定义菜单。
 
  1. ^c^c(ssget)(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point"))
  1. ^c^c(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point"))

 
001049b1w5uowdjy12abjy.png
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:58:38 | 显示全部楼层
对于第二个选项,您是否首先进行了选择?
 
可以在自动加载的so^c^cobj2blk中尝试lisp-defun
 
  1. (defun c:obj2blk ( )
  2. (ssget)
  3. (command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point"))
  4. )
或^c^c(加载“obj2blk”)一个2行lisp。
 
  1. (ssget)
  2. (command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point")
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-7 00:04:27 | 显示全部楼层
非常感谢。
在我弄明白了一些事情之后,终于有了一些进展。
 
注释
-使用上面的第一个选项,我在CUI的长字符串编辑器中键入了“^c^cobj2blk”。同时用上面的代码创建了一个LISP文件,并使用APPLOAD将文件设置为自动加载,并添加到Startup Suite。
-有了第二种选择,我无法实现这一点。
 
问题
(1) 除了以下方面外,宏在所有方面都起作用。粘贴块之前,删除元素部分(线等),并且没有可以粘贴块的锚节点。我试图重新排列代码,使“_ERASE”在最后,但没有运气。基本上,第二个getpoint与第一个getpoint相同,因此它将一次性完成,换句话说,将块擦除并粘贴到第一个getpoint。我不知道这是否可能。
(2) 上面LISP中的代码与之前的帖子相同。为什么不直接从CUI开始工作?
(3) 这个问题不特定于上述内容。。。你可能已经在第一个回答中回答了。。。我可以有一个包含许多函数的LISP文件吗,比如这个线程中的函数,所以所有的编码都在一个文件中完成?
 
 
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-7 00:07:58 | 显示全部楼层
1如果使用lisp而不是命令,则可以选择对象拾取基点,仅使用“-block”按照提示生成块,然后在新点插入。
 
2不确定没有在cui中测试它可能是(ssget)
 
我有一个lisp,有30个defuns,它是我的库lisp,我把它作为一个自定义lisp,并在启动时应用。如果您使用自动加载功能,则只有在需要时才有助于加载大LISP。
 
我的自动加载。lsp为我提供了诸如ent、obj、dumpit等命令,在计算对象属性时很有帮助。也有(vl load com)停止关于未加载的任何错误。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:49 , Processed in 0.599907 second(s), 85 queries .

© 2020-2025 乐筑天下

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