明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2324|回复: 8

[讨论] 两线平行时,画对称中心线

  [复制链接]
发表于 2013-11-19 09:17 | 显示全部楼层 |阅读模式
  1. ;;两线平行时,画梯形腰线
  2. (defun HH:waist        (en1 en2 / E1EN E1ST E2EN E2ST LST P0 P1E P1S P2E P2S P3 X Y)
  3.   (setq e1st (vlax-curve-getStartPoint en1))
  4.   (setq e1en (vlax-curve-getendPoint en1))
  5.   (setq e2st (vlax-curve-getStartPoint en2))
  6.   (setq e2en (vlax-curve-getendPoint en2))
  7.   (setq        lst (list (list (distance e1st e2st) e1st e2st)
  8.                   (list (distance e1st e2en) e1st e2en)
  9.                   (list (distance e1en e2st) e1en e2st)
  10.                   (list (distance e1en e2en) e1en e2en)
  11.             )
  12.   )
  13.   ;;http://www.xdcad.net/forum/thread-670556-1-4.html HH:ssPts:Sort定义
  14.   (setq lst (car (mapcar 'cdr (HH:ssPts:Sort lst "X" 0.0001)))) ;最远两点
  15.   (if (equal (car lst) e1st 0.0001)
  16.     (setq p1s e1st
  17.           p1e e1en
  18.     )
  19.     (setq p1s e1en
  20.           p1e e1st
  21.     )
  22.   )
  23.   (if (equal (cadr lst) e2st 0.0001)
  24.     (setq p2s e2en
  25.           p2e e2en
  26.     )
  27.     (setq p2s e2st
  28.           p2e e2en
  29.     )
  30.   )

  31.   (setq P0 (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1s p2s))
  32.   (setq P3 (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1e p2e))
  33.   (entmake (list (cons 0 "LINE") (cons 10 P0) (cons 11 P3)))
  34. )

  35. (defun C:W2 (/ EN1 EN2)
  36.   (setq en1 (car (entsel)))
  37.   (setq en2 (car (entsel)))
  38.   (HH:waist en1 en2)
  39.   (princ)
  40. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-11-19 09:46 | 显示全部楼层
“两线平行时,画对称中心线”我怎么没看到老黄判断那两条线是否平行
发表于 2013-11-19 10:01 | 显示全部楼层
  1. (defun HH:waist        (en1 en2 /  P0 P1E P1S P2E P2S P3)
  2.   (setq p1s (vlax-curve-getStartPoint en1)
  3.   p1e (vlax-curve-getendPoint en1)
  4.   p2s (vlax-curve-getStartPoint en2)
  5.   p2e (vlax-curve-getendPoint en2))
  6.   (if(inters p1s p2s p1e p2e)
  7.     (setq p0(mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1s p2e)
  8.     p3(mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1e p2s))
  9.     (setq p0(mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1s p2s)
  10.     p3(mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1e p2e))
  11.     )
  12.   (entmake (list (cons 0 "LINE") (cons 10 P0) (cons 11 P3)))
  13. )


  14. (defun C:W2 (/ EN1 EN2)
  15.   (setq en1 (car (entsel)))
  16.   (setq en2 (car (entsel)))
  17.   (HH:waist en1 en2)
  18.   (princ)
  19. )


给你小改了下。。。我也不检查它们是否平行

点评

你用inters不是检查了吗?  发表于 2013-11-19 11:27
发表于 2013-11-19 12:01 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-11-19 12:04 编辑
llsheng_73 发表于 2013-11-19 10:01
给你小改了下。。。我也不检查它们是否平行

我不是判断它们是否平行,我只是把你判短用那两个点计算中点的过程改了一下
发表于 2014-7-26 16:02 | 显示全部楼层
两线平行时,画对称中心线
发表于 2014-7-26 17:00 | 显示全部楼层

本帖子中包含更多资源

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

x

点评

这个不错啊 呵 源码让大家学习下  发表于 2015-7-22 16:31
发表于 2014-7-26 17:35 | 显示全部楼层
E:\cg\AutoCAD_2014_Simplified_Chinese_Win_64bit_dlm\x64\acad
发表于 2022-11-1 00:21 来自手机 | 显示全部楼层
这么好的程序,值得下载学习。
发表于 2022-11-13 23:31 | 显示全部楼层
学习一下,感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 08:28 , Processed in 0.228598 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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