乐筑天下

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

[编程交流] 镜像Obje的更好代码

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 16:14:11 | 显示全部楼层 |阅读模式
我用一个简单的代码插入一个块,它使用ENTMAKE。这是我使用命令的首选方法。。。而且速度要快得多。在某些情况下,当插入块时,我需要将其镜像到插入点并擦除旧副本。我提出的代码运行良好,但它使用命令方法,速度明显较慢。只有一两秒钟,但这是显而易见的。因此,为了扩展我的技能,我想知道是否有更好的方法来处理这项任务。
  1. (command-s "._MIRROR" (entlast) "" pt "Y")
回复

使用道具 举报

0

主题

24

帖子

24

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:42:42 | 显示全部楼层
您好,您可以使用entmod将x或y比例设置为负。。
 
  1. (setq e (entget (entlast)))
  2. (setq e (subst (cons 41 (- (cdr (assoc 41 e))))(assoc 41 e) e)) ; 42 for y axis
  3. (entmod e)
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:08:33 | 显示全部楼层
详细阐述FranknBeans的建议-结合我最喜欢的grread函数来考虑这个例子:
 
  1. ; Flip block example - with (grread)
  2. (defun C:test ( / e enx g s k itm )
  3. (and
  4.    (setq e (car (entsel "\nPick a block to flip: ")))
  5.    (member '(0 . "INSERT") (setq enx (entget e)))
  6.    (princ "\nPress [X/Y/Z] to flip the block <exit>: ")
  7.    (while (not s) (setq g (grread))
  8.      (cond
  9.        ( (or (eq g '(2 13)) (= 25 (car g))) (setq s T) )
  10.        ( (= 2 (car g))
  11.          (and
  12.            (setq k (cadr (assoc (strcase (chr (cadr g))) '(("X" 41)("Y" 42)("Z" 43)))))
  13.            (setq itm (assoc k enx))
  14.            (entmod (setq enx (subst (cons k (- (cdr itm))) itm enx)))
  15.          )
  16.        )
  17.      ); cond
  18.    ); while
  19. ); and
  20. (princ)
  21. ); defun C:test
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 17:25:51 | 显示全部楼层
这个论坛再次挤满了最伟大的人。谢谢你的帮助。我早些时候把FrankNBeans的例子应用到工作中,效果很好。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 16:54 , Processed in 0.486907 second(s), 60 queries .

© 2020-2025 乐筑天下

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