明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2005|回复: 11

Autolisp函数求救

  [复制链接]
发表于 2006-4-20 15:11:00 | 显示全部楼层 |阅读模式

己知一个圆弧的两个端点及圆弧的半径,怎么设计一个Autolisp函数返回这个圆弧圆心?求求大家给我想想办法,谢了!

发表于 2006-4-20 17:21:00 | 显示全部楼层

解一个二元二次方程组就可以了,一般情况下有两个解,当然也可能只有一个解或无解。

 

发表于 2006-4-20 21:07:00 | 显示全部楼层

(defun acos (c b)
    (atan (sqrt (- (* c c) (* b b))) b)
 )

 ;若有二解:
 (setq vv (angle p1 p2)
       aa (acos (* rr 2) (distance p1 p2))
      po1 (polar p1 (+ vv aa) rr)
      po2 (polar p1 (- vv aa) rr)
 )

发表于 2006-4-20 21:12:00 | 显示全部楼层
  1. ;;已知圆弧的两个端点及圆弧的半径,求圆弧的圆心。
  2. (DEFUN TEST (P1 P2 R / D ANG DF PC1 PC2)
  3. (SETQ D (/ (DISTANCE P1 P2) 2))
  4. (IF (< D R) (PROGN
  5.   (SETQ ANG (ANGLE P1 P2)
  6.         DF (SQRT (- (* R R) (* D D)))
  7.         PC1 (POLAR (POLAR P1 ANG D) (+ (/ PI 2) ANG) DF)
  8.         PC2 (POLAR PC1 (+ (/ PI 2) ANG) R))
  9.   (LIST PC1 PC2)
  10. )
  11.   (PRINC "\nData Error!")
  12. )
  13. )
复制代码
发表于 2006-4-21 07:04:00 | 显示全部楼层

2点: p1 p2

半径:R

(COMMAND "ARc" p1 "e" p2 "R" r)

(entlast)

-->求圆心?

 楼主| 发表于 2006-4-21 09:55:00 | 显示全部楼层

照你的方法做,可读出的数据会现这种现像,不知道你遇到过没有?

半圆形圆弧的起点160.4, 1.0终点 162.401, 1.0半径1.0004

可得到的圆心却是:161.4, 1.0    这个结果是圆心到两端点的距离不一样?

这样的问题应怎样解决?

发表于 2006-4-21 10:25:00 | 显示全部楼层
有点错,改了一下。
  1. (DEFUN TEST (P1 P2 R / D ANG DF PC1 PC2)
  2.   (SETQ D (/ (DISTANCE P1 P2) 2))
  3.   (IF (< D R) (PROGN
  4.    (SETQ ANG (ANGLE P1 P2)
  5.          DF (SQRT (- (* R R) (* D D)))
  6.          PC1 (POLAR (POLAR P1 ANG D) (+ (/ PI 2) ANG) DF)
  7.          PC2 (POLAR PC1 (- ANG (/ PI 2)) (+ DF DF)))
  8.    (LIST PC1 PC2)
  9.   )
  10.    (PRINC "\nData Error!")
  11.   )
  12. )
复制代码
发表于 2006-4-21 10:32:00 | 显示全部楼层
本帖最后由 作者 于 2006-4-21 11:46:51 编辑

1.0004 ==> 直 2.0008
两点距 2.0010

< 弦长 ==> 无解

 

 楼主| 发表于 2006-4-21 11:05:00 | 显示全部楼层

是半圆,应该两端点的距离=直径,而现在却出现了半圆两端点的距离NO=直径这种现象,在实际应用当中出现了这种误差应如何处理?而输出某些其它软件的文件时,却出现因为这种原因而造成其它软件无法接受.这个小问题害苦我了~~

发表于 2006-4-21 11:55:00 | 显示全部楼层

 (if (equal 两点距 直径 可接受的公差)
  (setq po (mapcar
             (function (lambda (a b) (/ (+ a b) 2)))
             p1
             p2
  )        )
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-20 01:38 , Processed in 0.194812 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表