用于复制粘贴为块的宏
您好,这个问题有两个部分,创建一个新命令,然后编写一个宏。显示了尝试。(1) 要在“编辑”快捷菜单(单击鼠标右键)上创建新命令,我转到CUI,然后单击星形图标“创建新命令”。如果这是错的,请告诉我。
(2) 编写宏,该宏执行以下操作:复制基点,删除所有选定项,在最初选定的基点位置粘贴为块。尝试了以下操作,但没有成功。
^C^C_copybase;0,0,0;\;_ERASE;p;;_pasteblock;0,0,0; 我的第一个建议就是我写下我所有的习惯。mnu在记事本中,并使用menuload制作cuix。您可以在CUI编辑器和记事本之间进行复制和粘贴,从而窃取任何命令和工具栏图标等。这样,您的菜单与主菜单分离。
^c^c(ssget)(command "copybase" "0,0,0" "p" "" "_ERASE" "p" "" "_pasteblock" "0,0,0")
谢谢BIGAL,这确实有效。
唯一的问题是,参考点位于原点(0,0,0)。我希望参考点是一个选中的点,这是一个额外的步骤或由用户输入。
我尝试使用(0,0,0)是希望它是一个相对坐标。 将“0,0,0”替换为(getpoint“\n点击点”) 感觉它应该起作用,但实际上不起作用。
该过程似乎在第一个getpoint之后停止,请参阅所附图像。
^c^c(ssget)(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint "\nPick point"))
请改为尝试此操作(命令“copybase”(getpoint“\nPick point”)“p”“”“\u ERASE”“p”“”“\u pasteblock”(getpoint(getvar‘lastpoint)“\nPick point”)) 比加尔,我还有和上面一样的问题。
尝试了以下两种情况。
顺便说一句,我使用的是CUI,而不是之前建议的自定义菜单。
^c^c(ssget)(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point"))
^c^c(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point"))
对于第二个选项,您是否首先进行了选择?
可以在自动加载的so^c^cobj2blk中尝试lisp-defun
(defun c:obj2blk ( )
(ssget)
(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point"))
)或^c^c(加载“obj2blk”)一个2行lisp。
(ssget)
(command "copybase" (getpoint "\nPick point") "p" "" "_ERASE" "p" "" "_pasteblock" (getpoint (getvar 'lastpoint) "\nPick point") 非常感谢。
在我弄明白了一些事情之后,终于有了一些进展。
注释
-使用上面的第一个选项,我在CUI的长字符串编辑器中键入了“^c^cobj2blk”。同时用上面的代码创建了一个LISP文件,并使用APPLOAD将文件设置为自动加载,并添加到Startup Suite。
-有了第二种选择,我无法实现这一点。
问题
(1) 除了以下方面外,宏在所有方面都起作用。粘贴块之前,删除元素部分(线等),并且没有可以粘贴块的锚节点。我试图重新排列代码,使“_ERASE”在最后,但没有运气。基本上,第二个getpoint与第一个getpoint相同,因此它将一次性完成,换句话说,将块擦除并粘贴到第一个getpoint。我不知道这是否可能。
(2) 上面LISP中的代码与之前的帖子相同。为什么不直接从CUI开始工作?
(3) 这个问题不特定于上述内容。。。你可能已经在第一个回答中回答了。。。我可以有一个包含许多函数的LISP文件吗,比如这个线程中的函数,所以所有的编码都在一个文件中完成?
1如果使用lisp而不是命令,则可以选择对象拾取基点,仅使用“-block”按照提示生成块,然后在新点插入。
2不确定没有在cui中测试它可能是(ssget)
我有一个lisp,有30个defuns,它是我的库lisp,我把它作为一个自定义lisp,并在启动时应用。如果您使用自动加载功能,则只有在需要时才有助于加载大LISP。
我的自动加载。lsp为我提供了诸如ent、obj、dumpit等命令,在计算对象属性时很有帮助。也有(vl load com)停止关于未加载的任何错误。
页:
[1]
2