明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2104|回复: 10

如何批量的把坐标值赋值给该程序并生成表格

[复制链接]
发表于 2012-11-19 11:24 | 显示全部楼层 |阅读模式
不知该如何更改该程序,想把pl线上的坐标值赋值给该程序并生成表格,而不是由程序中的单点生成表格
(defun c:zb ()
    ;;命令回显
    (setvar "CMDECHO" 0)
    (command "undo" "be")
    ;;捕捉设置   
    (setq osmode_old (getvar "OSMODE"))
    ;;参数设置
    (if        (= 内框颜色 nil)
        (setq 内框颜色 1
              文字颜色 2
              外框颜色 3
              坐标精度 3
              表格_高度        6
              表格_宽度1
                 16
              表格_宽度2
                 10
              表格_宽度3
                 25
              表头字高 2.5
              表中字高 2.0
        )
    )


    ;;绘制表头
    (initget "G g")
    (setq pt0 (getpoint "n请指定表格绘制位置,或者 [改变参数(G)]:"))
    (if        (or (= pt0 "G") (= pt0 "g"))
        (progn
            (sz)
            (setq pt0 (getpoint "n请指定表格绘制位置:"))
        )
    )
    (setq pt0_x        (car pt0)
          pt0_y        (cadr pt0)
    )
    (SETQ PT1        (polar PT0 0 表格_宽度1)
          PT3        (polar PT1 0 表格_宽度2)
          PT5        (polar PT3 0 表格_宽度3)
          PT7        (polar PT5 0 表格_宽度3)
          PT701        (polar PT7 0 表格_宽度3)
          PT2        (polar PT1 (* -0.5 PI) 表格_高度)
          PT4        (polar PT3 (* -0.5 PI) 表格_高度)
          PT6        (polar PT5 (* -0.5 PI) 表格_高度)
          PT8        (polar PT7 (* -0.5 PI) 表格_高度)
          PT801        (polar PT701 (* -0.5 PI) 表格_高度)
          PT9        (polar PT0 (* -0.5 PI) 表格_高度)
    )
    (COMMAND "color" 内框颜色)
    (COMMAND "PLINE" PT0 PT701 PT801 PT9 PT0 "")
    (COMMAND "PLINE" PT1 PT2 PT4 PT3 PT4 PT6 PT5 PT6 PT8 PT7 pt8 pt801
             pt701 "")
    (SETQ ZBS1 (entlast))
    (SETQ PT10 (polar PT0 (* -0.5 PI) (/ 表格_高度 2.0))
          PT10 (polar PT10 0 (/ 表格_宽度1 2.0))
    )
    (SETQ PT11 (polar PT10 0 (/ (+ 表格_宽度1 表格_宽度2) 2.0))
          PT12 (polar PT11 0 (/ (+ 表格_宽度2 表格_宽度3) 2.0))
          PT13 (polar PT12 0 表格_宽度3)
          PT14 (polar PT13 0 表格_宽度3)
    )
    (COMMAND "color" 文字颜色)
    (COMMAND "TEXT" "J" "MC" PT10 表头字高 0.0 "编  号")
    (COMMAND "TEXT" "J" "MC" PT11 表头字高 0.0 "点号")
    (COMMAND "TEXT" "J" "MC" PT12 表头字高 0.0 "坐 标(X)")
    (COMMAND "TEXT" "J" "MC" PT13 表头字高 0.0 "坐 标(Y)")
    (COMMAND "TEXT" "J" "MC" PT14 表头字高 0.0 "坐 标(Z)")
    ;;表头绘制完毕
    ;;下面点取待测点
    (SETQ I 1)
    (setvar "OSMODE" osmode_old)
    (WHILE (/= nil
               (SETQ PTI
                        (GETPOINT (strcat "n请指定要测量位置<第" (itoa i) "次>:")
                        )
               )
           )
        (setq osmode_old (getvar "OSMODE")) ;设置捕捉模式
        (setvar "OSMODE" 0)
        (COMMAND "COPY" ZBS1 "" pt0 pt9)
        (SETQ ZBS1  (entlast)
              pt11  (polar PT11 (* -0.5 PI) 表格_高度)
              pt12  (polar PT12 (* -0.5 PI) 表格_高度)
              pt13  (polar PT13 (* -0.5 PI) 表格_高度)
              pt14  (polar PT14 (* -0.5 PI) 表格_高度)
              pti_x (rtos (car PTI) 2 坐标精度)
              pti_y (rtos (cadr PTI) 2 坐标精度)
              pti_z (rtos (caddr PTI) 2 坐标精度)
        )
        (princ (strcat "X=" pti_y "  Y=" pti_x "  Z=" pti_z))
        (COMMAND "TEXT"
                 "J"
                 "MC"
                 PT11
                 表中字高
                 0.0
                 (strcat (itoa i) "#")
        )
        (COMMAND "TEXT" "J" "MC" PT12 表中字高 0.0 pti_x)
        (COMMAND "TEXT" "J" "MC" PT13 表中字高 0.0 pti_y)
        (COMMAND "TEXT" "J" "MC" PT14 表中字高 0.0 pti_z)
        (setq i (+ i 1))
        (setvar "OSMODE" osmode_old)
    )

    ;;如果记录有坐标数据,就绘制外边框
    (if        (> i 1)
        (progn
            (setq osmode_old (getvar "OSMODE")) ;设置捕捉模式
            (setvar "OSMODE" 0)
            ;;绘制外框
            (SETQ PT701 (polar PT701 (* -0.5 PI) (* 表格_高度 I)))
            (COMMAND "color" 外框颜色)
            (COMMAND "rectang" "W" 0.2 PT0 PT701)
            ;;编号信息
            (setq xxx nil
                  xxx (getstring T "n请输入编号信息: ")
            )
            (if        (= xxx "")
                (setq xxx "请写编号信息")
            )
            (setq pt9 (polar PT9 (* -0.5 PI) (* 表格_高度 (- I 1) 0.5))
                  pt9 (polar PT9 0 (/ 表格_宽度1 2.0))
            )
            (COMMAND "TEXT" "J" "MC" PT9 表中字高 0.0 xxx)
            (princ (strcat "n操作已完成,共收集到"
                           (itoa (- i 1))
                           "个坐标点。"
                   )
            )
        )
        (princ "n操作已完成,没有收集到坐标点!!")
    )

    ;;退出处理
    (command "undo" "e")
    (if        (= i 1)
        (command "undo" 1)
    )
)
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2012-11-19 16:24 | 显示全部楼层
希望有高人提示一下
发表于 2012-11-19 16:30 | 显示全部楼层
是不是不想手工一个一个去点,面是想批量输出线上点的坐标?
 楼主| 发表于 2012-11-19 16:46 | 显示全部楼层
是这个意思,希望有高人指点
发表于 2012-11-19 20:57 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2012-11-20 09:45 编辑

游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2012-11-19 21:28 | 显示全部楼层
不行,运行时没坐标,
命令: ZB
请指定表格绘制位置,或者 [改变参数(G)]:
选择复线 :
选择对象:
请输入编号信息: 1l
操作已完成,共收集到0个坐标点。
 楼主| 发表于 2012-11-19 22:39 | 显示全部楼层
本帖最后由 tianyuan 于 2012-11-19 23:12 编辑

如果把编号信息部分去掉,则命令行提示:命令: ZB
请指定表格绘制位置,或者 [改变参数(G)]:
选择复线 :
选择对象:
操作已完成,共收集到0个坐标点。


坐标收集总是出现问题
 楼主| 发表于 2012-11-19 22:50 | 显示全部楼层
(setq ss (ssget ":E:S" '((0 . "LWPOLYLINE"))))中":E:S"是什么意思?
发表于 2012-11-20 09:46 | 显示全部楼层
5楼已改
发表于 2012-12-2 18:17 | 显示全部楼层
看看这个程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 11:09 , Processed in 0.252268 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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