dortega4269 发表于 2022-7-6 06:33:57

在插入器上旋转动态块

专家,
由于我是一个n00b到LiSP的人,我一直在做研究,试图拼凑一些LiSP来帮助我完成我每天都要忍受的看似乏味的任务/仪式。Lee Mac在另一个线程上发布了一个回复(围绕各自的原点旋转多个块),它在一定程度上起作用,旋转单个块,但这并不是我需要的全部。
 
请就如何使用LiSP最好地实现这一点提供任何建议。我已经附上我的动态块,如果你需要它进行测试。 
简要说明:
我有几个在3D中创建的动态块,为了让拉伸功能在Z轴上工作,我被迫将它们放在Y轴上。我插入动态块的顺序是插入我的块,选择块,单击viewcube的左上角,使用等轴测视图,我现在可以利用3Drotate命令,围绕X轴上的插入点旋转块90度——这样做现在使我的块处于正确的方向,以便在金属螺柱框架构件的三维建模中使用,现在,我必须使用世界ucs(X,Y)围绕Z轴旋转块,以与建筑平面图对齐。
门图纸

dortega4269 发表于 2022-7-6 06:37:17

我对我写的这些小宏有一些运气,然而,它往往是碰运气的。这些宏允许我通过单击来旋转单个项目I,并重复该命令,直到我按ESC键,但如果我不直接单击块,块将不会围绕插入点旋转,而是稍微偏离。这个宏的另一个问题是,当我点击新创建的图标时,我不能选择项目/块,我必须先点击图标来启动宏,然后继续选择项目/块。
 
有谁能提供这个宏的帮助,或者提供为上述问题创建LiSP的帮助?任何事情都有帮助。
*^C^C_rotate;\\_insert;@;180;
*^C^C_rotate;\\_insert;@;90;
*^C^C_rotate;\\_insert;@;-90;

dortega4269 发表于 2022-7-6 06:42:21

差点忘了,我把这条新闻拼凑在一起,偶尔会出错。有时我在加载它时会遇到问题,有时我在让它工作时会遇到困难,但当它工作时,它可以很好地完成我试图完成的一半工作。
(defun c:rb ( / ss )
(if (setq ss (ssget "_:L"))
   (command "rotate" ss "" "_ins" "@" "90")
)
(princ)
)

satishrajdev 发表于 2022-7-6 06:44:07

我希望这能奏效
 
(defun c:rb ( / ss )
(setq ss (ssget "_:L"))
   (setq pnt (getpoint "\n Specify Base Point :"))
   (command "rotate" ss "" pnt "_ins" "90")
(princ)
)

dortega4269 发表于 2022-7-6 06:48:05

谢谢Satishrajdev!几小时后我回到办公室时,我一定会首先检查一下。

satishrajdev 发表于 2022-7-6 06:51:16

当然

dortega4269 发表于 2022-7-6 06:54:35

:眩光:所以。。。现在我得到了这样的提示:

Tharwat 发表于 2022-7-6 06:57:18

您是否正在执行一个例程,该例程应允许用户选择块并输入角度,然后代码应单独旋转所选块
在其插入点?

alanjt 发表于 2022-7-6 07:01:19

这就是你想要实现的吗?
 
(defun c:BR90 (/ pi/2 ss i d a)
(if (setq pi/2 (/ pi 2.)
         ss   (ssget "_:L" '((0 . "INSERT")))
   )
   (repeat (setq i (sslength ss))
   (entmod
       (subst
         (cons 50 (+ (cdr (setq a (assoc 50 (setq d (entget (ssname ss (setq i (1- i)))))))) pi/2))
         a
         d
       )
   )
   )
)
(princ)
)

dortega4269 发表于 2022-7-6 07:02:44

 
塔尔瓦特,
那就行了。我唯一的问题是,我的块和我的图形具有不同的UCS,块必须基于块的插入点旋转,该插入点已在x轴上旋转90度(请参阅我的youtube视频)。
 
 
alanjt,
这将基于块的z轴而不是我的图形的z轴将块旋转90度。你能让它围绕块的x轴旋转吗?我的YouTube视频和附加到原始线程的块可能会提供更多的理解。
 
页: [1] 2
查看完整版本: 在插入器上旋转动态块