magicboy555 发表于 2017-12-8 17:47:00

求一个简单的小程序

就是判断直线或者多段线长度数值后面的数字是0或者5,比如直线长度为1299那个就把这个直线变个红色,1295的长度的话就变个蓝色。1300的话就不变色。
尾数:0不动,5变蓝色,其他数值变红色
谢谢啦!

vectra 发表于 2017-12-8 17:47:01

本帖最后由 vectra 于 2017-12-8 20:47 编辑

(defun c:tt (/ en len n ss)(setq ss (ssget '((0 . "*LINE"))))
(repeat (setq n (sslength ss))
    (setq n   (1- n)
          en(vlax-ename->vla-object (ssname ss n))
          len (vla-get-length en)
    )
    (cond ((= 0 (rem (fix len) 10)) t)
          ((= 0 (rem (fix len) 5)) (vla-put-color en 5))
          (t (vla-put-color en 1))
    )
)
(princ)
)

xiang19751218 发表于 2017-12-8 21:35:32

(defun c:gs ( / ss i e color x str wsz ob)
(vl-load-com)
(if
    (setq ss (ssget'((0 . "*POLYLINE,line"))))
    (progn
    (repeat (setq i (sslength ss) )
      (setq e (ssname ss (setq i (1- i))))
      (setq ob (vlax-ename->vla-object e))
      (setq color (vla-get-Color ob))
      (setq x (vlax-curve-GetEndParam ob))
      (setq str (rtos (vlax-curve-GetDistAtParam ob x) 2 0))
      (setq wsz (substr str (strlen str) (strlen str)) )
      
      (cond((= "5" wsz)(vla-put-color ob 5) )
             ((= "0" wsz)(vla-put-color ob color) )
             (t (vla-put-color ob 1) )

      );cond
    )
);progn
);IF
(princ)
)

magicboy555 发表于 2017-12-18 12:28:03

vectra 发表于 2017-12-8 17:47


对的!太厉害了!谢谢!
页: [1]
查看完整版本: 求一个简单的小程序