明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3668|回复: 9

怎样快速的在多义线上增加节点?

[复制链接]
发表于 2005-3-25 12:01 | 显示全部楼层 |阅读模式
大家好!


多义线一般由多条线段或弧线组成。在工作中我常碰到在多义线的某线段上要增加节点,但这过程有点繁琐:PEDIT-->Edit vertex-->多次空格键或回车键(要起始点到目标线段)-->Insert vertex-->Esc键结束


我的想法是:键入快捷键J-->出现选择光标-->点击目标线段结束(要增加节点位置),这样就很省时间了。哪位朋友能帮帮忙写个lisp,在R14实现该功能?谢谢!
发表于 2005-3-25 13:15 | 显示全部楼层
本帖最后由 作者 于 2005-3-25 13:55:59 编辑

R2004可以,R14不行(对有圆弧的PL线不支持) (defun c:test ()
(setq ent (entsel "\n 选择一条多义线: "))
(setq p0 (cadr ent))
(setq p0 (osnap p0 "nea"))
(setq obj (vlax-ename->vla-object
(car ent)
)
)
(setq point (vla-get-Coordinates obj))
(setq point1 (vlax-safearray->list (vlax-variant-value point)))
(setq len (length point1))
(setq p1 (list (nth 0 point1) (nth 1 point1)))
(setq i 2 k 0)
(repeat (1- (/ len 2))
(setq p2 (list (nth i point1) (nth (1+ i) point1)))
(setq dis0 (distance p1 p2)
dis1 (distance p1 p0)
dis2 (distance p2 p0)
)
(if (equal (+ dis1 dis2) dis0 0.00001)
(setq n k)
)
(setq p1 p2)
(setq i (+ i 2) k (1+ k))
)
(command "pedit" ent "e")
(repeat n
(command "n")
)
(command "i" p0 "x" "")
)
发表于 2005-3-25 13:45 | 显示全部楼层
仅适合没有圆弧的PLINE:
  1. (defun c:j( / ent pt ents i n npt item lstNew)
  2.    (setq ent (entsel))
  3.    (setq pt (cadr ent))
  4.    (setq ents (entget (car ent)))
  5.    (setq i 0
  6.   npt 0
  7.   n (length ents))   
  8.    (while (< i n)
  9.        (setq item (nth i ents))
  10.        (cond
  11.            ((= npt 0)
  12.              (if (= (car item) 10) (setq npt (1+ npt)))
  13.              (setq lstNew (append lstNew (list item)))
  14.            )
  15.            ((= npt 1)
  16.              (if (and (= (car item) 10)
  17.    (equal (angle (cdr (nth (- i 4) ents)) pt)
  18.                  (angle pt (cdr item)) 0.1))
  19.    (progn
  20.        (setq lstNew (append lstNew (list (cons 10 pt) '(40 . 0) '(41 . 0) '(42 . 0) item (nth (1+ i) ents) (nth (+ i 2) ents))))
  21.        (setq i (+ i 3))
  22.        (setq npt (1+ npt))
  23.    )
  24.    (setq lstNew (append lstNew (list item)))
  25.              )           
  26.    
  27.            )
  28.            ((= npt 2)
  29.              (setq lstNew (append lstNew (list item)))
  30.            )
  31.        );cond
  32.        (setq i (1+ i))
  33.    );repeat
  34.    (entmod lstNew)
  35.    (princ)
  36. )
 楼主| 发表于 2005-3-25 14:53 | 显示全部楼层
谢谢二位的帮忙!特别是meflying,妙!妙!真是太好了!
发表于 2011-9-15 17:10 | 显示全部楼层
学习了  楼上可否实现多义线按任意距离增加节点(即像CAD的里“点”按距离平分线段)
发表于 2011-9-16 22:52 | 显示全部楼层
用2012就非常简单了,只要鼠标停留在一个节点上就有提示出来了!
发表于 2011-9-17 00:47 | 显示全部楼层
为什么都喜欢停留在很久以前?适应吧,大家伙!要捣鼓程序就去捣鼓2013没有的吧
发表于 2011-9-20 23:26 | 显示全部楼层
本帖最后由 raimo 于 2011-9-20 23:27 编辑

这个思路似乎更方便..参见  Gu_xl  做的这个程序


http://bbs.mjtd.com/forum.php?mo ... 88&page=1#pid482808
发表于 2013-7-30 16:09 | 显示全部楼层
还是喜欢用低版本的CAD,安装起来方便而且很小
发表于 2014-9-4 01:17 | 显示全部楼层
要是能批量加点就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 18:37 , Processed in 0.214780 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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