明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2320|回复: 27

[提问] 求一个 两点中心线 小程序

[复制链接]
发表于 2022-10-14 09:39:45 | 显示全部楼层 |阅读模式
点选红色线上两个点,中心线位置默认右下角就行了,论坛搜索过了,都是两线中心线

本帖子中包含更多资源

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

x

点评

神一样的提问,难倒一群。。。  发表于 2022-10-15 13:10
发表于 2022-10-14 16:02:28 | 显示全部楼层
king、 发表于 2022-10-14 15:28
可能我表述不清楚,图片现在应该清晰些
  1. (defun c:tt()
  2.   (prompt "\n请选择两条直线:")
  3.   (setq ss (ssget))
  4.   (if (>= (sslength ss) 2)
  5.     (progn
  6.       (setq ent1 (entget (ssname ss 0)))
  7.       (setq ent2 (entget (ssname ss 1)))
  8.       
  9.       (setq pt11 (cdr (assoc 10 ent1)))
  10.       (setq pt12 (cdr (assoc 11 ent1)))
  11.       
  12.       (setq pt21 (cdr (assoc 10 ent2)))
  13.       (setq pt22 (cdr (assoc 11 ent2)))
  14.       
  15.       (setq pt13 (mapcar '(lambda(x y)(/ (+ x y) 2.0)) pt11 pt12));中点
  16.       (setq pt23 (mapcar '(lambda(x y)(/ (+ x y) 2.0)) pt21 pt22));中点
  17.       
  18.       
  19.       (setq pt31 (list (car pt23) (cadr pt13)))
  20.       (setq pt32 (list (car pt13) (cadr pt23)))
  21.       
  22.       (setq H 100)
  23.       
  24.       (setq ang1 (angle pt13 pt31))
  25.       (setq pt41 (polar pt31 ang1 (- H)))
  26.       (setq pt42 (polar pt31 ang1 H))
  27.       
  28.       (entmake (list '(0 . "LINE") '(62 . 1) (cons 10 pt41) (cons 11 pt42)))
  29.       
  30.       (setq ang2 (angle pt23 pt31))
  31.       (setq pt51 (polar pt31 ang2 (- H)))
  32.       (setq pt52 (polar pt31 ang2 H))
  33.       
  34.       (entmake (list '(0 . "LINE") '(62 . 1) (cons 10 pt51) (cons 11 pt52)))

  35.     )
  36.   )
  37. )

点评

对如此神问也能给出准确回答,太历害得不行  发表于 2022-10-15 13:11
发表于 2022-10-14 14:26:19 | 显示全部楼层
本帖最后由 229096767 于 2022-10-14 15:08 编辑

不知道是不是如图所示:


  1. (defun c:tt()
  2.   (prompt "\n请选择两条直线:")
  3.   (setq ss (ssget))
  4.   (if (>= (sslength ss) 2)
  5.     (progn
  6.       (setq ent1 (entget (ssname ss 0)))
  7.       (setq ent2 (entget (ssname ss 1)))
  8.       
  9.       (setq pt11 (cdr (assoc 10 ent1)))
  10.       (setq pt12 (cdr (assoc 11 ent1)))
  11.       
  12.       (setq pt21 (cdr (assoc 10 ent2)))
  13.       (setq pt22 (cdr (assoc 11 ent2)))
  14.       
  15.       (setq pt13 (mapcar '(lambda(x y)(/ (+ x y) 2.0)) pt11 pt12));中点
  16.       (setq pt23 (mapcar '(lambda(x y)(/ (+ x y) 2.0)) pt21 pt22));中点
  17.       
  18.       (command "line" pt13 pt23 "");中点连线
  19.       
  20.       (setq pt33 (mapcar '(lambda(x y)(/ (+ x y) 2.0)) pt13 pt23));中点连线的中点
  21.       (setq ang1 (angle pt13 pt23));中点连线的角度
  22.       
  23.       (setq L (/ (distance pt13 pt23) 2.0))
  24.       
  25.       (setq pt31 (polar pt33 (- ang1 (/ pi 2)) L))
  26.       (command "line" pt33 pt31 "")
  27.       
  28.       (setq pt32 (polar pt33 (+ ang1 (/ pi 2)) L))
  29.       (command "line" pt33 pt32 "")
  30.       
  31.     )
  32.   )
  33. )


本帖子中包含更多资源

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

x
发表于 2022-10-14 16:20:55 | 显示全部楼层
本帖最后由 飞的鱼儿 于 2022-10-14 16:29 编辑

(defun c:jjbb()
  (setq p1 (getpoint"\n线A左端点")
        p2 (getpoint"\n线A右端点")
        p3 (getpoint"\n线B左端点")
        p4 (getpoint"\n线B右端点")

        )
  (setq x1 (/ (+ (car p1) (car p2))2)
        x2 (/ (+ (car p3) (car p4))2)
        )
  (setq y1 (cadr p1)
        y2 (cadr p3)
        )
  (setq x100 (max x1 x2)
        y100 (min y1 y2)
        )
  (setq os1 (getvar "osmode"))
  (setvar "osmode" 0)
  (10zz (list x100 y100) 50)
  )
(defun 10zz (pt1 le1 / p11 p12 p13 p14)
  (setq p11 (polar pt1 (*   0 pi) (*  1 le1))
        p12 (polar pt1 (*   0 pi) (* -1 le1))
        p13 (polar pt1 (* 0.5 pi) (*  1 le1))
        p14 (polar pt1 (* 0.5 pi) (* -1 le1))
        )
  (command"line" p11 p12 "")
  (command"line" p13 p14 "")
  (setvar "osmode" os1)
  )


本帖子中包含更多资源

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

x
发表于 2022-10-14 09:46:09 | 显示全部楼层
一条线与另一条线中心垂线的交点?
 楼主| 发表于 2022-10-14 09:48:52 | 显示全部楼层
xj6019 发表于 2022-10-14 09:46
一条线与另一条线中心垂线的交点?

是两个线的中心点的中心线
发表于 2022-10-14 10:36:45 | 显示全部楼层
什么意思,中心线,右下角
 楼主| 发表于 2022-10-14 10:52:51 | 显示全部楼层
start4444 发表于 2022-10-14 10:36
什么意思,中心线,右下角

现在是想分别点选两个线的中心点,按图片应该有两个垂直相交(左上角和右上角),现在只想要右下角的中心线
 楼主| 发表于 2022-10-14 10:54:36 | 显示全部楼层
king、 发表于 2022-10-14 10:52
现在是想分别点选两个线的中心点,按图片应该有两个垂直相交(左上角和右上角),现在只想要右下角的中心 ...

或者按点选的顺序确定中心线位置
发表于 2022-10-14 11:05:22 | 显示全部楼层
king、 发表于 2022-10-14 10:52
现在是想分别点选两个线的中心点,按图片应该有两个垂直相交(左上角和右上角),现在只想要右下角的中心 ...

这个选两个点求水平垂直相交点关中心线啥事。。。按你图像应该直接选上面线再选下面线上任意的点,计算交点这样才是便捷的操作
发表于 2022-10-14 11:20:49 | 显示全部楼层
“点选红色线上两个点,中心线位置默认右下角就行了,论坛搜索过了,都是两线中心线”这一句话有人能理解吗?
 楼主| 发表于 2022-10-14 11:21:43 | 显示全部楼层
start4444 发表于 2022-10-14 11:05
这个选两个点求水平垂直相交点关中心线啥事。。。按你图像应该直接选上面线再选下面线上任意的点,计算交 ...

选中心点出中心线方便些,因为这两个线可能是多段线或者面域上面的两根线
发表于 2022-10-14 13:32:00 | 显示全部楼层
虚拟一个矩形,使它的一组对角分别在两条水平线的中心上。现在要获取另外一组对角中右下角的坐标,并做十字中心线标记。估计是这个意思。不一定对,我真费了劲了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 01:29 , Processed in 0.187792 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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