kucha007 发表于 2023-2-6 23:12:23

【求助】点关于点旋转后的坐标

本帖最后由 kucha007 于 2023-2-6 23:14 编辑

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=186343&page=1&extra=#pid927321

大家好,疑问见标题。
我之前写了一个旋转视口内视图的程序,想用到模型空间中,旋转UCS然后Plan。
但不知道怎么记录和恢复视口。目前想到的是记录视图中心点和视图高度,之后再还原。
但旋转ucs的时候中心点也在改变,就不知道怎么操作了。

论坛上搜到的资料尝试了一下都不太对
麻烦各位大佬赐教,如果有新思路就更好了。


(setq p1 (getpoint "\n→请选择旋转中心: "))
(setq p2 (getpoint p1 "\n→请选择X轴正方向: "))
(setq Ang (Angtos (Angle P1 p2) 0 15))
(setq vc (getvar "VIEWCTR");视图中心UCS
      vs (getvar "VIEWSIZE");当前视图高度
)



;恢复视图

(command "_.ZOOM" "_C" vc vs)

kucha007 发表于 2023-2-7 23:25:29

本帖最后由 kucha007 于 2023-2-8 00:17 编辑

;自己解决了√

(Defun C:TT nil
    (defun K:ROTATEPT (PT Center Ang)
      (polar Center (+ (angle Center PT) Ang) (distance Center PT))
    )
    (setq p1 (getpoint "\n→请选择旋转中心: "))
    (setq p2 (getpoint p1 "\n→请选择X轴正方向: "))
    (setq Ang (Angle P1 p2))
    (setq vc (getvar "VIEWCTR");视图中心UCS
          vs (getvar "VIEWSIZE");当前视图高度
    )
    (command "point" vc )
    (setq CS (trans (K:ROTATEPT vc p1 Ang) 1 0));WCS
    (command "_.UCS" "_Z" (Angtos Ang 0 15))
    (command "_.PLAN" "_C")
    (while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前面的命令完成
    (command "_.ZOOM" "_C" (trans CS 0 1) vs)
    (command "point" (trans CS 0 1))
)


yefei812678 发表于 2024-2-23 11:45:17

太高深了 看不懂
页: [1]
查看完整版本: 【求助】点关于点旋转后的坐标