- UID
- 9008
- 积分
- 966
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-8-19
- 最后登录
- 1970-1-1
|
发表于 2006-10-18 15:06:25
|
显示全部楼层
最初由 村长 发布
[B]严重支持理正自己做增加和删减多段线的顶点命令,同意楼主的观点,CAD的PEDIT太难用了,而这个功能又是个常用功能,很早以前就建议过,可惜Qun老人家一直没重视. [/B]
这有一个,用起来不错,但愿大家喜欢,东西是从“晓东”那儿借来的。
;|
命令:poly_add_vertex
功能:给选择的POLYLINE段加入一个顶点
|;
(defun $get_vertex_index (e pt / v_num i tf)
(xdrx_setenttodb e)
将实体的(entget)数据存入XDRX内部数据库的ARX变量,若该变量指针有值,则覆盖。并将(ssname) 的序号 i 置 0
(if (= "POLYLINE" (xdrx_getentdxf 0))
提取XDRX内部数据库保存的(entget)实体数据的ARX变量中的指定的DXF组码的值 (xdrx_polyline_ConvertFrom e)
从2DPOLYLINE(R13老多义线)转换得到LWPOLYLINE )
(setq v_num (xdrx_polyline_numVerts e)
获得LWPOLYLINE的顶点数
i -1
)
(setq tf t)
(while (and
tf
(< i v_num)
)
(setq i (1+ i))
(if (xdrx_polyline_onSegAt e i (trans pt 1 0))
(setq tf nil)
)
)
i
)
(defun c:poly_add_vertex (/ e pt pj)
(if (and
(setq e (xdrx_entsel "\n请点取POLY上加入顶点的线段<退出>" '
((0 . "*polyline"))
)
)
(setq pt (getpoint "\n请点取要加入的顶点位置<退出>:"))
)
(progn
(setq pj (trans (cadr e) 1 0)
pj (osnap pj "nea")
)
(setq i ($get_vertex_index (car e) pj))
(xdrx_polyline_addVertexAt (car e) (1+ i) pt)
)
)
(princ)
)
;|
命令:poly_remove_vertex
功能:删除选择的POLYLINE的一个顶点
(defun c:poly_remove_vertex ()
(xdrx_begin '(("pickbox" 5 "aperture" 5))
(if (setq e (xdrx_entsel "\n请点取要去掉的多义线上的顶点<退出>" '
((0 . "*polyline"))
)
)
(progn
(setq pj (trans (cadr e) 1 0)
pj (osnap pj "int,end")
)
(setq i ($get_vertex_index (car e) pj))
(xdrx_polyline_removeVertexAt
(car e) (1+ i))
)
)
(xdrx_end)
(princ)
) |
|