jh1005 发表于 2012-9-8 21:28:06

aaacjh 发表于 2012-9-6 21:57 static/image/common/back.gif
我也用布局出图,图面整洁!不知楼主的认识~!!同一张图,d50和d5的孔是会有同时出现的时候的,适应性是一个好 ...

已增加自动线型比例,谢谢你的意见。

汪若飞wangrf 发表于 2012-9-8 22:40:41

hutengfei 发表于 2012-9-6 19:40 static/image/common/back.gif
请问平行线中心线延长为总长的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版本的
楼主您好,可以指点下,怎么修改么!

13579 发表于 2012-9-9 19:15:04

很实用。谢谢分享源码。

jh1005 发表于 2012-9-10 22:27:29

汪若飞wangrf 发表于 2012-9-8 22:40 static/image/common/back.gif
(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 )

汪若飞wangrf 发表于 2012-9-10 22:47:28

jh1005 发表于 2012-9-10 22:27 static/image/common/back.gif
把(Line-Scale (makeline p5 p6) lay)几句改为:

(Line-Scale (makeline


太感谢楼主了,用过最完美的智能中心线程序!

aaa862 发表于 2012-9-11 07:30:25

太强大了

jh1005 发表于 2012-9-18 22:24:25

yjr111 发表于 2012-9-4 20:40 static/image/common/back.gif
支持一下,不过好像还有点问题。

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

zhaozwf 发表于 2012-9-19 09:18:11

关注中。。。。。。。。。。。。。。

Jalinnet 发表于 2012-9-27 20:50:47

本帖最后由 Jalinnet 于 2012-9-27 20:59 编辑

有一个bug:选择一个圆或矩形生成中心线,然后选择这两条中心线,却生成一条水平或垂直的重合线

flytoday 发表于 2012-9-27 21:21:49

本帖最后由 flytoday 于 2012-9-27 21:22 编辑

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

多了直接卡死
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: 智能中心线v1.4(2019-12-29更新)