明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1489|回复: 7

[源码] 查斜线程序的缺陷改进

[复制链接]
发表于 2013-12-9 08:26 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 s678z 于 2013-12-9 08:27 编辑

画图时稍不当心会把正交线画得稍微斜一点点,肉眼看不清楚,标注尺寸时会发觉出现小数点,下面的程序可以查斜线,但有部分正交线也被当成斜线打成红色,请高手帮忙再改进,附件是测试用图纸。
(defun c:bias()
   (setq ss_first (ssget "X" '((0 . "line"))))
   
   (setq n 0)
   (setq ss_kill (ssadd))
   (while (< n (sslength ss_first))
      (setq en (ssname ss_first n))
      (setq en_data (entget en))
      (setq pt_st (cdr (assoc 10 en_data)))
      (setq pt_en (cdr (assoc 11 en_data)))
      (setq ang (/ (* 180 (angle pt_st pt_en)) pi))
    (if (and (/= ang 0) (equal ang 0 0.3))
       (ssadd en ss_kill)
        )
    (if (and (/= ang 90) (equal ang 90 0.3))
       (ssadd en ss_kill)
        )
     (if (and (/= ang 180) (equal ang 180 0.3))
       (ssadd en ss_kill)
        )
    (if (and (/= ang 270) (equal ang 270 0.3))
       (ssadd en ss_kill)
        )
     (if (and (/= ang 360) (equal ang 360 0.3))
       (ssadd en ss_kill)
        )
      (setq n (1+ n))
   
   )
   (if ss_kill
    (progn
      (command "_.chprop" ss_kill "" "c" 1 "")
      (princ (strcat "\n------------- 有\t" (itoa (sslength ss_kill)) "  条斜线。"))
     )
     (princ "\n没有斜线!")
    )
)

附件: 您需要 登录 才可以下载或查看,没有账号?注册
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-12-9 09:18 | 显示全部楼层
本帖最后由 菜卷鱼 于 2013-12-10 09:28 编辑

  1. (defun c:bias()  
  2.    (setq ss_first (ssget "X" '((0 . "line"))))
  3.    (setq n 0)
  4.    (setq ss_kill (ssadd))
  5. (while (< n (sslength ss_first))
  6.       (setq en (ssname ss_first n))
  7.       (setq en_data (entget en))
  8.       (setq pt_st (cdr (assoc 10 en_data)))
  9.       (setq x1 (car pt_st) y1 (cadr pt_st))
  10.       (setq pt_en (cdr (assoc 11 en_data)))
  11.       (setq x2 (car pt_en) y2 (cadr pt_en))
  12. (if
  13. (or (= "0" (rtos (- y2 y1)) ) (= "0" (rtos (- x2 x1)) ) )
  14. (setq n (1+ n))
  15. (progn (ssadd en ss_kill)(setq n (1+ n))
  16. ))
  17. )
  18.    (if (/= 0 (sslength ss_kill))
  19.     (progn
  20.       (setvar "cmdecho" 0)
  21.       (command "_.chprop" ss_kill "" "c" 1 "")
  22.       (setvar "cmdecho" 1)
  23.       (mapcar  'princ (list "\n------------- 有\t" (sslength ss_kill) "  条斜线。"))
  24.      )
  25.      (alert "\n没有斜线!")
  26.     )
  27. (prin1)
  28. )

评分

参与人数 1明经币 +1 收起 理由
s678z + 1

查看全部评分

回复

使用道具 举报

发表于 2013-12-11 10:57 | 显示全部楼层
本帖最后由 菜卷鱼 于 2013-12-11 11:00 编辑

这下应该解决了吧

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
s678z + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-12-16 08:10 | 显示全部楼层
菜卷鱼 发表于 2013-12-11 10:57
这下应该解决了吧


改进后查斜线程序检查的dwg图纸见附件,图中部分斜线没显示,但直线已经没有被误为斜线,这已经改进了,另外,查出的斜线能否另外建个图层,以便和正常的线条颜色区别开来,感谢网友的帮忙。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-12-16 08:44 | 显示全部楼层
单独设置图层的话就把 (command "_.chprop" ss_kill "" "c" 3 "")  改成  (command "_.chprop" ss_kill "" "c" 3 "LA" "斜线的图层" ""),
部分斜线没显示出来就是斜线的角度超过了0.3,你就把(/ pi 600)中的 600改小一点,(/ pi 600)就是0.3°,就是把0.3改大一点
回复

使用道具 举报

发表于 2013-12-16 09:33 | 显示全部楼层
菜卷鱼 发表于 2013-12-16 08:44
单独设置图层的话就把 (command "_.chprop" ss_kill "" "c" 3 "")  改成  (command "_.chprop" ss_kill ""  ...

能不能支持多义线呀。。那要怎样修改呢?
回复

使用道具 举报

发表于 2013-12-16 11:24 | 显示全部楼层
chenming10 发表于 2013-12-16 09:33
能不能支持多义线呀。。那要怎样修改呢?

我也是菜鸟,多义线的话要找高手,是我自己的话我会把多义线炸开
回复

使用道具 举报

 楼主| 发表于 2013-12-17 10:26 | 显示全部楼层
菜卷鱼 发表于 2013-12-16 08:44
单独设置图层的话就把 (command "_.chprop" ss_kill "" "c" 3 "")  改成  (command "_.chprop" ss_kill ""  ...

查斜线程序已好用,这个问题你看看有无办法http://bbs.mjtd.com/thread-108134-1-1.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 00:55 , Processed in 0.294410 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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