明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 791|回复: 6

[源码] 代码求测试,自己也不知道问题出在哪

[复制链接]
发表于 2015-9-2 19:30:59 来自手机 | 显示全部楼层 |阅读模式
;电脑没有网络就用手机上的论坛,不便上图,大家谅解下,此代码主要是判断圆的大小来补画3/4的圆弧!每次3D导图到2D里面后,用此命令可以选取到指定大小的圆,但是就是生成不了圆弧,老提示图圆错误,只有自己手动画的圆它才可以识别 画圆弧!很纠结!不知道是怎么回事,公司用的是中望cad,

(DEFUN C:v5()
(setq ss (ssget '( (0 . "CIRCLE")(-4 . "<OR")

(40 . 2.1) (40 . 2.6) (40 . 3.4) (40 . 3.375) (40 . 4.25) (40 . 5.125) (40 . 5.15)


(40 . 7.0) (40 . 8.75)

(-4 . "OR>") ) ))





(setq n 0)

(repeat (sslength ss)

(setq en   (ssname ss n)

       pt  (cdr (assoc 10(entget en)));取坐标值

       rr  (cdr (assoc 40(entget en)));取圆的半径

   )



(COND

  ((= rr 2.1)(setq r 2.5))

  ((= rr 2.6)(setq r 3.0))

  ((= rr 3.375)(setq r 4.0))

  ((= rr 3.4)(setq r 4.0))

  ((= rr 4.25)(setq r 5.0))

  ((= rr 5.125)(setq r 6.0))

  ((= rr 5.15)(setq r 6.0))

  ((= rr 7.0)(setq r 8.0))

  (progn

    (princ "\n选取的图元错误!!!")

    (quit)

    )

)

(entmake (list '(0 . "ARC") (cons 10 pt) (cons 40 r) '(50 . 4.71239) '(51 .


3.14159)))

(setq n(1+ n))

  )

(princ)

)
发表于 2015-9-2 20:36:18 | 显示全部楼层
您得先确认 ss 的返回值与期望之间是否完全吻合...
若是 那么可能得有 Dwg 来确认症结之所在
 楼主| 发表于 2015-9-2 22:20:53 来自手机 | 显示全部楼层
Andyhon 发表于 2015-9-2 20:36
您得先确认 ss 的返回值与期望之间是否完全吻合...
若是 那么可能得有 Dwg 来确认症结之所在

rr的值完全一样,有点搞不明白了
发表于 2015-9-2 23:11:49 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq ss (ssget '((0 . "circle")
  3.                     (-4 . "<or")
  4.                     (40 . 2.1)
  5.                     (40 . 2.6)
  6.                     (40 . 3.4)
  7.                     (40 . 3.375)
  8.                     (40 . 4.25)
  9.                     (40 . 5.125)
  10.                     (40 . 5.15)
  11.                     (40 . 7.0)
  12.                     (40 . 8.75)
  13.                     (-4 . "or>")
  14.                    )
  15.            )
  16.         n  -1
  17.   )
  18.   (repeat (sslength ss)
  19.     (setq s1 (ssname ss (setq n (1+ n)))
  20.           pt (cdr (assoc 10 (entget s1)))
  21.           rr (cdr (assoc 40 (entget s1))) ;取圆的半径
  22.           r  (cond ((= rr 2.1) 2.5)
  23.                    ((= rr 2.6) 3.0)
  24.                    ((= rr 3.375) 4.0)
  25.                    ((= rr 3.4) 4.0)
  26.                    ((= rr 4.25) 5.0)
  27.                    ((= rr 5.125) 6.0)
  28.                    ((= rr 5.15) 6.0)
  29.                    ((= rr 7.0) 8.0)
  30.                    ((= rr 8.75) 9.05)
  31.              )
  32.     )
  33.     (entmake (list '(0 . "arc")
  34.                    (cons 10 pt)
  35.                    (cons 40 r)
  36.                    '(50 . 4.71239)
  37.                    '(51 . 3.14159)
  38.              )
  39.     )
  40.   )
  41.   (princ)
  42. )
 楼主| 发表于 2015-9-6 12:47:04 | 显示全部楼层
xyp1964 发表于 2015-9-2 23:11

院长  不行耶!提示错误


附上图档帮忙测试一下

本帖子中包含更多资源

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

x
发表于 2015-9-6 14:25:29 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq n -1)
  3.   (if (setq ss (ssget '((0 . "circle")
  4.                         (-4 . "<or")
  5.                         (40 . 2.1)
  6.                         (40 . 2.6)
  7.                         (40 . 3.4)
  8.                         (40 . 3.375)
  9.                         (40 . 4.25)
  10.                         (40 . 5.125)
  11.                         (40 . 5.15)
  12.                         (40 . 7.0)
  13.                         (40 . 8.75)
  14.                         (-4 . "or>")
  15.                        )
  16.                )
  17.       )
  18.     (repeat (sslength ss)
  19.       (setq s1 (ssname ss (setq n (1+ n)))
  20.             pt (cdr (assoc 10 (entget s1)))
  21.             rr (cdr (assoc 40 (entget s1)))
  22.             r  (cond ((equal rr 2.1 1e-3) 2.5)
  23.                      ((equal rr 2.6 1e-3) 3.0)
  24.                      ((equal rr 3.375 1e-3) 4.0)
  25.                      ((equal rr 3.4 1e-3) 4.0)
  26.                      ((equal rr 4.25 1e-3) 5.0)
  27.                      ((equal rr 5.125 1e-3) 6.0)
  28.                      ((equal rr 5.15 1e-3) 6.0)
  29.                      ((equal rr 7.0 1e-3) 8.0)
  30.                      ((equal rr 8.75 1e-3) 9.05)
  31.                )
  32.       )
  33.       (entmake (list '(0 . "arc")
  34.                      (cons 10 pt)
  35.                      (cons 40 r)
  36.                      '(50 . 4.71239)
  37.                      '(51 . 3.14159)
  38.                )
  39.       )
  40.     )
  41.   )
  42.   (princ)
  43. )
发表于 2015-9-6 21:37:42 | 显示全部楼层
选圆生成螺纹孔?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 16:13 , Processed in 0.174062 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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