乐筑天下

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

[编程交流] 帮我拿双镜鳕鱼

[复制链接]

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 11:58:44 | 显示全部楼层 |阅读模式
我想镜像一个区块,但与平常略有不同。
 
第一部分应该像镜子通常那样:
1、选择对象
2.选择要镜像到的行
->现在“新块”出现(新的镜像版本)
3、要求删除原件->不保留。
 
然后,该命令不应停止,而是执行一些额外的操作:
4、再次镜像“新块”
5、镜像线:点1为其插入点
6、镜像线:点2为插入点+180转。
7、要求删除原件->是删除。
 
通过这种方式,可以镜像一个块,但结果是一个按其应该显示的块,而不是镜像的块。
 
我只走了这么远,但没用。
另外:我该如何设置它,使其对多个区块进行trich。。。(与原始镜像功能类似)?
 
缺乏知识->与之斗争。
 
  1. (defun C:mm (/)
  2. (setq orth1 (getvar "orthomode") ; current orthomode
  3. osm1  (getvar "osmode")  ; current osnapmode
  4. ss    (ssadd)   ; create empty selection set
  5. )
  6. (setvar "orthomode" 1)  ; turn on ortho
  7. (setvar "osmode" 1)   ; turn on osnap
  8. (setq mirpt1 (getpoint "First mirror point")
  9. mirpt2 (getpoint mirpt1 "Second mirror point")
  10. )
  11. (setq ent (ssget))   ; put object(s) in ent
  12. (setvar "osmode" 0)   ; turn osmode off
  13. (command "mirror" ent "" pt1 pt2 "n") ; mirror the object(s) and retain original
  14. (ssadd (entlast) ss)   ; add the last created entity in the selection set ss
  15. (setq inspt1 (cdr (assoc 10 ss)) ; Insertion Point of the last created entity
  16. rot    (cdr (assoc 50 ss)) ; rotation of the last created entity
  17. inspt2 (polar inspt (+ rot pi) 1000)
  18.     ; create second point in line with inspt1
  19. )
  20. (command "mirror" ss "" inspt1 inspt2 "y")
  21.     ; mirror the object(s) and delete the original
  22. (setvar "orthomode" orth1)
  23. (setvar "osmode" osm1)
  24. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:05:52 | 显示全部楼层
一旦你镜像了第一个,你就不能从那时开始复制吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:07:02 | 显示全部楼层
马可,
 
您的方法仅对具有中心基点的块有效,请参见以下内容:
 
125845iwwbmbbow1wmttwm.png
 
  1. (defun c:mm2 (/ i ss pt1 pt2 tmp ent p1 p2)
  2. (vl-load-com)
  3. (if (and (setq i -1 ss (ssget "_:L" '((0 . "INSERT"))))
  4.           (setq pt1 (getpoint "\nSelect First Point: "))
  5.           (setq pt2 (getpoint pt1 "\nSelect Second Point: ")))   
  6.    (progn
  7.      (setq tmp (entmakex (list (cons 0 "LINE") (cons 10 pt1) (cons 11 pt2))))
  8.      (while (setq ent (ssname ss (setq i (1+ i))))
  9.        (setq p2 (vlax-curve-getClosestPointto tmp
  10.                   (setq p1 (cdr (assoc 10 (entget ent)))) t))
  11.        (vla-move (vla-copy (vlax-ename->vla-object ent))
  12.                  (vlax-3D-point p1)
  13.                  (vlax-3D-point (polar p1 (angle p1 p2) (* 2. (distance p1 p2))))))
  14.      
  15.      (entdel tmp)))
  16. (princ))
  17. (defun c:mm3 (/ i ss pt1 pt2 ent ss obj Mi Ma cen tmp)
  18. (vl-load-com)
  19. (if (and (setq i -1 ss (ssget "_:L" '((0 . "INSERT"))))
  20.           (setq pt1 (getpoint "\nSelect First Point: "))
  21.           (setq pt2 (getpoint pt1 "\nSelect Second Point: ")))
  22.    
  23.    (while (setq ent (ssname ss (setq i (1+ i))))
  24.      (setq cen (polar (car ptlst) (apply (function angle)    ptLst)
  25.                                (/ (apply (function distance) ptlst) 2.))
  26.            tmp (vla-mirror (vlax-ename->vla-object ent) (vlax-3D-point pt1) (vlax-3D-point pt2)))
  27.      (vla-getBoundingBox tmp 'Mi 'Ma)
  28.      (setq ptlst (mapcar (function vlax-safearray->list) (list Mi Ma)))
  29.      (vla-mirror tmp (vlax-3D-point cen) (vlax-3D-point (polar cen (/ pi 2.) 1.)))
  30.      (vla-delete tmp)))
  31. (princ))
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 12:11:26 | 显示全部楼层
伙计们,
 
我现在要参加冬令营,一直到1月4日。
我是舒尔,我将在该日期之前检查代码!
谢谢你的回复,我这个周末会在家测试代码。
 
祝你圣诞快乐,新年快乐!!
干杯
马可。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:16:10 | 显示全部楼层
也祝你圣诞快乐!
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 12:17:32 | 显示全部楼层
这会很有用,因为。。。?我想这就是让我头脑迷糊的部分:
 
“通过这种方式,可以镜像一个块,但结果是一个按其应该显示的块,而不是镜像的块。”
 
一个看起来应该是(像原始块一样)的块不就是它自己的副本吗?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:22:19 | 显示全部楼层
英雄联盟
这正是我想要弄明白的。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 12:26:34 | 显示全部楼层
我想我知道OP想要做什么。他正在为AutoDesk宣布AutoCAD中将不再包含复制命令的那一天做准备。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:30:29 | 显示全部楼层
我认为这个想法是为了获得镜像的位置效果,但没有视觉上的差异(如你所说,复制-这就是我上面代码的一部分所做的)。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 12:32:46 | 显示全部楼层
镜像的位置效应?这不是“复制/旋转”命令的作用吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:35 , Processed in 0.518867 second(s), 85 queries .

© 2020-2025 乐筑天下

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