找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2155|回复: 16

[讨论]:如何让两线平行

[复制链接]
发表于 2007-3-23 13:14:04 | 显示全部楼层 |阅读模式

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

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

×
(defun C:LTP (/ pt1 pt2 l p1 p2 P3 P4 P5 P6 K K1 P10 P20 )
;;保存系统变量设置
    (setq old_OS  (getvar "OSMODE")
      old_CMD (getvar "CMDECHO")
    )
    (setvar "CMDECHO" 0)
    (command "-osnap" "INT")
    (setq pt1 (getpoint "\n左下角点:"))
    (setq pt2 (getpoint pt1 "\n右下角点:"))
  (setvar "OSMODE" 0)
  (command "line" pt1 pt2 "")
  (setq k (angle pt1 pt2))
(setq k1 0)
(if (> k (/ Pi 2))
(setq k1 Pi)
)
(setq p10 (polar pt1 k1 100));向右(左)移
(setq p20 (polar pt2 (* pi 1.5) 100));向下移
(command "line" p10 p20 "")
   ;;恢复系统变量设置
    (setvar "CMDECHO" old_CMD)
    (setvar "OSMODE" old_OS)
    (setq *error* olderr)
  (princ)
)
)
这是一个画两条线的程序,当PT1与PT2连线成45度时,两线平行,如不等于45度,两线不平行.我想要程序做到不论PT1与PT2连线成多少度,在保证P20向下(从PT2)移100的情况下,让两线平行.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-23 18:38:44 | 显示全部楼层
这是什么东西啊//////
真是够。。。。。。。 不想说了。
试试用mline改一下对齐方式。然后再把它炸了。就是你想要的结果吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-23 19:01:38 | 显示全部楼层
(defun C:LTP (/ pt1 pt2 l p1 p2 P3 P4 P5 P6 K K1 P10 P20 )
;;保存系统变量设置
(setq old_OS (getvar "OSMODE")
old_CMD (getvar "CMDECHO")
)
(setvar "CMDECHO" 0)
(command "-osnap" "INT")
(setq pt1 (getpoint "\n左下角点:"))
(setq pt2 (getpoint pt1 "\n右下角点:"))
(setvar "OSMODE" 0)
(command "line" pt1 pt2 "")
(setq k (angle pt1 pt2))
(if (> k pi) (setq k (- k pi)))
(setq p10 (polar pt1 (+ k (* pi 1.5)) 100));向右(左)移
(setq p20 (polar pt2 (+ k (* pi 1.5)) 100));向下移
(command "line" p10 p20 "")
;;恢复系统变量设置
(setvar "CMDECHO" old_CMD)
(setvar "OSMODE" old_OS)
(setq *error* olderr)
(princ)
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-23 19:08:17 | 显示全部楼层
我只是想说明问题而写的LSP语句,它是一个程序中的一部分,在满足我设定的条件下,如何用LISP实现
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-23 19:19:41 | 显示全部楼层
不是帮你实现了吗?
这是什么东西啊//////
真是够。。。。。。。 不想说了。
试试用mline改一下对齐方式。然后再把它炸了。就是你想要的结果吧  

[php]
(defun c:test()
(setq pt1 (getpoint "\n左下角点:"))
(setq pt2 (getpoint pt1 "\n右下角点:"))
(setq ss (ssadd))
(command "mline" "j" "t" "s" 100 pt1 pt2 "")
(ssadd (entlast) ss)
(command "EXPLODE" ss)
(princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-3-23 21:37:04 | 显示全部楼层
这样子说。我就知道了。。
我是按三楼的做法来改的。

说一下,自己的想法。希望有人有更好的方法
就是利用已经画出来的两条线的端点,画出两条构造线xline
然后,对这两条线进行延伸或剪切。。。。
因为还要判断角度,我数学不太好。。。呵呵
类似下面。。。。
[php]
(setq ss2 (ssadd))
(command "xline" "h" pt1 "")  ;;;这边根据需要改"h"或"v"
(ssadd (entlast) ss2)
(setq ss3 (ssadd))
(command "xline" "v" pt2 "")  ;;;这边根据需要改"h"或"v"
(ssadd (entlast) ss3)
(command "trim" ss2 "" "f" pt10 pt1 "" "")
(command "trim" ss3 "" "f" pt20 pt2 "" "")
(command "ERASE" ss2 "")
(command "ERASE" ss3 "")
[/php]
实在是想不出来更简单的办法了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-3-24 15:33:49 | 显示全部楼层
楼主的意思不大明白,最好能以图片的形式表示出来。
根据我自己的理解,将一楼的代码修改后如下:

  1. ;;;功能:根据两点画一对平行线
  2. ;;;日期:zml84  2007-03-24 15:28
  3. ;;;=============================================
  4. (defun C:LTP (/ pt1 pt2 l K xx P10 P20)
  5.     ;;保存系统变量设置
  6.     (setq old_OS  (getvar "OSMODE")
  7.           old_CMD (getvar "CMDECHO")
  8.     )
  9.     ;;    (setvar "CMDECHO" 0)
  10.     ;;    (command "-osnap" "INT")
  11.     (setvar "OSMODE" 32)

  12.     (if        (setq pt1 (getpoint "\n第一点:"))
  13.         (if (setq pt2 (getpoint pt1 "\n第二点:"))
  14.             (progn
  15.                 (setq l        100.
  16.                       k        (angle pt1 pt2)
  17.                 )
  18.                 (if (or (= k pi) (= k 0))
  19.                     (setq p10 (polar pt1 (* pi 1.5) l))
  20.                     (setq
  21.                         xx  (* l (/ (cos k) (sin k)))
  22.                         p10 (polar pt1 0 xx)
  23.                     )
  24.                 )
  25.                 (setq p20 (polar pt2 (* pi 1.5) l))
  26.                 (setvar "OSMODE" 0)
  27.                 (command "line" pt1 pt2 "")
  28.                 (command "line" p10 p20 "")
  29.             )
  30.         )
  31.     )

  32.     ;;恢复系统变量设置
  33.     (setvar "CMDECHO" old_CMD)
  34.     (setvar "OSMODE" old_OS)
  35.     (princ)
  36. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-24 16:07:21 | 显示全部楼层
让两线平行就是计算两线的角度相等,或者用inters函数判断,没有交点就平行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-24 20:41:54 | 显示全部楼层
谢谢8楼的朋友,你的程序就是我要的效果.但有一点不得其解,p10 (polar pt1 0 xx)这句的意思我的理解是P10沿0度角从PT1平移XX.也就是说P10一定在PT1的右边,但程序执行是,当PT1定位在左下角,PT2定位在右上角时,P10为何自动定位到PT1的左边.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-24 22:07:05 | 显示全部楼层
  1. [FONT=courier new](defun C:test (/ pt1 pt2 l P10 P20)
  2.   (setvar "OSMODE" 39)
  3.   (if (and (setq pt1 (getpoint "\n左下角点: "))
  4.            (setq pt2 (getpoint pt1 "\n右下角点: "))
  5.       )
  6.     (progn (setq p10 (polar pt1 k1 100)
  7.                  p20 (polar pt2 k1 100)
  8.            )
  9.            (setvar "OSMODE" 0)
  10.            (command "line" pt1 pt2 "")
  11.            (command "line" p10 p20 "")
  12.     )
  13.   )
  14.   (princ)
  15. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-24 22:15:25 | 显示全部楼层
  1. [FONT=courier new](defun C:test (/ pt1 pt2 l P10 P20)
  2.   (setvar "OSMODE" 39)
  3.   (if (and (setq pt1 (getpoint "\n左下角点: "))
  4.            (setq pt2 (getpoint pt1 "\n右下角点: "))
  5.       )
  6.     (progn (setq p10 (polar pt1 k1 100)
  7.                  p20 (polar pt2 k1 100)
  8.            )
  9.            (setvar "OSMODE" 0)
  10.            (command "line" pt1 pt2 "")
  11.            (command "line" p10 p20 "")
  12.     )
  13.   )
  14.   (princ)
  15. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2007-3-24 23:59:38 | 显示全部楼层
最初由 xyp1964 发布
[B][CODE](defun C:test (/ pt1 pt2 l P10 P20)
  (setvar "OSMODE" 39)
  (if (and (setq pt1 (getpoint "\n左下角点: "))
           (setq pt2 (getpoint pt1 "\n右下角点: "))
      )
    (progn ... [/B]


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

使用道具 举报

发表于 2007-3-25 09:34:30 | 显示全部楼层
到头还是理解错了啊。。。呵呵。。。
就是不知道有什么用处。
xyp1964 斑主,可能也是理解有出入。
而且

  1. 命令: test
  2. 左下角点:
  3. 右下角点: ; 错误: 参数类型错误: numberp: nil
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 20:01 , Processed in 0.218198 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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