乐筑天下

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

[编程交流] 具有预定义mirr的镜像3D

[复制链接]

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 07:53:18 | 显示全部楼层 |阅读模式
对于程序员来说是一小步,但对于架构师来说却是一大步。
我使用的是lisp命令的内部系统,其工作原理如下:
 
TX=沿x轴平移
DX=沿x轴复制
SX=切片YZ平行
 
等等我在镜像命令上尝试了相同的操作,结果如下:
 
  1. ; MIRROR 3D
  2. ; ----------------------------------------------------------
  3. (DEFUN C:MX          ()(COMMAND "_MIRROR3D" "_YZ"))
  4. (DEFUN C:MY          ()(COMMAND "_MIRROR3D" "_ZX"))
  5. (DEFUN C:MZ          ()(COMMAND "_MIRROR3D" "_XY"))

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

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:00:41 | 显示全部楼层
  1. (defun c:mx ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_zx" pause pause) (princ))
  2. (defun c:my ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_yz" pause pause) (princ))
  3. (defun c:mz ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_xy" pause pause) (princ))
M.R。
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:07:13 | 显示全部楼层
Worxs好吧,thanx Marko!
 
以下是带有更正选项的版本(yz和my混淆了):
 
  1. (defun c:mx ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_yz" pause pause) (princ))
  2. (defun c:my ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_zx" pause pause) (princ))
  3. (defun c:mz ( / ss) (setq ss (ssget)) (command "_.mirror3d" ss "" "_xy" pause pause) (princ))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:11:01 | 显示全部楼层
为了避免OP没有选择任何对象时出现错误消息,请在之前添加函数if(setq ss………。当然,不要忘记再添加一个参数来关闭if函数。
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:19:08 | 显示全部楼层
Tharwat,这听起来有点神秘。我没有收到马尔科代码的错误消息。您能为您编写的代码吗?例如,MX命令?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:24:52 | 显示全部楼层
 
使用IF函数来保证函数SSGET有一个选择的对象以步进到下一行代码,但如果SSGET为零,则函数IF将永远不会步进到第二行代码,因为它为零
 
尝试第一个代码,按enter键而不是选择对象,并在命令行中查看错误消息,然后使用IF函数尝试以下代码以查看差异。
 
例如
 
  1. (defun c:mx ( / ss) [color=blue][b](if [/b][/color](setq ss (ssget)) (command "_.mirror3d" ss "" "_yz" pause pause)[b][color=blue])[/color][/b] (princ))
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:27:29 | 显示全部楼层
  1. (defun _m3d (filter)
  2.       (if (ssget "_:L")
  3. (command "_.mirror3d" "_P" "" filter pause pause)
  4.             (princ "\nNo objects selected")
  5.            )
  6.      (princ)
  7.      )
  8. (defun c:mx ( / _m3d) (_m3d "_yz"))
  9. (defun c:my ( / _m3d) (_m3d "_zx"))
  10. (defun c:mz ( / _m3d) (_m3d "_xy"))
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:31:42 | 显示全部楼层
我懂了。更大的问题是,在引发这个bug之后,命令是“未知的”——直到重新加载为止。
我现在将使用pBe的代码,假设这可以解决上述问题。
回复

使用道具 举报

13

主题

81

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 08:38:49 | 显示全部楼层
pBe,您的代码生成错误消息:错误:无函数定义:\u m3d
 
塔瓦,你的密码很好。现在,我将对其进行调整以用于旋转3D命令。Thanx!
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:45:57 | 显示全部楼层
您还需要加载(defun _m3d(过滤器)。。。。
 
因此,在未来的cae中,您需要使用另一个点过滤器。你需要做的就是
 
(定义c:mzz(/\u m3d)(\u m3d“\u z”);
 
 
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:23 , Processed in 0.362087 second(s), 72 queries .

© 2020-2025 乐筑天下

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