- A+
所属分类:CAD二次开发
今天做程序的时候碰到用到镜像坐标点,我问过大神,说什么通过矩阵能得到镜像的坐标,经过查资料。。。看不懂。。我知道的有两种,
第一种就是把需要计算的点上画一个点,通过系统的命令镜像这个点,在取得被镜像的点的坐标,在删除这个点。这样感觉好复杂,速度还慢,
第二种就是纯数据计算。当然这个比较快。首选我们来分析系统镜像是什么原理,镜像的前提是有个镜像轴。通过这个镜像轴来镜像对象。这镜像轴是直线,那么计算过程中,我们也需要取得镜像轴上的任意两点。来确定这个轴,原理很简单,就是通过三角函数来实现,镜像轴加上需镜像的点就形成一个直角三角形。上面的条件就是已知角度和一条边的长,计算出镜像点到轴的垂直距离。。。。难得打字了。。直接上代码吧,计算镜像坐标例子
下面测试lisp代码用,实际可以变为自定义函数,直接代入
(defun c:jjj (/)
(setq DZ1(getpoint "\n镜像轴上任意一点P1:")
DZ2(getpoint "\n镜像轴上任意一点P2:")
DZ3(getpoint "\n需要镜像的点P3:")
)
;要是这个代码能帮到你,希望你也能帮到我。作者没有收益。广告也丰富
(setvar "osmode" 15359)
(setvar "cmdecho" 0)
(setq JA(-(angle DZ1 DZ2)(angle DZ1 DZ3));三角形最小角
JAC(distance DZ1 DZ3)
JAB(* JAC(COS JA))
JAA(polar DZ1 (angle DZ1 DZ2) JAB);垂直点
JAA1(distance DZ3 JAA);垂直高,R半径
JAA2(angle DZ3 JAA);角度
JAA3(polar JAA JAA2 JAA1));p1到p2镜像p3点
(command "CIRCLE" JAA3 1);验证
(setvar "osmode" 15359)
(princ"\n")
(princ JAA3)
(princ"\n")
(princ)
)
复制