找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: shenxuhui403

[求助]:CAD中如何实现任意三点画矩形?

[复制链接]
 楼主| 发表于 2007-7-20 14:52:34 | 显示全部楼层
又试验了一下,发现楼上说的非常正确,zml84 提供的代码只能画出平行四边形,而不是矩形。同时楼上的也分析得非常好,本人正是想达到那样的目的,能否请再次完善该程序,不胜感谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-20 15:00:42 | 显示全部楼层
又试验了一下,发现楼上说的非常正确,zml84 提供的代码只能画出平行四边形,而不是矩形。同时楼上的也分析得非常好,本人正是想达到那样的目的,能否请再次完善该程序,不胜感谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-20 15:16:07 | 显示全部楼层
pt1、pt2连线为一条边,pt3用于指示对边位置。

  1. ;;;功  能:三点绘制矩形
  2. ;;;命令名:TT
  3. ;;;日  期:zml84 于 2007-07-20
  4. (defun C:TT (/ PT1 PT2 PT3 PT4 H ANG)
  5.     (if        (and
  6.             (setq PT1 (getpoint "\n第一点:"))
  7.             (setq PT2 (getpoint PT1 " >> 第二点:"))
  8.             (setq PT3 (getpoint PT2 " >>> 第三点:"))
  9.             (setq ANG (angle PT1 PT2)
  10.                   ANG (+ ANG (* 0.5 pi))
  11.                   PT4 (polar PT3 ANG 10)
  12.                   PT4 (inters PT1 PT2 PT3 PT4 NIL)
  13.             )
  14.         )
  15.         (progn
  16.             (setq H   (distance PT4 PT3)
  17.                   ANG (angle PT4 PT3)
  18.                   PT3 (polar PT2 ANG H)
  19.                   PT4 (polar PT1 ANG H)
  20.             )
  21.             (command "_.pline" "non" PT1 "non" PT2 "non" PT3 "non" PT4
  22.                      "c")
  23.         )
  24.     )
  25.     (princ)
  26. ) ;_ 结束defun


更多关于“三点绘制矩形”   10楼
http://www.acad.net.cn/viewthrea ... tra=page%3D1#pid644
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-21 00:38:28 | 显示全部楼层
这次的程序达到了矩形的效果,
程序中输入点时用了橡皮筋功能,即输入pt2时屏幕显示从pt1到光标的连线,输入pt3点时屏幕显示从pt2到光标的连线,这很好,可是美中不足的是,输入pt3时,pt1到pt2的连线没有了,

其实这可以用画临时线的方法来解决的。
******************
还可以利用CAD本身的画矩形命令的,这样程序简单多了:
[PHP]

(defun c:tt (/ pt1 pt2 ang)
  (if (setq pt1        (getpoint "\nSpecify first point:")
            pt2        (getpoint pt1 "\nSpecify secondly point:")
      )
    (progn
      (setq ang (angle pt1 pt2))
      (command "_ucs" "n" pt1)
      (command "_ucs" "z" (/ (* ang 180) pi) "")
      (command "_rectang" '(0 0 0) pause)
      (command "_ucs" "")
    )
  )
)

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-21 10:11:00 | 显示全部楼层

  1. ;;;三点画矩形(连续绘制模式)
  2. (defun C:TT (/ PT1 PT2 ANG)
  3.     (while (and        (setq PT1 (getpoint "\nSpecify first point:"))
  4.                 (setq PT2 (getpoint PT1 "\nSpecify secondly point:")
  5.                 )
  6.            )
  7.         (progn
  8.             (setq ANG (+ (angle PT1 PT2) (* 0.5 pi))
  9.                   PT3 (polar PT1 ANG 10)
  10.             )
  11.             (command "_.ucs" "n" "3" PT1 PT2 PT3)
  12.             (command "_.rectang" "non" '(0 0 0) PAUSE)
  13.             (command "_.ucs" "P")
  14.         )
  15.     )
  16. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-21 11:04:51 | 显示全部楼层
非常感谢,好用的程序!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-21 11:25:38 | 显示全部楼层
非常感谢,好用的程序!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-21 19:31:20 | 显示全部楼层
最初由 shenxuhui403 发布
[B]非常感谢,好用的程序!! [/B]

其实,19楼20楼的程序各有一个bug,

19楼的(command "_ucs" "") 改成20楼的(command "_ucs" "P")
20楼的(command "_.ucs" "n" "3" PT1 PT2 PT3)改成19楼的
(command "_ucs" "n" pt1)
(command "_ucs" "z" (/ (* ang 180) pi) "")
可以消除各自的bug.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 6809个

财富等级: 富甲天下

发表于 2007-7-21 22:42:20 | 显示全部楼层
好东东,又学了一招,谢谢各位大虾!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-7-21 23:36:50 | 显示全部楼层
最初由 真正的菜鸟 发布
[B]
其实,19楼20楼的程序各有一个bug,

19楼的(command "_ucs" "") 改成20楼的(command "_ucs" "P")
20楼的(command "_.ucs"... [/B]



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

使用道具 举报

发表于 2007-7-22 07:55:18 | 显示全部楼层
仔细看了下,还有一个bug,修改如下:
[PHP]

(defun c:tt (/ pt1 pt2 ang)
  (setvar "CMDECHO" 0)
  (if (setq pt1        (getpoint "\nSpecify first point:")
            pt2        (getpoint pt1 "\nSpecify secondly point:")
      )
    (progn
      (setq ang (angle pt1 pt2))
      (command "_ucs" "n" pt1)
      (command "_ucs" "z" (/ (* ang 180) pi))
      (prompt "\nSpecify other corner point:")
      (command "_rectang" '(0 0 0) pause)
      (command "_ucs" "P")
    )
  )
  (setvar "CMDECHO" 1)
)

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

使用道具 举报

发表于 2007-7-22 08:28:56 | 显示全部楼层
(defun c:tt ()  
  (command "_rectang" pause "R")
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-22 09:36:39 | 显示全部楼层
奇怪,我用了很好啊!那些bug是怎么回事?各位能详细点解释吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-7-22 14:30:57 | 显示全部楼层
最初由 柔柔 发布
[B](defun c:tt ()  
  (command "_rectang" pause "R")
) [/B]


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 04:58 , Processed in 0.411992 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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