明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6290|回复: 12

多义线如何快速增加加点?

  [复制链接]
发表于 2011-9-25 11:00:48 | 显示全部楼层 |阅读模式
大家好!
多义线一般由多条线段或弧线组成。一般先把线按距离平分,pedit编辑,在平分点处一个一个增加节点,过程很繁琐,如果一条两条还行,多条就很繁琐,哪位朋友能帮帮忙写个lisp,自动实现多义线按任意距离(可选择输入)增加节点,谢谢!

发表于 2011-9-25 14:05:56 | 显示全部楼层
以前有贴子了,这里有程序下载
http://bbs.mjtd.com/forum.php?mo ... F%C9%CF%BC%D3%B5%E3
 楼主| 发表于 2011-9-25 17:25:34 | 显示全部楼层
楼上 请问程序在那里,没找到, 看见论坛上别人说的是任意加节点。  我想需要在多义线上按任意距离自动加节点(像一段线我想平分成10份 在中间平分点处加9个节点)
发表于 2011-9-25 20:56:11 | 显示全部楼层
给你个算法,不知是否还有更好地算法:拾取多一线,会得到一个点坐标,也要获取所拾取多一线的所有坐标,根据距离最短来判断把拾取点的坐标插入到多一线的坐标中,重新绘制多一线

点评

对lisp一点都不会 算法是不是应该这样,提取多义线所有节点坐标 求出多义线总的长度 再平分距离 再在平分距离上添加节点 (多义线有圆弧线时怎计算长度)?  发表于 2011-9-26 17:15
发表于 2011-9-25 21:55:59 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-9-26 18:55 编辑

  1. (defun c:pladdpt  (/ CMDECHO EN PT ENDEN SS osmode d l pts)
  2.   (setq cmdecho (getvar 'cmdecho))
  3.   (setq osmode (getvar 'osmode))
  4.   (setvar 'cmdecho 0)
  5.   (setvar 'osmode 0)
  6.   (and
  7.     (setq en (car (entsel "\n选择多段线:")))
  8.     (WCMATCH (cdr (assoc 0 (entget en))) "*POLYLINE")
  9.     (setq d (getreal "\n分割间距:"))
  10.     (progn
  11.       (setq l (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en))
  12.             dd 0)
  13.       (while (and (< (setq dd (+ dd d)) l)
  14.               (setq pt (vlax-curve-getPointAtDist en dd))
  15.               )
  16.         (setq pts (cons pt pts))
  17.         )
  18.    (foreach pt pts
  19.       (setq enden (entlast))
  20.       (command "_break" en (vlax-curve-getclosestpointto en pt) pt)
  21.       (setq ss (ssadd))
  22.       (while (setq enden (entnext enden))
  23.         (if (not (member (cdr (assoc 0 (entget enden)))
  24.                          '("ATTRIB" "VERTEX" "SEQEND")))
  25.           (ssadd enden ss)
  26.           )
  27.         )
  28.       (VL-CATCH-ALL-APPLY 'vl-cmdf (list "pedit" en "j" ss "" ""))
  29.       )
  30.      )
  31.     )
  32.   (setvar 'cmdecho cmdecho)
  33.   (setvar 'osmode osmode)
  34.   (princ)
  35.   )

点评

非常感谢版主帮忙 正是所需要的  发表于 2011-9-26 20:18
 楼主| 发表于 2011-9-26 17:07:04 | 显示全部楼层
本帖最后由 efreet 于 2011-9-26 17:21 编辑

Gu_xl版主 试运行 好像添加的节点不对  比较乱,无序  不是平分的,我想在任意平分多义线添加节点,能否帮忙修改下?
版主 如何获得CAD里自带命令"_measure““点的平分”即的点的坐标? 再把各个点连接起来重画多义线即得
发表于 2011-9-26 17:11:40 | 显示全部楼层

RE: 多义线如何快速增加加点?

上个图,原多段线和平分后的结果
 楼主| 发表于 2011-9-26 17:55:13 | 显示全部楼层
本帖最后由 efreet 于 2011-9-26 18:06 编辑

http://bbs.mjtd.com/forum.php?mod=attachment&aid=NjEzOTJ8YTE4Njk1NjIzN2ZkMDQyMWY0OGFjYjYzZjZkYmY2MzJ8MTc0NjAzMDQ3Mw%3D%3D&request=yes&_f=.jpg  图已上传, 即获取CAD里自带命令"_measure““点的平分”即的点的坐标, 再把各个点与原有节点连接起来重画多义线即得

本帖子中包含更多资源

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

x
发表于 2011-9-26 18:55:36 | 显示全部楼层
efreet 发表于 2011-9-26 17:55
http://bbs.mjtd.com/forum.php?mod=attachment&aid=NjEzOTJ8YTE4Njk1NjIzN2ZkMDQyMWY0OGFjYjYzZjZkYmY2MzJ8MTc0NjAzMDQ3Mw%3D%3D&request=yes&_f=.jpg  图已上传, 即获取CAD里自带命令"_measure““点的平分”即的点的坐标, 再把各个点与 ...

捕捉问题!
(setvar 'osmode 4771)
==》
(setvar 'osmode 0)
就ok了
 楼主| 发表于 2011-9-26 20:20:10 | 显示全部楼层
谢谢楼上各位热情帮忙  问题已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 00:27 , Processed in 0.238789 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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