xxxkkk331 发表于 2017-8-21 17:20:22

同时更改颜色和线宽的代码出现错误,求帮助!!!

根据网上的代码改写的,只能单独更改颜色或线宽,不能同时更改,求大神指教!!!
(defun c:tes ( / #k1 &kw1 &ob1)
(if (null vlax-dump-object) (vl-load-com) )
(if (and
(setq &kw1 (ssget))
(setq #k1 (getint "\n请输入0~256之间的颜色代码"))
(>= #k1 0)
(<= #k1 256)
(princ "\n请选择对象")
   )
(progn
   (while (setq &ob1 (ssname &kw1 0))
    (setq &kw1 (ssdel &ob1 &kw1))
    (setq &ob1 (vlax-ename->vla-object &ob1))
    (vla-put-color &ob1 #k1);改变颜色
   )
)
)
(if (and
(setq xk (getdist "\n请输入线宽单位毫米"))
(setq xk (* xk 100))
   )
(progn
   (while
    (setq &ob1 (ssname &kw1 0))
    (setq &kw1 (ssdel &ob1 &kw1))
    (setq &ob1 (vlax-ename->vla-object &ob1))
    (vla-put-Lineweight &ob1 xk)
   )
)
)
(princ)
)

434939575 发表于 2017-8-22 08:55:45

xxxkkk331 发表于 2017-8-22 08:30
我显示错误: 参数类型错误: lentityp nil

(setq s1 (ssname ss (setq i (1+ i))));;    s1改成ob 最 前面加(vl-load-com)

xxxkkk331 发表于 2017-8-21 19:47:25

自顶求帮助

xyp1964 发表于 2017-8-21 20:06:18

(defun c:tt ()
(setq co (getint "\n请输入0~256之间的颜色代码: "))
(setq xk (getdist "\n请输入线宽: "))
(princ "\n请选择对象: ")
(while (and (setq ss (ssget)) (> co 0) (< co 256))
    (setq i -1)
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (setq ob (vlax-ename->vla-object ob))
      (vla-put-color ob co)
      (vla-put-Lineweight ob xk)
    )
    (princ "\n请选择对象: ")
)
(princ)
)

xxxkkk331 发表于 2017-8-22 08:30:35

xyp1964 发表于 2017-8-21 20:06
(defun c:tt ()
(setq co (getint "\n请输入0~256之间的颜色代码: "))
(setq xk (getdist "\n请输入 ...

我显示错误: 参数类型错误: lentityp nil

xxxkkk331 发表于 2017-8-22 10:39:07

434939575 发表于 2017-8-22 08:55
(setq s1 (ssname ss (setq i (1+ i))));;    s1改成ob 最 前面加(vl-load-com)

谢谢解决了

start4444 发表于 2018-4-3 17:55:19

页: [1]
查看完整版本: 同时更改颜色和线宽的代码出现错误,求帮助!!!