找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 605|回复: 3

[分享]:以端点,端点,中点方式绘制圆弧

[复制链接]
发表于 2004-7-11 22:22:39 | 显示全部楼层 |阅读模式

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

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

×
以端点,端点,中点方式绘制圆弧
[PHP](defun c:tt (/ p1 p2 p3 e run)
  (defun p_on_line (pt pt1 pt2)
    (equal (+ (distance pt pt1) (distance pt pt2))
           (distance pt1 pt2)
           1e-4
    )
  )
  (setq run t)
  (setq p1 (getpoint))
  (setq p2 (getpoint p1))
  (while (and run (setq p3 (grread 1 3)))
    (if e(progn (entdel e) (setq e nil))
    )
    (print p3)
    (cond
      ((= 5 (car p3))
       (if (not (p_on_line (cadr p3) p1 p2))
         (progn
           (command "._arc" p1 (cadr p3) p2)
           (setq e (entlast))
         )
       )
      )
      ((= 3 (car p3))
       (if (not (p_on_line (cadr p3) p1 p2))
         (progn
           (command "._arc" p1 (cadr p3) p2)
           (setq run nil)
         )
       )
      )

    )
  )
)[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-7-11 23:15:12 | 显示全部楼层
这样写是不是更简洁些?
不过用gr 不便捕捉,总是“心中永远的痛”。
[php]
(defun c:tt (/ p1 p2 p3 e run)
  (defun p_on_line (pt pt1 pt2)
    (equal (+ (distance pt pt1) (distance pt pt2))
       (distance pt1 pt2)
       1e-4
    )
  )
  (setq run t e nil)
  (setq p1 (getpoint "\n圆弧起点:"))
  (setq p2 (getpoint p1 "\n圆弧终点:"))
  (princ "\n圆弧控制点:")
  (while (and p1 p2 run (setq p3 (grread 1 3)))
    (if e (entdel e))
    ;(print p3)
    (if (not (p_on_line (cadr p3) p1 p2))
       (progn
         (command "._arc" p1 (cadr p3) p2)
         (setq e (entlast))
       )
    )
    (if(= 3 (car p3)) (setq run nil))
  )e
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-7-13 00:06:48 | 显示全部楼层
最初由 陌生人 发布
[B]这样写是不是更简洁些?
不过用gr 不便捕捉,总是“心中永远的痛”。
[php]
(defun c:tt (/ p1 p2 p3 e run)
  (defun p_on_line (pt pt1 pt2)
    (equal (+ (distance pt pt1) (distance pt pt2))
      ... [/B]



也可以:
  先任意画出圆弧(p1 p2 p??)
grread过程中entmod.
求圆心?!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-13 08:11:34 | 显示全部楼层
改圆心我也想到过,不过一般情况下不太愿意用grread(除非不得已),因此也没有继续。
再换一个思路,有没有人想到过这个?:
我更愿意这样:
利用3点画圆,这个支持捕捉:):
加了个line,为了方便看清楚要画的圆弧起点终点
虽然先画了个圆,但是并不妨碍对要画的圆弧的理解,和失去捕捉比起来,是不是更爽呢?
[php]
(defun c:arc3(/ p1 p2)
  (setq p1 (getpoint "\n起点:"))
  (setq p2 (getpoint p1 "\n终点:"))
  (vl-cmdf ".line" p1 p2 "")
  (setq e (entlast))
  (vl-cmdf ".circle" "3p" p1 p2 pause)
  (vl-cmdf ".erase" (entlast) e "")
  (vl-cmdf ".arc" p1 (getvar "lastpoint")p2)
)
[/php]

做了个演示,可惜发不上来:(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 10:14 , Processed in 0.168210 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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