千风 发表于 2013-9-28 22:28:51

求“去除线头”插件。自动延伸闭合插件。

求“去除线头”插件。自动删除手绘图形超出部分的细微线头。
打一个简单的比方:
http://bbs.mjtd.com/forum.php?mod=image&aid=79487&size=300x300&key=8f9d85ad4569bfcf&nocache=yes&type=fixnone
我希望用一个命令去除红圈部分超出的细小线头。
这种图形是从Adobe AI中绘制再倒入进来的,为了保证曲线圆滑,必须超出一点点绘制!
所以超多,且不可避免。

所以如果可能希望 “线头插件” 允许规定 “线头值”,。

比如检测到超出 5单位 则删除,检测到有 5单位的线距则自动就近延伸!

永不言弃 发表于 2013-9-29 15:33:22

在mapgis中可以实现

xyp1964 发表于 2013-9-29 21:05:21


;; 云共享 http://yunpan.cn/QXQKsW9gAPmpF
(defun c:tt ()
(xyp-CMDLA0)
(setq dist (Udist 7 "" "距离<输入或鼠标直接量取>" dist nil))
(setq i -1)
(princ "\n选择曲线: ")
(if (setq ss (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE"))))
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (setq ptn        (xyp-Get-CurveIntersLeng s1 3)
          p1 (vlax-curve-getStartPoint s1)
          p2 (vlax-curve-getEndPoint s1)
          p3 (last ptn)
          p4 (car ptn)
      )
      (if (< (- (xyp-Get-LengthAtPoint s1 p2)(xyp-Get-LengthAtPoint s1 p3)) dist)
        (xyp-breakE s1 p2 p3)
      )
      (if (< (- (xyp-Get-LengthAtPoint s1 p4) (xyp-Get-LengthAtPoint s1 p1) ) dist)
        (xyp-breakE s1 p1 p4)
      )
    )
)
(xyp-CMDLA1)
)

李青松 发表于 2013-9-30 10:39:50

不知什么原因,测试的时候运行不了,错误提示是这样的命令: tt; 错误: no function definition: XYP-CMDLA0

c961806787 发表于 2013-11-4 13:13:27

xyp1964 发表于 2013-9-29 21:05 static/image/common/back.gif


求函数库,没函数库运行不了

soly2006 发表于 2013-11-4 14:15:36


能不能考虑延伸,不够的情况。

llsheng_73 发表于 2013-11-4 23:23:49

本帖最后由 llsheng_73 于 2013-11-4 23:28 编辑

可以通过求它们的交点,计算端点到交点的距离,综合交点在曲线上距离起点的长度,很容易判断出是超出还是不够(vlax-curve-getdistatpont求不出来就是不够),这一部分相对来说比较简单。接下来的处理则比较麻烦,直线段可以把端点坐标改到交点上去就行了,曲线段应该没这么容易,可能还得计算一些相应的参数,由于我水平有限,再加上我一直用到的图中最终不允许曲线(有曲线都全部转为多线段去了),所以不知道怎么计算那些相关参数.这一部分请教下高人们吧

llsheng_73 发表于 2013-11-8 16:29:11

老黄的意思不知道怎么算就不算它了,通通交给CAD,反正它能搞定的。
长了的让它TRIM,不够的让它延伸,是这意思么,老黄?

cuncun_101 发表于 2015-9-9 19:35:08

xyp1964 发表于 2013-9-29 21:05


很好,下来看看

四月时落- 发表于 2015-9-26 11:03:26

xyp1964 发表于 2013-9-29 21:05 static/image/common/back.gif


师兄 在吗。。云盘函数库分享失效了。。求再发下。。谢谢
页: [1] 2
查看完整版本: 求“去除线头”插件。自动延伸闭合插件。