明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1909|回复: 13

求助!!!修改一下代码

  [复制链接]
发表于 2012-11-9 07:43:07 | 显示全部楼层 |阅读模式
大家早上好!
大早上起来就有求于大家,嘿嘿~
下面的代码是把圆放到孔层内,可是我想设定一下条件
比如说:孔直径小于等于50mm的情况 归入到 孔1层
             孔直径大于50mm的时候归入到 孔2层
            希望可以再命令条输入条件
希望大家能帮忙完善一下,小弟在这里不胜感激~

;;;由 尺寸线归为DIM层 改写为 圆化层归为孔层
(defun c:cc (/ ss)
(command "layer" "make" "cc" "Color" 3 "" "")
(setq ss (ssget "X" '((0 . "CIRCLE"))))
(command "Chprop" ss "" "layer" "cc" "")
)
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2012-11-9 08:09:01 | 显示全部楼层
小弟在线等啊,嘿嘿~
发表于 2012-11-9 08:31:38 | 显示全部楼层
;;;圆半径小于等于25时,选取
         (setq ss (ssget "X" '((0 . "CIRCLE")
                               (-4 . "<=")     ;;;圆半径小于等于25时,选取
                               (40 . 25)
                              )
                  )
         )


;;;圆半径大于25时,选取
         (setq ss (ssget "X" '((0 . "CIRCLE")
                               (-4 . ">")     ;;;圆半径大于25时,选取
                               (40 . 25)
                              )
                  )
         )
发表于 2012-11-9 08:46:46 | 显示全部楼层
本帖最后由 Andyhon 于 2012-11-9 08:50 编辑

(defun c:cc (/ ss)
   ;; (command "layer" "make" "cc" "Color" 3 "" "")
   ;; (setq ss (ssget "X" '((0 . "CIRCLE"))))     ; Auto
   (setq ss (ssget '((0 . "CIRCLE"))))

   (if (setq ss50+ (ssget "P" '((-4 . ">") (40 . 25))))
     (command "Chprop" ss50+ "" "layer" "02" "")
   )
   (command "Select" ss "")
   (if (setq ss50 (ssget "P" '((-4 . "<=") (40 . 25))))
     (command "Chprop" ss50 "" "layer" "01" "")
   )
)
 楼主| 发表于 2012-11-9 08:46:51 | 显示全部楼层
yoyoho 发表于 2012-11-9 08:31
;;;圆半径小于等于25时,选取
         (setq ss (ssget "X" '((0 . "CIRCLE")
                          ...

yoyoho 你好
谢谢您的回答,能否帮忙把上面的程序 整体合并一下,做一个完整的
谢谢了~
 楼主| 发表于 2012-11-9 09:12:30 | 显示全部楼层
Andyhon 发表于 2012-11-9 08:46
(defun c:cc (/ ss)
   ;; (command "layer" "make" "cc" "Color" 3 "" "")
   ;; (setq ss (ssget "X" ' ...

论坛长老 嘿嘿
您的代码达到了我的目的,再次谢谢
 楼主| 发表于 2012-11-9 09:13:04 | 显示全部楼层
yoyoho 发表于 2012-11-9 08:31
;;;圆半径小于等于25时,选取
         (setq ss (ssget "X" '((0 . "CIRCLE")
                          ...

小弟通过您的代码已经成功搞定了,谢谢
 楼主| 发表于 2012-11-9 10:34:07 | 显示全部楼层
Andyhon 发表于 2012-11-9 08:46
(defun c:cc (/ ss)
   ;; (command "layer" "make" "cc" "Color" 3 "" "")
   ;; (setq ss (ssget "X" ' ...

嘿嘿~长老,您好
小弟还有一事相求,通过这个代码
能否实现闭合多义线 归层呢
比如:闭合线内面积小于50mm   归在01层
                  大于50mm   归在02层
再次请长老出手相救
发表于 2012-11-9 10:49:30 | 显示全部楼层
本帖最后由 Andyhon 于 2012-11-9 12:57 编辑

(vl-load-com)
(defun c:cc (/ ss)
   ;; (command "layer" "make" "cc" "Color" 3 "" "")
   (setq ss (ssget '((0 . "LWpolyline") (70 . 1)))
         nn (sslength ss)
        A50 (ssadd)
       A50+ (ssadd)
   )
   (while (setq ee (ssname ss (setq nn (1- nn))))
     ;;(setq Am (vla-get-area (vlax-ename->vla-object ee))
     (if (> (vla-get-area (vlax-ename->vla-object ee)) 50)
       (ssadd ee A50+)
       (ssadd ee A50)
   ) )   
   
   (if  (> (sslength A50) 0)
     (command "Chprop" A50 "" "layer" "01" "")
   )
   (if (> (sslength A50+) 0)
     (command "Chprop" A50+ "" "layer" "02" "")
   )
)
 楼主| 发表于 2012-11-9 12:03:57 | 显示全部楼层
本帖最后由 yaokui25 于 2012-11-9 12:23 编辑
Andyhon 发表于 2012-11-9 10:49
(vl-load-com)
(defun c:cc (/ ss)
   ;; (command "layer" "make" "cc" "Color" 3 "" "")


在这里非常感谢您和明镜论坛
我知道,我提的要求有点多,有些过分了。
您应该也很忙,希望您能在百忙之中再给小弟看看,实在很需这个,谢谢了
下面是经过仔细考虑之后的想法

1,上面代码好像不能结束,面积小于50mm的可以放到01层,可是02层好像没反应(就是说在不满足上述条件时,命令好像不能结束 比如 在没有大于50mm或者没有小于50mm的情况),并且上面的代码面积是0的线也包含在内了
希望长老能在帮小弟看看

2,长老能不能在帮帮小弟一个忙,比如说 40mm< 面积 >50mm 归入01层
范围外图层不变

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 01:22 , Processed in 0.211125 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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