明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1005|回复: 5

[经验] 求解!!!!!!

[复制链接]
发表于 2023-7-8 22:04:03 | 显示全部楼层 |阅读模式
以下程序可以运行,但是结果却不是我想要的4号(青色)颜色,求坛友们指点迷津!
  • (defun c:test()
  • (prompt"\n===您即将检测单个图元是否超宽 ……")
  • (setvar "dimzin" 0)       
  • (prompt "\n<<框选图元:>>")
  • (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
  •   (progn
  •   (repeat (setq i (sslength ss))
  •     (setq i (1- i))
  •     (setq ent (ssname ss i))
  •     (setq dxf (entget ent))
  •     (setq ptb (mapcar 'cdr (vl-remove-if '(lambda(a)(/= (car a) 10)) dxf))) ;生成坐标值表
  •     (setq ptb (vl-sort ptb '(lambda(a b)
  •        (< (cadr a) (cadr b)))))
  •     (setq miny (cadr (car ptb)))
  •     (setq ptb (vl-sort ptb '(lambda(a b)
  •        (> (cadr a) (cadr b)))))
  •     (setq maxy (cadr (car ptb)))
  •     (setq widthy (abs(- maxy miny)))
  •     (print widthy)
  •                 (if (> widthy 1000)
  • (progn
  •                         (setq dxf(subst(cons 8 "0") (assoc 8 dxf) dxf))
  •                           (setq dxf(subst(cons 62 4) (assoc 62 dxf) dxf))     ;;;;;;;;运行结果为啥不是4号颜色???
  •                           (setq dxf(subst(cons 6 "ByLayer") (assoc 6 dxf) dxf))
  •                           (setq dxf(subst(cons 370 1) (assoc 370 dxf) dxf))
  •                           (entmod dxf)
  •                                                                                                  )
  • (progn
  •                         (setq dxf(subst(cons 8 "CUTME") (assoc 8 dxf) dxf))
  •                          (setq dxf(subst(cons 62 256) (assoc 62 dxf) dxf))
  •                          (setq dxf(subst(cons 6 "ByLayer") (assoc 6 dxf) dxf))
  •                          (setq dxf(subst(cons 370 1) (assoc 370 dxf) dxf))
  •                          (entmod dxf)
  •                                                                                                  )
  •                                              )
  •    )
  • )
  • )
  •         (princ))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-7-8 22:39:35 | 显示全部楼层
应该是颜色随层,那就没有62码了
 楼主| 发表于 2023-7-8 23:02:49 | 显示全部楼层
start4444 发表于 2023-7-8 22:39
应该是颜色随层,那就没有62码了

哦,明白了,谢谢!
发表于 2023-7-9 08:15:14 | 显示全部楼层
学到了,感谢分享
发表于 2023-7-9 09:18:02 | 显示全部楼层
  1. (defun c:tt ()
  2.   (defun p1p9 (s1 / p1 p9)
  3.     (vla-getboundingbox (vlax-ename->vla-object s1) 'p1 'p9)
  4.     (list (vlax-safearray->list p1) (vlax-safearray->list p9))
  5.   )
  6.   (princ "\n检测单个图元是否超宽…… ")
  7.   (princ "\n框选图元: ")
  8.   (setq i -1)
  9.   (if (setq ss (ssget '((0 . "*POLY*"))))
  10.     (while (setq s1 (ssname ss (setq i (1+ i))))
  11.       (setq ob (vlax-ename->vla-object s1))
  12.       (setq a (p1p9 s1))
  13.       (if (> (abs (- (cadar a) (cadadr a))) 1000)
  14.         (progn (vla-put-layer ob "0") (vla-put-color ob 4))
  15.         (progn (vla-put-layer ob "CUTME") (vla-put-color ob 256))
  16.       )
  17.     )
  18.   )
  19.   (princ)
  20. )
 楼主| 发表于 2023-7-9 12:08:51 | 显示全部楼层

你这个程序就有点高深了,一时半会消化不了,但是有个问题想请教一下:我用(command "layer" "n" "CUTME" "c" "1" "CUTME" "") 建立的CUTME图层,也设置了颜色是1号颜色,为什么结果却是BYLayer呢?这样的话就没有62码了,请赐教。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 22:48 , Processed in 0.192872 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表