bhf0114 发表于 2004-2-26 09:15:00

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请选择抽芯方向: "))

BDYCAD 发表于 2004-2-26 10:32:00

(setq p1 (getpoint "\n请选取底点: ")) <BR>       (setq p2 (getpoint "\n请选取顶点: "))       


(if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))<BR>(if (&gt; (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))

bhf0114 发表于 2004-2-26 20:38:00

老大不行啊,


你的方法我作过了


(setq p1 (getpoint "\n请选取底点: ")) <BR>       (setq p2 (getpoint "\n请选取顶点: "))       





(if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))<BR>(if (&gt; (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原点上,

bhf0114 发表于 2004-2-26 20:41:00

你看:以下就是运行结果,


bhf0114 发表于 2004-2-27 18:07:00

还望高手再赐教

ljcgq 发表于 2004-2-27 20:42:00

不明白你需要什么结果?

ljcgq 发表于 2004-2-27 20:47:00

(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)


)


行么?

bhf0114 发表于 2004-2-27 22:15:00

ljcgq发表于2004-2-27 20:42:00static/image/common/back.gif不明白你需要什么结果?

<BR>我在一楼不是说的很明白了吗

ljcgq 发表于 2004-2-28 16:20:00

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>

lzy9788 发表于 2004-3-2 11:31:00

这样可以,你试下:


(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]
查看完整版本: UCS坐标在LISP中如何运用?