UCS坐标在LISP中如何运用?
比如以下程序我是想选取底点和顶点后让UCS坐标的0,0点位于底点,X方向对准顶点,这样就可以在任何角度下方便的计算了.望指教
(defun BOT()<BR> (setq p1 (getpoint "\n请选取底点: ")) <BR> (setq p2 (getpoint "\n请选取顶点: ")) <BR> (command "ucs" "n" "3" p1 p2 )<BR> (COMMAND "OSMODE" "0")<BR> (Setq L1 (Getint "\n请输入滑块抽芯距: "))<BR> (setq pr (getpoint "\n请选择抽芯方向: ")) (setq p1 (getpoint "\n请选取底点: ")) <BR> (setq p2 (getpoint "\n请选取顶点: "))
(if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))<BR>(if (> (setq os (getvar "osmode")) 0) (setvar "osmode" 0))<BR>(command "line" p1 p2 "")<BR>(command "ucs" "ob" (entlast) )<BR>(entdel (entlast))<BR>(if (= (getvar "cmdecho") 0) (setvar "cmdecho" 1))<BR>(setq (= (getvar "osmode") 0) (setvar "osmode" os)) 老大不行啊,
你的方法我作过了
(setq p1 (getpoint "\n请选取底点: ")) <BR> (setq p2 (getpoint "\n请选取顶点: "))
(if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))<BR>(if (> (setq os (getvar "osmode")) 0) (setvar "osmode" 0))<BR>(command "line" p1 p2 "")<BR>(command "ucs" "ob" (entlast) )<BR>(entdel (entlast))
程序运行到这里时UCS坐标是在P1点上,但后面的计算,系统并不是以P1点做为原点,它还是以WCS原点来计算的,等程序运行完后,就会发现人坐标早就回到了WCS原点上, 你看:以下就是运行结果,
还望高手再赐教 不明白你需要什么结果? (defun BOT(/)<BR> (setq p1 (getpoint "\n请选取底点: ")) <BR> (setq p2 (getpoint "\n请选取顶点: "))
(setq p3 (polar p1 (/ pi 2) 100 ))
(command "ucs" "3" p1 p2 p3)
)
行么? ljcgq发表于2004-2-27 20:42:00static/image/common/back.gif不明白你需要什么结果?
<BR>我在一楼不是说的很明白了吗 ljcgq发表于2004-2-27 20:47:00static/image/common/back.gif(defun BOT(/) (setq p1 (getpoint \"\n请选取底点: \")) (setq p2 (getpoint \"\n请选取顶点: \"))
(setq p3 (polar p1 (/ pi 2) 100 ))
(c...
<BR> 这样可以,你试下:
(defun c:BOT()<BR> (setq p1 (getpoint "\n请选取底点: ")) <BR> (setq p2 (getpoint p1 "\n请选取顶点: ")) <BR> (command "ucs" "n" p1 )<BR> (setq ang (angle p1 p2))<BR> (command "ucs" "n" "z" (/ (* 180 ang) pi))<BR> (COMMAND "OSMODE" "0")<BR> (Setq L1 (Getint "\n请输入滑块抽芯距: "))<BR> (setq pr (getpoint "\n请选择抽芯方向: ")) <BR>
页:
[1]