doro 发表于 2013-5-31 11:44:08

求一个线均分的工具(类似divide)

对象:多线或线
输入:一个数值n
执行后:多线每一段(或线)等分,份数=ceil(每一段长度/n),如ceil(900/200)=5

风雨依然 发表于 2013-5-31 20:33:49


先将曲线原位复制,再在2点打断,
再用cad的divide命令和measure命令即可满足要求
使用时先设置好pdmode和pdsize,或用块(此回答明经里面有不知道是不是你想要的)
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=92651

风雨依然 发表于 2013-5-31 20:44:58

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=87150
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=96221
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99950
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=89283
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=80318
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=58224
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=55999
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=16254
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61542
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=63246
~~~~~~~~~~~~~~~~
(这是和等分曲线有关的帖子明经里面很多的)里面有高手们的解答(希望对你有用)
有解答完的 也有还没搞定的 看看评论也可捞点金

yjpzc 发表于 2013-5-31 21:03:24

(defun yjp-df-obj(df-obj jd-dis / i obj-length pt pt-list)
(setq obj-length(Vlax-Get df-obj 'Length ))
(setq i 0 pt-list '())
(repeat (1+ (fix (/ obj-length jd-dis)))
    (setq pt(vlax-curve-getPointAtDist df-obj (* jd-dis i)))
    (setq pt-list(cons pt pt-list))
    (setq i(1+ i))       
)
(setq pt-list (reverse (cons (car (reverse (yjp-lw-pt df-obj)))pt-list)))
)
;按距离等分

USER2128 发表于 2013-6-1 09:11:26

yjpzc 发表于 2013-5-31 21:03 static/image/common/back.gif
(defun yjp-df-obj(df-obj jd-dis / i obj-length pt pt-list)
(setq obj-length(Vlax-Get df-obj 'Len ...

请提供函数:yjp-lw-pt,谢谢!

yjpzc 发表于 2013-6-1 09:22:02

最后一句可以去掉我忘记去掉了 最后一个最多段线节点坐标
(defun yjp-lw-pt(df-obj / lst lw-name a)
(setq lw-name(entget (vlax-vla-object->ename df-obj)))
(setq lst '())
(foreacha lw-name
            (if (= (car a) 10)
          (if (= (length (cdr a)) 3)
                (setq lst (cons (cdr a) lst))
                (setq lst (cons (append (cdr a) '(0.0)) lst))
              )
       )
    )
(setq lst (reverse lst))
)

yjpzc 发表于 2013-6-1 09:23:28

(defun yjp-df-obj(df-obj jd-dis / i obj-length pt pt-list)
(setq obj-length(Vlax-Get df-obj 'Length ))
   (setq i 0 pt-list '())
   (repeat (1+ (fix (/ obj-length jd-dis)))
   (setq pt(vlax-curve-getPointAtDist df-obj (* jd-dis i)))
   (setq pt-list(cons pt pt-list))
   (setq i(1+ i))      
)
pt-list
)

USER2128 发表于 2013-6-1 09:31:47

yjpzc 发表于 2013-6-1 09:23 static/image/common/back.gif
(defun yjp-df-obj(df-obj jd-dis / i obj-length pt pt-list)
(setq obj-length(Vlax-Get df-obj 'Len ...

万分感谢!

doro 发表于 2013-6-5 10:07:26

多谢楼上各位!

doro 发表于 2013-6-5 10:19:13

本帖最后由 doro 于 2013-6-5 10:23 编辑

按楼上提供的函数自己摸索下,还有就是我没有表述清楚,重新上个图

图中 n=400
380=1900/ceil(1900/400)
309=1234/ceil(1234/400)

函数ceil(z): 返回 ≥ z 的最小整数。
就是以最接近n的一个值等分各线段
页: [1] 2
查看完整版本: 求一个线均分的工具(类似divide)