求“去除线头”插件。自动延伸闭合插件。
求“去除线头”插件。自动删除手绘图形超出部分的细微线头。打一个简单的比方:
http://bbs.mjtd.com/forum.php?mod=image&aid=79487&size=300x300&key=8f9d85ad4569bfcf&nocache=yes&type=fixnone
我希望用一个命令去除红圈部分超出的细小线头。
这种图形是从Adobe AI中绘制再倒入进来的,为了保证曲线圆滑,必须超出一点点绘制!
所以超多,且不可避免。
所以如果可能希望 “线头插件” 允许规定 “线头值”,。
比如检测到超出 5单位 则删除,检测到有 5单位的线距则自动就近延伸!
在mapgis中可以实现
;; 云共享 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)
)
不知什么原因,测试的时候运行不了,错误提示是这样的命令: tt; 错误: no function definition: XYP-CMDLA0 xyp1964 发表于 2013-9-29 21:05 static/image/common/back.gif
求函数库,没函数库运行不了
能不能考虑延伸,不够的情况。
本帖最后由 llsheng_73 于 2013-11-4 23:28 编辑
可以通过求它们的交点,计算端点到交点的距离,综合交点在曲线上距离起点的长度,很容易判断出是超出还是不够(vlax-curve-getdistatpont求不出来就是不够),这一部分相对来说比较简单。接下来的处理则比较麻烦,直线段可以把端点坐标改到交点上去就行了,曲线段应该没这么容易,可能还得计算一些相应的参数,由于我水平有限,再加上我一直用到的图中最终不允许曲线(有曲线都全部转为多线段去了),所以不知道怎么计算那些相关参数.这一部分请教下高人们吧 老黄的意思不知道怎么算就不算它了,通通交给CAD,反正它能搞定的。
长了的让它TRIM,不够的让它延伸,是这意思么,老黄? xyp1964 发表于 2013-9-29 21:05
很好,下来看看 xyp1964 发表于 2013-9-29 21:05 static/image/common/back.gif
师兄 在吗。。云盘函数库分享失效了。。求再发下。。谢谢
页:
[1]
2