为什么不行呀,各位老大,替换pl的点
www.dimcax.com
为什么不行呀,各位老大,替换pl的点;|
程序功能:通过知道图元的一个索引号和一个新点,来替换该索引号点的位置
|;
(defun ko-updated-plinepoint (ena index point / acadobject acaddocument oldpoint newpoint)
(vl-load-com)
(setq acadobject (vlax-get-acad-object)
acaddocument (vla-get-activedocument acadobject)
mspace (vla-get-modelspace acaddocument)
vla (vlax-ename->vla-object ena)
oldpoint (vla-get-coordinate vla index)
newpoint (vlax-3d-point point)
)
(vla-put-coordinate vla index newpoint)
(vla-update vla)
)
d
错误: automation 错误。 安全数组中的元素数目不正确
d
;|
程序功能:通过知道图元的一个索引号和一个新点,来替换该索引号点的位置
|;
(defun ko-updated-plinepoint (ena index pointlst / newpoint vla pointlst)
(if (wcmatch (dxf 0 (entget ena)) "*polyline")
(progn
(vl-load-com)
(setq newpoint (vlax-make-safearray vlax-vbdouble '(0 . 1))
vla (vlax-ename->vla-object ena)
)
(if (= (dxf 0 (entget ena)) "lwpolyline")
(progn
(if (= (length pointlst) 3) (setq pointlst (!last pointlst)))
(vlax-safearray-fill newpoint pointlst)
)
(progn
(if (= (length pointlst) 2) (setq pointlst (append pointlst (list 0.0))))
(setq newpoint (vlax-3d-point pointlst))
)
)
(vla-put-coordinate vla index newpoint)
(vla-update vla)
)
(alert "所选的不符合要求,不是多段线")
)
)
;;去掉表中最后一个元素
(defun !last(lst)
(reverse (cdr (reverse lst)))
)
d
可以啦,请问一下我上面的程序好像不是很快啦,有人可以帮我改一下,变快的吗
d
(defun pline_pt(name index pt)
(vla-put-coordinate (vlax-ename->vla-object name) index (vlax-2d-point pt))
)
自己写一个vlax-2d-point函数改变pt为2维点数组即可(类似vlax-3d-point)
原创加密lisp真正的破解.原创lisp操作cad内置对话框.原创lisp直接调用win32 api.原创lisp开发小助手(代码自动生成器).原创vba语句->lisp语句解释器.原创lisp音乐播放器.原创lisp直接使用vba对话框.