明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2748|回复: 11

请教高手求中点问题

  [复制链接]
发表于 2009-2-10 13:54:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-2-13 11:58:56 编辑

有首尾相接的四条直线L1、L2、L3、L4;如何求L1与L3、L2与L4的中点,目的:在屏幕显示L1与L3、L2与L4的距离。

 

就像距形一样,我要长和宽。

本帖子中包含更多资源

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

x
发表于 2009-2-10 14:03:00 | 显示全部楼层
楼主说的不清楚啊。什么叫求2条线的中点啊?是指2条线的中点连线吗?就算是2条线的中点连线也不是2条线的距离啊。
 楼主| 发表于 2009-2-10 15:12:00 | 显示全部楼层

2楼说的没错,我是要中点连线的长度。

发表于 2009-2-10 15:21:00 | 显示全部楼层
如果是要线的中点的话 直接知道4个交点就可以了啊。4条线头尾相交 就有4个交点。如果2点分别为(X1,Y1)(X2,Y2)那么中点就是((X1+X1)/2,(Y1+Y2)/2).
发表于 2009-2-11 10:36:00 | 显示全部楼层

求L1与L3、L2与L4的中点 

在屏幕显示L1与L3、L2与L4的距离。 

表达不清

发表于 2009-2-11 13:26:00 | 显示全部楼层

中点按坐标算就行了  2线的距离。。。哥们上过中学的都该知道 平面内不平行的话 2线的距离就是0

发表于 2009-2-11 17:18:00 | 显示全部楼层
楼主还是用个好一点的图,表达好一点,看得我一头雾水
 楼主| 发表于 2009-2-14 08:38:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-14 8:42:06 编辑

第一种情况是我想要的,但往往因为绘图的顺序问题会有第二种情况出现,有什么解决办法?
  1. (defun c:temp()
  2.   (setq ss(ssget))
  3.   (setq len (sslength ss))
  4. (if (< len 4)(progn(alert "只能选4条线!")(exit())))
  5. (if (> len 4)(progn(alert "只能选4条线!")(exit())))
  6.   (setq ent1 (ssname ss 0)
  7. ent2 (ssname ss 1)
  8. ent3 (ssname ss 2)
  9. ent4 (ssname ss 3))
  10.   (setq dxf1 (entget ent1)
  11. dxf2 (entget ent2)
  12. dxf3 (entget ent3)
  13. dxf4 (entget ent4))
  14.   (setq qidian1 (cdr (assoc 10 dxf1))
  15. qidian2 (cdr (assoc 10 dxf2))
  16. qidian3 (cdr (assoc 10 dxf3))
  17. qidian4 (cdr (assoc 10 dxf4))
  18. duandian1 (cdr (assoc 11 dxf1))
  19. duandian2 (cdr (assoc 11 dxf2))
  20. duandian3 (cdr (assoc 11 dxf3))
  21. duandian4 (cdr (assoc 11 dxf4)))
  22.   (setq mp1 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian1 duandian1)
  23. mp2 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian2 duandian2)
  24. mp3 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian3 duandian3)
  25. mp4 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian4 duandian4))
  26.   (command "line" mp1 mp3 "")
  27.   (command "line" mp2 mp4 ""))

本帖子中包含更多资源

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

x
发表于 2009-2-14 10:59:00 | 显示全部楼层

分2个程序就是了。弄个DCL 在开始时先选择第一还是第二种情况。然后按照选择进入对应的程序。

发表于 2009-2-14 11:03:00 | 显示全部楼层

或者不用DCL 在程序里直接写。

(defun c:temp()

(setq qingkuang(getint:"请选择情况类型:(1/2)"))

(if (= qingkuang 1)(goto1)(goto2))

(defun goto1()

第一种情况程序

)

(defun goto2()

第二种情况程序

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

本版积分规则

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

GMT+8, 2025-7-29 16:34 , Processed in 0.205112 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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