- (defun c:yd(/ AQZB2 EN1 EN2 SS SY1 SY2 VLA1 VLA2 vlax-vbDouble VZB2 ZB1 ZB2)
- (setq ss(ssget'((0 . "lwpolyline")(8 . "jzd"))));选择两条多段线
- (setq vla1(vlax-ename->vla-object (ssname ss 0))vla2(vlax-ename->vla-object (ssname ss 1)))
- (setq zb1(getpoint"\n请选择要移动的顶点:"))
- (setq sy1(vlax-curve-getParamAtPoint vla1 zb1)sy2(vlax-curve-getParamAtPoint vla2 zb1));获取点在各个多段线上的索引
- (setq aqzb2 (vlax-make-safearray vlax-vbDouble '(0 . 1))) ;创建安全数组
- (setq zb2(getpoint"\n请选择要目标顶点:"))
- (setq zb2(list(car zb2)(cadr zb2)))
- (setq vzb2(vlax-safearray-fill aqzb2 zb2));为安全数组赋值
- (vla-put-coordinate vla1 sy1 vzb2);更新顶点
- (vla-put-coordinate vla2 sy2 vzb2)
- (princ)
- )
该命令的目的是同时移动2条多段线上的同一顶点到指定位置,我在使用该命令时,提示:请选择要移动的顶点:; 错误: 参数类型错误: fixnump: nil ,根据上一断点源代码发现是(vlax-make-safearray vlax-vbDouble '(0 . 1))出现了类型错误,我实在想不明白,这是一句简单地创建安全数组的代码,怎么会出错呢?请高手们给解答下啊。
|