乐筑天下

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

[编程交流] 镜像命令

[复制链接]

15

主题

102

帖子

106

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 14:54:56 | 显示全部楼层 |阅读模式
我有一个从www.afralisp修改的lisp。net和它做了我现在想要的一切,但我不知道如何问用户,如果他们想镜像块!我希望它发生在块被放置之后,这样你就可以看到那里的块。它的例子是hosebib,旁边有HB,看看它是如何从上到下的。
 
 
我想我会把停顿改成点,并把它们作为我镜像的一条线,但我从来没有这样做过,所以我不知道如何让它们指向参考。如果有人能帮助我,我会非常感激!!!!
155500wajzwio33iwafiv5.png
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:59:19 | 显示全部楼层
我不确定块上的插入点在哪里,但当我使用P&ID LISP时,我使用旋转来翻转块,只使用ip作为基点:
 
  1. (command "_rotate" (entlast) "" ip "180")
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:02:37 | 显示全部楼层
或者,用户可以选择:
 
  1. (initget "Yes No")
  2. (setq ans (getkword "\nRotate Block? [Yes/No] <No>: "))
  3. (if (= ans "Yes")
  4.   (command "_rotate" (entlast) "" ip "180.0"))
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:06:30 | 显示全部楼层
镜像插入的标准方法是将DXF组41更改为其当前值的负值-大卫
回复

使用道具 举报

15

主题

102

帖子

106

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:09:37 | 显示全部楼层
 
我想我说错了对不起。下面是另一张图片。我有一块洋红的,我需要它来问我是否喜欢镜像后,它的地方。我的插入点是P1,P2是决定块角度的第二个点。我需要它来询问我是否喜欢沿P1和P2镜像块,并得到洋红色块旁边的灰色块的最终结果。我希望这有帮助!!!!
155502vk9msjnsozkmlq88.png
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:12:33 | 显示全部楼层
那么也许:
 
  1. (initget "Yes No")
  2. (setq ans (getkword "\nMirror Block? [Yes/No] <No>: "))
  3. (if (= ans "Yes")
  4.   (command "_mirror" (entlast) p1 p2 "n"))
回复

使用道具 举报

15

主题

102

帖子

106

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:15:13 | 显示全部楼层
我运行lisp hosebib。它要求插入点(即示例1中的p1),然后需要第二个点来定义块的角度。(这将是示例1中的p2)。完成后,完成运行的lisp看起来像示例2。我想知道问“镜像块?”[是/否]。如果我点击yes,最终产品将类似于示例3,在镜像线点使用p1和p2。如果我点击“否”,它将取消,什么也不做。我希望这对我正在寻找的东西有所帮助。
155504wauf31g0zrazpd30.png
HoseBib。lsp
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:19:02 | 显示全部楼层
看着你的Lisp程序,似乎你只允许水平线-这是你希望它保持的方式吗?
 
此外,还有一种更简单的断线方法,无需使用属性,如果您知道要插入的块的确切长度,并且您的基点是其中一个断点(实际情况),则无需深入研究可能导致潜在错误的属性。
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:22:17 | 显示全部楼层
我认为您目前的Lisp程序可以简化为:
 
  1. (defun c:hb2  (/ vlst ovar ent1 ip ent2 ip1 ip2 att1)
  2. (setq    vlst '("OSMODE" "BLIPMODE" "CMDECHO" "ATTDIA" "ATTREQ")
  3.    ovar (mapcar 'getvar vlst))
  4. (mapcar 'setvar vlst '(544 0 0 0 0))
  5. (while (and (setq ent1 (entsel "\nSelect Block Insertion Point")
  6.                  ip   (osnap (cadr ent1) "_nea")))
  7.    (setvar "OSMODE" 0)
  8.    (setq ent2 (car ent1))
  9.    (command "-insert" "HBAB" "s" (max 1 (getvar "dimscale")) ip "")
  10.    (setq att1 (entnext (entlast))
  11.      ip1  (cdr (assoc 10 (entget att1)))
  12.      ip2  (cdr (assoc 10 (entget (entnext att1)))))
  13.    (command "_break" ent1 "f" ip1 ip2)
  14.    (setvar "OSMODE" 544))
  15. (mapcar 'setvar vlst ovar)
  16. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:25:42 | 显示全部楼层
然而,这可以用于任何角度的线:
 
  1. (defun c:hb  (/ *error* ovar vlst ent ip edata ang att1 blk ip1 ip2 ans)
  2. (defun *error*  (msg)
  3.    (if    ovar (mapcar 'setvar vlst ovar)) (princ))
  4. (setq    vlst '("OSMODE" "BLIPMODE" "CMDECHO" "ATTDIA" "ATTREQ")
  5.    ovar (mapcar 'getvar vlst))
  6. (if (or (tblsearch "BLOCK" "HBAB") (findfile "HBAB.dwg"))
  7.    (progn
  8.      (mapcar 'setvar vlst '(544 0 0 0 0))
  9.      (while (setq ent (entsel "\nSelect Block Insertion Point"))
  10.    (setq ip (osnap (cadr ent) "_nea"))
  11.    (setvar "OSMODE" 0)
  12.    (setq edata (entget (car ent))
  13.          ang   (angle (dxf 10 edata) (dxf 11 edata)))
  14.    (command "-insert" "HBAB" "s" (max 1 (getvar "dimscale")) ip (* 180.0 (/ ang pi)))
  15.    (setq att1 (entnext (setq blk (entlast)))
  16.          ip1  (dxf 10 (entget att1))
  17.          ip2  (dxf 10 (entget (entnext att1))))
  18.    (command "Break" ent "f" ip1 ip2)
  19.    (initget "Yes No")
  20.    (setq ans (getkword "\nMirror Block? [Yes/No] <No>: "))
  21.    (if (= ans "Yes")
  22.      (command "_mirror" blk "" ip1 ip2 "_Y"))
  23.    (setvar "OSMODE" 544)))
  24.    (princ "\n<!> Block Not Found <!>"))
  25. (mapcar 'setvar vlst ovar)
  26. (princ))
  27. (defun dxf  (code elist)
  28. (cdr (assoc code elist)))

 
还包括错误捕获以检查块名,并添加了镜像选项。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 21:30 , Processed in 0.590133 second(s), 75 queries .

© 2020-2025 乐筑天下

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