明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: jh1005

[源码] 小笨智能中心线v1.4(2019-12-29更新)

    [复制链接]
 楼主| 发表于 2012-9-8 21:28 | 显示全部楼层
aaacjh 发表于 2012-9-6 21:57
我也用布局出图,图面整洁!不知楼主的认识~!!同一张图,d50和d5的孔是会有同时出现的时候的,适应性是一个好 ...

已增加自动线型比例,谢谢你的意见。
发表于 2012-9-8 22:40 | 显示全部楼层
hutengfei 发表于 2012-9-6 19:40
请问平行线中心线延长为总长的0.1倍,怎么修改啊?
不甚感谢!


(defun 2Line-center          ;两线中心线
(en1 en2 / p1 p2 p3 p4 p5 p6 ang1 ang2 p1_2 p3_4)
   (setq p1 (vlax-curve-getstartpoint en1)
         p2 (vlax-curve-getendpoint en1)
         p3 (vlax-curve-getstartpoint en2)
         p4 (vlax-curve-getendpoint en2)
                p5 (inters p1 p2 p3 p4 nil)
        )
   (cond
     (p5  ;不平行
           (setq ang1 (angle p5 (fy-m2p p1 p2)))
           (setq ang2 (angle p5 (fy-m2p p3 p4)))
           (setq p6 (polar p5 (- (max ang1 ang2) (/ (abs (- ang1 ang2)) 2)) (distance p1 p2)))
       (setq p1_2 (vl-sort (list p1 p2) (function (lambda (a b) (< (distance a p5) (distance b p5))))))
       (setq p3_4 (vl-sort (list p3 p4) (function (lambda (a b) (< (distance a p5) (distance b p5))))))
       (setq p1 (car p1_2) p2 (cadr p1_2))
       (setq p3 (car p3_4) p4 (cadr p3_4))
           (if (> (distance p1 p3) 0) ;避免p1,p3共点情况取不到交点
             (setq p5 (inters p5 p6 p1 p3 nil))
           )
           (if (and
                 (inters p1 p2 p3 p4)
                 (and (> (distance p1 p5) 0.00000001)
                             (> (distance p2 p5) 0.00000001)
                             (> (distance p3 p5) 0.00000001)
                             (> (distance p4 p5) 0.00000001)
                         )
               )
            (progn  ;交叉线
                  (setq p6 (inters p5 p6 p2 p4 nil))
                  (Line-Scale (makeline p5 p6) lay)
                  (setq p5 (inters p1 p2 p3 p4))
                  (setq p6 (polar p5 (+ (angle p5 p6) (/ pi 2)) (distance p5 p6)))
           (setq p6 (inters p5 p6 p1 p4 nil))
           (setq p5 (inters p5 p6 p2 p3 nil))
                  (Line-Scale (makeline p5 p6) lay)
                )
            (progn  ;非交叉线
                  (setq p6 (inters p5 p6 p2 p4 nil))
                  (Line-Scale (makeline p5 p6) lay)
                )
           )
         )
         (t  ;平行线
            (setq p5 (fy-m2p p1 (PerToLine p1 p3 p4)))
            (setq p6 (fy-m2p p2 (PerToLine p2 p3 p4)))
                (if (inters p1 p3 p2 p4)
                  (progn
                     (setq p5 (inters p5 p6 p1 p4 nil))
                 (setq p6 (inters p5 p6 p2 p3 nil))
                        (Line-Scale (makeline p5 p6) lay)
                  )
                  (progn
                     (setq p5 (inters p5 p6 p1 p3 nil))
                 (setq p6 (inters p5 p6 p2 p4 nil))
                        (Line-Scale (makeline p5 p6) lay)
                  )
                )
         )
   )
(princ)


这个是2012-9-6版本的
楼主您好,可以指点下,怎么修改么!
发表于 2012-9-9 19:15 | 显示全部楼层
很实用。谢谢分享源码。
 楼主| 发表于 2012-9-10 22:27 | 显示全部楼层
汪若飞wangrf 发表于 2012-9-8 22:40
(defun 2Line-center          ;两线中心线
(en1 en2 / p1 p2 p3 p4 p5 p6 ang1 ang2 p1_2 p3_4)
    ...

把(Line-Scale (makeline p5 p6) lay)几句改为:

(Line-Scale (makeline
  (polar p6 (angle p6 p5) (+ (distance p5 p6) (* (distance p5 p6) 0.1))) ;0.1倍
  (polar p5 (angle p5 p6) (+ (distance p5 p6) (* (distance p5 p6) 0.1))) ;0.1倍
) lay )
发表于 2012-9-10 22:47 | 显示全部楼层
jh1005 发表于 2012-9-10 22:27
把(Line-Scale (makeline p5 p6) lay)几句改为:

(Line-Scale (makeline

太感谢楼主了,用过最完美的智能中心线程序!
发表于 2012-9-11 07:30 | 显示全部楼层
太强大了
 楼主| 发表于 2012-9-18 22:24 | 显示全部楼层
yjr111 发表于 2012-9-4 20:40
支持一下,不过好像还有点问题。

你的图中有一个矩形不是多义线,现在的1.2版已支持。
程序毕竟不是万能的,很难识别各种各样的图形,要适当选择图形。

点评

已经很好了,实际使用基本已经可以满足,楼主辛苦了  发表于 2012-9-18 22:59
发表于 2012-9-19 09:18 | 显示全部楼层
关注中。。。。。。。。。。。。。。
发表于 2012-9-27 20:50 | 显示全部楼层
本帖最后由 Jalinnet 于 2012-9-27 20:59 编辑

有一个bug:选择一个圆或矩形生成中心线,然后选择这两条中心线,却生成一条水平或垂直的重合线
发表于 2012-9-27 21:21 | 显示全部楼层
本帖最后由 flytoday 于 2012-9-27 21:22 编辑

运行太慢了~~~~~~~~~~~~~~~

多了直接卡死
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 05:22 , Processed in 0.292995 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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