明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1118|回复: 9

[提问] 求指导啊 !!!

[复制链接]
发表于 2013-5-3 15:16 | 显示全部楼层 |阅读模式
本帖最后由 fjutcivil 于 2014-4-20 11:17 编辑

..................

点评

请修改你的帖子标题,让标题更清晰一些  发表于 2013-6-5 17:49
发表于 2013-5-3 15:37 | 显示全部楼层
Z1 Z2 C等要注意字符串和数字的转换!
 楼主| 发表于 2013-6-5 16:30 | 显示全部楼层
好像还是不行啊 求优化啊 !
(defun c:dggj (/ a e1 e2 stext1 stext)
    (setq e1 (cdr (assoc 1 (entget (car(entsel"\n选择欲替换的文字内容"))))))
   
    (setq e2 (cdr (assoc 1 (entget (car(entsel"\n选择欲替换的文字内容"))))))
   

    (setq a1 (cdr (assoc 1 e2)))
    (setq z1 (substr a1 2 3))
    (setq z2 (substr a1 6 3))

    (atof a1)
    (atof z1)
    (atof z2)

   (if (> z1 15.8) (setq a 12) )
   (if (and (> z1 10) (<= z1 15.8)) (setq a 10) )
   (if (and (> z1 5.6) (<= z1 10)) (setq a 8) )
   (if (<= z1 5.6) (setq a 6) )
   (setq b (/ (* pi (* (/ a 2) (/ a 2))) 10))
   (setq c (/ (* b 20) z2))
   (setq d (substr c 1 3))
   (setq f (strcat "%%130" (itoa a) "@100/" d))
   (setq e1 (subst (cons 1 f) (assoc 1 e1) e1 ))
   (entmod e1)
   (setvar "cmdecho" 1)
)
发表于 2013-6-5 17:08 | 显示全部楼层
fjutcivil 发表于 2013-6-5 16:30
好像还是不行啊 求优化啊 !
(defun c:dggj (/ a e1 e2 stext1 stext)
    (setq e1 (cdr (assoc 1 (entg ...

(atof a1)返回实数a1,不过你没有接住,有什么用?
应该是:(setq a1 (atof a1)) ...
 楼主| 发表于 2013-6-5 17:12 | 显示全部楼层
ll_j 发表于 2013-6-5 17:08
(atof a1)返回实数a1,不过你没有接住,有什么用?
应该是:(setq a1 (atof a1)) ...

  (setq z1 (atof z1))
    (setq z2 (atof z2))  我把那两个改了 可是接下来的a老是不行 都是返回NIL
发表于 2013-6-5 22:10 | 显示全部楼层
fjutcivil 发表于 2013-6-5 17:12
(setq z1 (atof z1))
    (setq z2 (atof z2))  我把那两个改了 可是接下来的a老是不行 都是返回NIL

不知道你的程序是干什么用,e2、a1又是什么值,能不能substr,所以也没法检查。
发表于 2013-6-5 22:24 | 显示全部楼层
你一行行的检查下。返回的结果是否是你想要的的数值!
直接cad里面输入一行就可检查!估计你有几个变量算错了!
发表于 2013-6-5 22:39 | 显示全部楼层
不知道你要干什么,所以没法检验。按我自己的理解处理了一下,代码如下:
  1. (defun c:dggj (/ a e1 e2 stext1 stext)
  2.    (setvar "cmdecho" 0)
  3.    (setq e1 (entget (car(entsel"\n选择欲替换的文字内容"))))
  4.    (setq e2 (entget (car (nentsel "\选择计算值:"))))
  5.    (setq a1 (cdr (assoc 1 e1)))
  6.    (setq a2 (cdr (assoc 1 e2)))
  7.    (setq z1 (atof (substr a2 2 3)))
  8.    (setq z2 (atof (substr a2 6 3)))
  9.    (cond
  10.      ((> z1 15.8) (setq a 12))
  11.      ((> z1 10) (setq a 10))
  12.      ((> z1 5.6) (setq a 8))
  13.      (t (setq a 6))
  14.    )
  15.    (setq b (/ (* pi (* (/ a 2) (/ a 2))) 10))
  16.    (setq c (rtos (/ (* b 20) z2)))
  17.    (setq d (substr c 1 3))
  18.    (setq f (strcat "φ130" (itoa a) "@100/" d))
  19.    (setq e1 (subst (cons 1 f) (assoc 1 e1) e1 ))
  20.    (entmod e1)
  21.    (setvar "cmdecho" 1)
  22. )
  23. (prin1)
 楼主| 发表于 2013-6-6 10:04 | 显示全部楼层
本帖最后由 fjutcivil 于 2013-6-6 11:38 编辑
lengyunfeng 发表于 2013-6-5 22:39
不知道你要干什么,所以没法检验。按我自己的理解处理了一下,代码如下:


你的理解基本对了 E2是类似“G1.5-0.5”这样的字符 ,如果出现的d是100我希望显示的是..@100,而不是..@100/100,怎么弄啊 ?

(defun c:qwq (/ a e1 e2 stext1 stext)
   (setvar "cmdecho" 0)
   (setq e1 (entget (car(entsel"\n选择欲替换的文字内容"))))
   (setq e2 (entget (car (nentsel "\选择计算值:"))))
   (setq a1 (cdr (assoc 1 e1)))
   (setq a2 (cdr (assoc 1 e2)))
   (setq z1 (atof (substr a2 2 3)))
   (setq z2 (atof (substr a2 6 3)))
   (cond
     ((> z1 1.58) (setq a 12))
     ((> z1 1.0) (setq a 10))
     ((> z1 0.56) (setq a 8))
     (t (setq a 6))
   )
   (setq b (* pi (* (/ a 2) (/ a 2))))  
   (setq c  (/ (* b 2) z2))            
   (if (> c 200) (setq c 200) (setq c (* (fix (/ c 10)) 10)))
   (setq c (rtos c))
   (setq d (substr c 1 3))
   (if (= a 12) (setq f (strcat "%%132" (itoa a) "@100/" d))
   (setq f (strcat "%%130" (itoa a) "@100/" d)))
   (setq e1 (subst (cons 1 f) (assoc 1 e1) e1 ))
   (entmod e1)
   (setvar "cmdecho" 1)
)
(prin1)
发表于 2013-6-6 15:46 | 显示全部楼层
fjutcivil 发表于 2013-6-6 10:04
你的理解基本对了 E2是类似“G1.5-0.5”这样的字符 ,如果出现的d是100我希望显示的是..@100,而不是.. ...

简单啊,把我的代码里弟18行替换成if语句,如下:
  1. (if (= d “100”)
  2.     (setq f (strcat "φ130" (itoa a) "@100" ))
  3.     (setq f (strcat "φ130" (itoa a) "@100/" d))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 02:33 , Processed in 0.221513 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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