emch 发表于 2015-10-18 11:49:58

求ucs的快速转换lsp

请教大家,有没有这的代码。就是 先执行 ucs 然后在平面上指定新的ucs后,接着执行 plan 调整视图到新的ucs系统,用一个命令执行。谢谢:)

ㄘ丶转裑ㄧ灬 发表于 2015-10-18 14:47:02

(defun C:gv (/ os ctscale tt pt pt1 pt2 pt3 by ang)
(setvar "CMDECHO" 0)
(setvar "ucsfollow" 0)
(setvar "regenmode" 1)
(setq os (getvar "OSMODE"))    ; (if (= cts nil)(setq cts 100))
;;;; (setq ctscale (getreal (strcat "\n出图比例(1:?) <" (rtos cts 2 0) ">:")))
;;;; (if (= ctscale nil)(setq ctscale cts))
;;;; (setq cts ctscale)
(setq ctscale 100)
(initget "Y W")
(setq tt (getkword "\n世界坐标系(W)/<垂直显示>: "))
(if (or (= tt "w") (= tt "W"))
    (progn
      (command "plan" "w")
      (command "ucs" "w")
      (command "view" "r" "dz")
      (setq ptt nil)
      (command "regen")
    )
    (progn
      (if (= ptt nil)
(command "view" "s" "dz")
      )
      (setvar "osmode" 513)
      (setq pt1 (getpoint "\n点取Y轴原点<退出>:"))
      (if pt1
(progn
    (setq pt2 (getpoint "\n选择Y轴方向<退出>:"))
    (if pt2
      (progn
      (setq ang (angle pt1 pt2))
      (command "color" "250")
      (setq pt3 (polar pt1 (- ang (/ pi 2)) (* 0.1 ctscale)))
      (setvar "osmode" (+ 16384 os))
      (command "line" pt1 pt3 "")
      (command "color" "Bylayer")
      (setq pt (entlast))
      (command "ucs" "e" pt)
      (command "plan" "")
      (setq ptt'
       (0 0)
      )
      (setq by (* 150 ctscale))
      (command "zoom" "c" ptt by)
      (entdel pt)
      (command "regen")
      );;;;progn
    );;;;if pt2
);;;;progn
      );;;;if pt1
      (setvar "osmode" os)
    );;;;progn
);;;;if tt
(princ)
)

emch 发表于 2015-10-18 16:05:31

本帖最后由 emch 于 2015-10-18 16:20 编辑

谢谢 转身:)

刚才使用的时候发现一个问题,从垂直显示到世界坐标系后,世界坐标系还是偏的,希望再完善一下,谢谢:)
还有个小提议,能不能改成选X坐标,平常X坐标用的多,Y坐标用的少。

love_cq 发表于 2020-5-28 19:30:13

非常感谢大神分享。
请教下这代码是用什么写的呢?复制过去以后行号都乱了。有点麻烦。
页: [1]
查看完整版本: 求ucs的快速转换lsp