明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1876|回复: 2

[提问] [求助]自动提取点坐标

[复制链接]
发表于 2014-4-6 13:41:44 | 显示全部楼层 |阅读模式
程序在要求输入新半径后出现未知命令,该怎么处理!

(defun c:Tzb ()
    (command "osnap" "off" "")             ;取消捕捉
    (command "layer" "m" "圆" "c" 6 "" ""); 建立"圆"层
    (command "layer" "m" "坐标" "c" 5 "" ""); 建立"坐标"层
    (command "layer" "m" "点号" "c" 4 "" ""); 建立"点号"层

    (setq dat_file (getfiled "选择坐标文件" "txt" ""2))
    (setq ff (open dat_file "a"))
    (setq new_rad (getreal "输入新半径:"))
    (setq new_la "圆")                       ;输入新图层
    (setq h (/new_rad 5))                  ;字高

    (prompt "\n<<框选或点欲拾取的圆>>")
    (setq ss (ssget))
    (setq     n 0
          k 0
    )

    (repeat (sslength ss)             ;计算选择个数确定循环次数
    (setq en (ssname ss n))        ;取出图元名
    (setq endata (entget en))     ;取出对象名称数据列表
    (setq entype (cdr (assoc 0 endata))) ;取出图元名第二位数值
    (if  (=entype "CIRCLE")             ;如果是圆就进入子程序
         (sub_upd_rad)
         )
         (setq n (1+n))                        ;记录进入子程序数量
    )
    (alert (strcat "提取了" (itoa k) "  个圆心坐标且半径被更新! "))
    (prin 1)
)
(defun sub_upd_rad ()

    (setq 40_list (assoc 40 endata))  ;取出圆半径
    (setq 8_list (assoc 8 endata))      ;取出圆层
    (setq 10_list (assoc 10 endata))   ;取出圆心坐标
    (setq new_40_list (cons 40 new_rad))     ;组成新的半径列表
    (setq new_8_list (cons 8 new_la))      ;组成新的图层列表
    (setq endata (subst new_40_list 40_list endata))     ;用新的半径替换旧半径
    (entmod endata)                          ;更新(半径)
    (setq endata (subst new_8_list 8_list endata))     ;用新的图层替换旧图层
    (entmod endata)                        ;更新(图层)
    (setq k (1+k))                              ;记录圆数量
    (setq
         x           (nth 1 10_list)
         y           (nth 2 10_list)
         z           (nth 3 10_list)
         xyz       (list x y z)
         kyxz (strcat (itoa k)
                   ","
                  (rtos y 2 3)
                  ","
                  (rtos x 2 3)
                  ","
                  (rtos z 2 3)
                  ","
)
        k (itoa k)
        xyyz (list (+ x (* h (strlen k))) (+ y (* h 1.3))
z)
        xyzz (list (+ x (* h (strlen k))) y z)
        xz     (list (+ x (* h (strlen k))) (- y (* h 1.3))
z)
        k (atoi k )
    )

    (write-line kyxz ff)
    (setq    a (strcat "Y=" (rtos x 2 3))
         b (strcat "X=" (rtos y 2 3))
         c (strcat "X=" (rtos z 2 3))
    )
    (setq     bac (strcat "    "b","a","c)
    )

    (command "clayer" "点号" "")
    (command "text" xyz h 0 k)
    (command "clayer" "坐标" "")
    (command "text" xyyz h 0 b)
    (command "text" zyzz h 0 a)
    (command "text" xz h 0 c)


)
(prompt "以完成提取圆心坐标并更新圆半径")
(prin1)




该贴已经同步到 惑铜的微博
 楼主| 发表于 2014-4-6 13:48:02 | 显示全部楼层
求助各位大神!
发表于 2014-4-6 14:23:47 | 显示全部楼层
檢查command中多的""
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 01:59 , Processed in 0.191946 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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