Randolph 发表于 2022-7-6 07:53:18

具有预定义mirr的镜像3D

对于程序员来说是一小步,但对于架构师来说却是一大步。
我使用的是lisp命令的内部系统,其工作原理如下:
 
TX=沿x轴平移
DX=沿x轴复制
SX=切片YZ平行
 
等等我在镜像命令上尝试了相同的操作,结果如下:
 

; MIRROR 3D
; ----------------------------------------------------------

(DEFUN C:MX          ()(COMMAND "_MIRROR3D" "_YZ"))
(DEFUN C:MY          ()(COMMAND "_MIRROR3D" "_ZX"))
(DEFUN C:MZ          ()(COMMAND "_MIRROR3D" "_XY"))

 
令人印象深刻,不是吗。
 
现在,这可以很好地处理以前选择的对象。
但如果在命令后选择对象,则不会。
然后您必须输入选项(例如YZ)。
如何更改命令以使其正常工作
 
MX-选择对象-输入?
 
我知道这对职业选手来说很容易,谢谢你的帮助。

marko_ribar 发表于 2022-7-6 08:00:41


(defun c:mx ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_zx" pause pause) (princ))
(defun c:my ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_yz" pause pause) (princ))
(defun c:mz ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_xy" pause pause) (princ))
M.R。

Randolph 发表于 2022-7-6 08:07:13

Worxs好吧,thanx Marko!
 
以下是带有更正选项的版本(yz和my混淆了):
 

(defun c:mx ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_yz" pause pause) (princ))
(defun c:my ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_zx" pause pause) (princ))
(defun c:mz ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_xy" pause pause) (princ))

Tharwat 发表于 2022-7-6 08:11:01

为了避免OP没有选择任何对象时出现错误消息,请在之前添加函数if(setq ss………。当然,不要忘记再添加一个参数来关闭if函数。

Randolph 发表于 2022-7-6 08:19:08

Tharwat,这听起来有点神秘。我没有收到马尔科代码的错误消息。您能为您编写的代码吗?例如,MX命令?

Tharwat 发表于 2022-7-6 08:24:52

 
使用IF函数来保证函数SSGET有一个选择的对象以步进到下一行代码,但如果SSGET为零,则函数IF将永远不会步进到第二行代码,因为它为零
 
尝试第一个代码,按enter键而不是选择对象,并在命令行中查看错误消息,然后使用IF函数尝试以下代码以查看差异。
 
例如
 

(defun c:mx ( / ss) (if (setq ss (ssget)) (command "_.mirror3d" ss "" "_yz" pause pause)) (princ))

pBe 发表于 2022-7-6 08:27:29

(defun _m3d (filter)
      (if (ssget "_:L")
(command "_.mirror3d" "_P" "" filter pause pause)
            (princ "\nNo objects selected")
         )
   (princ)
   )

(defun c:mx ( / _m3d) (_m3d "_yz"))
(defun c:my ( / _m3d) (_m3d "_zx"))
(defun c:mz ( / _m3d) (_m3d "_xy"))

Randolph 发表于 2022-7-6 08:31:42

我懂了。更大的问题是,在引发这个bug之后,命令是“未知的”——直到重新加载为止。
我现在将使用pBe的代码,假设这可以解决上述问题。

Randolph 发表于 2022-7-6 08:38:49

pBe,您的代码生成错误消息:错误:无函数定义:\u m3d
 
塔瓦,你的密码很好。现在,我将对其进行调整以用于旋转3D命令。Thanx!

pBe 发表于 2022-7-6 08:45:57

您还需要加载(defun _m3d(过滤器)。。。。
 
因此,在未来的cae中,您需要使用另一个点过滤器。你需要做的就是
 
(定义c:mzz(/\u m3d)(\u m3d“\u z”);
 
 
 
页: [1] 2
查看完整版本: 具有预定义mirr的镜像3D