lixuedong 发表于 2014-4-16 11:36:43

给出三个点,可以画出一个三维弧线的程序

给出三个点怎么写程序可以画出一个三维弧线
--------------------------------------------------
CAD的做图元的命令,好多只支持二维,所以在三维空间时,就不灵了。
我知道,line 和poine可以支持三维空间的。也就是说可以直接在三维空间画。如果能在程序中,转换了坐标系,这个问题就变得简单多了。


我想了三天三夜,问题终于想出来了,写了个程序。结果很简单。



;;;三个点 可以画出一个三维弧线
;;; 直接回车,可以测试三个点(2000 1800 0.0) (4993.39 473.385 3000.0) (3496.69 -853.23 1500.0)

(defun C:tt( /pt1 pt2 pt3 )
(setq pt1 (getpoint "\n请输入一个点"))
(setq pt2 (getpoint "\n请输入二个点"))
(setq pt3 (getpoint "\n请输入三个点"))
(if (null pt1 )(setq pt1 '(2000 1800 0.0)))
(if (null pt2 )(setq pt2 '(4993.39 473.385 3000.0)))
(if (null pt3 )(setq pt3 '(3496.69 -853.23 1500.0)))
(command "ucs" "3P" pt1 Pt2 Pt3)
(command "arc" (trans pt1 0 1) (trans pt2 0 1) (trans pt3 0 1))
(command "ucs" "")
(princ)
)



duotu007 发表于 2014-4-16 12:02:24

不容易啊,三天三夜,三更半夜,DA DA DA.

ynhh 发表于 2014-4-16 14:59:50

三天三夜就能写出这么好的程序
精神面貌
佩服

ymcui 发表于 2014-4-16 15:02:16

P服P服

q3_2006 发表于 2014-4-16 15:48:17

本帖最后由 q3_2006 于 2014-4-16 15:52 编辑

(defun c:tt ( / p1 p2 p3)
(setvar "osmode" 3)
(vl-cmdf "ucs" "3p"
(setq p1 (getpoint "\n第一点:"))
(setq p2 (getpoint "\n第二点:"))
(setq p3 (getpoint "\n第三点:"))
)
(vl-cmdf "arc" (trans p1 0 1) (trans p2 0 1) (trans p3 0 1))
(vl-cmdf "ucs" "w")
)

Bellahx 发表于 2014-4-16 16:14:45

赞一个~为我们学习提供了宝贵的方法~

技术工作室 发表于 2014-6-6 21:05:40

高手顶一个

恕放之生命 发表于 2014-7-19 23:24:25

路过学习一下。

hhh454 发表于 2014-7-24 23:39:17

向楼主学习,一直坚持学习

434939575 发表于 2015-5-15 22:40:58

谢谢分享!这个确实不容易。对TRANS和ucs配合还不理解。
页: [1] 2
查看完整版本: 给出三个点,可以画出一个三维弧线的程序