找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 997|回复: 3

[求助] [求助]:求救画弧编程

[复制链接]
发表于 2005-8-24 11:58:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我编一个程,任意点取四个点,将四个点以P1ine相连,并在最短边画上
个半圆弧,最长边画两个相等的半圆。现在有问题,不能得出结果。哪位高手指点一下

(defun C:bj()
  (setvar "cmdecho" 0)
  (setq p1(getpoint "n/第一点 point"))
  (setq p2(getpoint "n/第二点 point"))
  (setq p3(getpoint "n/第三点 point"))
  (setq p4(getpoint "n/第四点 point"))
  (command "line" p1 p2 p3 p4 "c")
  (setq s1 (distance p1 p2))
  (setq s2 (distance p2 p3))
  (setq s3 (distance p3 p4))
  (setq s4 (distance p4 p1))
  (setq cc ())
  (setq cc (cons(list s1 p1 p2) cc))
  (setq cc (cons(list s2 p2 p3) cc))
  (setq cc (cons(list s3 p3 p4) cc))
  (setq cc (cons(list s4 p4 p1) cc))
  (setq smax (max s1 s2 s3 s4))
  (setq smin (max s1 s2 s3 s4))
  (setq a1 (assoc smax cc))
  (setq b1 (cadr a1))
  (setq b2 (caddr a1))
  (setq b3 (polar b1 (angle b2 b1) (/a1 2)))
  (setq a2 (assoc smin cc))
  (setq b4 (cadr a2))
  (setq b5 (caddr a2))
  (command "arc" b1 "e" b3 "a" 180)
  (command "arc" b3 "e" b2 "a" 180)
  (command "arc" b4 "e" b5 "a" 180)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 10508个

财富等级: 富甲天下

发表于 2005-8-24 13:03:38 | 显示全部楼层
[php]
(defun C:bj()
(setvar "cmdecho" 0)
(setq p1 (getpoint "n/第一点 point"))
(setq p2 (getpoint "n/第二点 point"))
(setq p3 (getpoint "n/第三点 point"))
(setq p4 (getpoint "n/第四点 point"))
(command "line" p1 p2 p3 p4 "c")
(setq s1 (distance p1 p2))
(setq s2 (distance p2 p3))
(setq s3 (distance p3 p4))
(setq s4 (distance p4 p1))
(setq cc (list))
(setq cc (cons (list s1 p1 p2) cc))
(setq cc (cons (list s2 p2 p3) cc))
(setq cc (cons (list s3 p3 p4) cc))
(setq cc (cons (list s4 p4 p1) cc))
(setq smax (max s1 s2 s3 s4))
(setq smin (min s1 s2 s3 s4));<--这里用了MAX
(setq a1 (assoc smax cc))
(setq b1 (cadr a1))
(setq b2 (caddr a1))
(setq b3 (polar b1 (angle b1 b2) (/ smax 2)));<--这里用了A1且A1与除号间无空格
(setq a2 (assoc smin cc)); ^--这里B1和B2反了
(setq b4 (cadr a2))
(setq b5 (caddr a2))
(command "arc" b1 "e" b3 "a" 180)
(command "arc" b3 "e" b2 "a" 180)
(command "arc" b4 "e" b5 "a" 180)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-24 13:29:15 | 显示全部楼层
  1. [FONT=courier new]
  2. ;|任意点取四个点,将四个点以Pline相连,并在最
  3. 短边画上个半圆弧,最长边画两个相等的半圆|;
  4. (defun C:test ()
  5.   (setq        os (getvar "osmode")
  6.         ce (getvar "cmdecho")
  7.   )
  8.   (setvar "cmdecho" 0)
  9.   (setq        p1   (getpoint "\n第一点 point")
  10.         p2   (getpoint p1 "\n第二点 point")
  11.         p3   (getpoint p2 "\n第三点 point")
  12.         p4   (getpoint p3 "\n第四点 point")
  13.         s1   (distance p1 p2)
  14.         s2   (distance p2 p3)
  15.         s3   (distance p3 p4)
  16.         s4   (distance p4 p1)
  17.         cc   '()
  18.         cc   (cons (list s1 p1 p2) cc)
  19.         cc   (cons (list s2 p2 p3) cc)
  20.         cc   (cons (list s3 p3 p4) cc)
  21.         cc   (cons (list s4 p4 p1) cc)
  22.         smax (max s1 s2 s3 s4)
  23.         smin (min s1 s2 s3 s4)
  24.         a1   (assoc smax cc)
  25.         b1   (cadr a1)
  26.         b2   (caddr a1)
  27.         b3   (polar b1 (angle b1 b2) (/ (car a1) 2.0))
  28.         a2   (assoc smin cc)
  29.         b4   (cadr a2)
  30.         b5   (caddr a2)
  31.   )
  32.   (setvar "osmode" 0)
  33.   (command "pline" p1 p2 p3 p4 "c")
  34.   (command "arc" b1 "e" b3 "a" 180)
  35.   (command "arc" b3 "e" b2 "a" 180)
  36.   (command "arc" b4 "e" b5 "a" 180)
  37.   (setvar "osmode" os)
  38.   (setvar "cmdecho" ce)
  39.   (princ)
  40. )
  41. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-24 14:38:39 | 显示全部楼层
谢谢两位高手,特别是二楼的大侠还清楚的把我错的地方都标出来,三楼的大侠又把我程序优化了,谢谢两位
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 17:51 , Processed in 0.420743 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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