明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1347|回复: 9

[提问] 遇到鬼了,这个程序怎么运行不了,各位大大帮我审一下呢

[复制链接]
发表于 2013-12-30 20:46:17 | 显示全部楼层 |阅读模式
老是提示
命令: qaz
未知命令“QAZ”。按 F1 查看帮助。

        ;wxq 2013 12 29
;批量选择横断面,提取各断面地面高程 工作图形为公路横断面图

(defun  c:qaz ()
  (alert "选择要出数据的横断面图元")
  (setq sss (ssget '((0 . "TEXT") (8 . "shuju")))) ;框选所有横断面桩号
  (vl-load-com)
  (setq        i 0
        biao nil
        jl 2
        j 1
        TW nil
        zbb nil
        ss1 nil
        zh nil
        sstwg nil

  )                                        ;jl为框选半径
  (repeat (sslength sss)
    (setq name (ssname sss i))
    (setq text (cdr (assoc 1 (entget name))))
    (if        (vl-string-position (ascii "K") text)
      (setq biao (append (list name) biao))
    )
    (setq i (1+ i))
  )
  (princ (strcat "/n共有横断面" (itoa (length biao)) "个"))


  (princ)

                                        ;----------------------------------------------------------------------------------------------
  (foreach name        biao                        ;程序遍历每个横断面

    (setq zh (cdr (assoc 1 (entget name)))) ;本横断面桩号
    (setq pt (cdr (assoc 11 (entget name)))) ;取桩号文字处的坐标

                                        ;找本桩横断面的多线(地面线)。
    (while j
      (setq pt1 (list (- (car pt) jl) (- (cadr pt) jl) 0))
      (setq pt2 (list (+ (car pt) jl) (+ (cadr pt) jl) 0))


      (setq ss1 (ssget "C" pt1 pt2 '((0 . "POLYLINE") (8 . "dmx"))))
                                        ;选择各个地面高程多段线
      (if (= (sslength ss1) 1)

        (setq j nil)                        ;跳出循环

        (setq jl (1+ jl))                ;扩大寻找范围
      )

    )

    (princ
      yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    )
                                        ;找到每个横断面的设计高程填挖高。
    (setq j   1
          jl  1.75
          jly 4.4
    )

    (setq pt1 (list (- (car pt) jl) (- (cadr pt) jly) 0))
    (setq pt2 (list (+ (car pt) jl) (+ (cadr pt) jly) 0))

    (setq sstwg (ssget "C" pt1 pt2 '((0 . "TEXT") (8 . "shuju"))))
                                        ;选择填挖高文字
    (setq i 0)
    (repeat (sslength sstwg)
      (setq name1 (ssname sstwg i))
      (setq text (cdr (assoc 1 (entget name1))))
      (if (vl-string-position (ascii "Wz=") text)
                                        ;如果字符串中含有Wz字样,锁定为填挖高字符。
        (setq tw text)
      )
      (setq i (1+ i))
    )


    (if        (/= nil (vl-string-search "Ht" tw))
      (setq WT -1)
      (setq wt 1)
    )                                        ;判断是填还是挖
    (setq zcd (strlen tw))                ;求字串长度
    (setq cd (vl-string-search " Wz=" tw)) ;求Wz字样的起始长度位置
    (setq tw (substr tw 4 (- cd 3))

          (setq
            zbb        (vlax-get (vlax-ename->vla-object (ssname ss1 0))
                          "coordinates"
                )
          )                                ;获取多线顶点坐标表
           (setq ddgs (length zbb))



    )

                                        ;输出文件

    (setq file_id (open "e:/设计图纸原地面数据.txt" "a"))
    (setq xrz (list zh tw ddgs))
    (print xrz file_id)
  )
                                        ;----------------------------------------------------------------------------------------
  (princ)
)

发表于 2013-12-30 21:42:42 | 显示全部楼层
  1. ;wxq 2013 12 29
  2. ;批量选择横断面,提取各断面地面高程 工作图形为公路横断面图

  3. (defun  c:qaz (/ BIAO CD DDGS FILE_ID I J JL JLY NAME NAME1 PT PT1 PT2 SS1 SSS SSTWG TEXT TW WT XRZ  ZBB ZCD ZH)
  4.   (alert "选择要出数据的横断面图元")
  5.   (setq sss (ssget '((0 . "TEXT") (8 . "shuju")))) ;框选所有横断面桩号
  6.   (vl-load-com)
  7.   (setq i 0
  8.         biao nil
  9.         jl 2
  10.         j 1
  11.         TW nil
  12.         zbb nil
  13.         ss1 nil
  14.         zh nil
  15.         sstwg nil
  16.   )                                        ;jl为框选半径
  17.   (repeat (sslength sss)
  18.     (setq name (ssname sss i))
  19.     (setq text (cdr (assoc 1 (entget name))))
  20.     (if        (vl-string-position (ascii "K") text)
  21.       (setq biao (append (list name) biao))
  22.     )
  23.     (setq i (1+ i))
  24.   )
  25.   (princ (strcat "\n共有横断面" (itoa (length biao)) "个"))
  26.   (princ)                                        ;----------------------------------------------------------------------------------------------
  27.   (foreach name        biao                        ;程序遍历每个横断面
  28.     (setq zh (cdr (assoc 1 (entget name)))) ;本横断面桩号
  29.     (setq pt (cdr (assoc 11 (entget name)))) ;取桩号文字处的坐标
  30.                                         ;找本桩横断面的多线(地面线)。
  31.     (while j
  32.       (setq pt1 (list (- (car pt) jl) (- (cadr pt) jl) 0))
  33.       (setq pt2 (list (+ (car pt) jl) (+ (cadr pt) jl) 0))
  34.       (setq ss1 (ssget "C" pt1 pt2 '((0 . "POLYLINE") (8 . "dmx"))))
  35.                                         ;选择各个地面高程多段线
  36.       (if (= (sslength ss1) 1)
  37.         (setq j nil)                        ;跳出循环
  38.         (setq jl (1+ jl))                ;扩大寻找范围
  39.       )
  40.     )
  41.     (princ);找到每个横断面的设计高程填挖高。
  42.     (setq j   1
  43.           jl  1.75
  44.           jly 4.4
  45.     )
  46.     (setq pt1 (list (- (car pt) jl) (- (cadr pt) jly) 0))
  47.     (setq pt2 (list (+ (car pt) jl) (+ (cadr pt) jly) 0))
  48.     (setq sstwg (ssget "C" pt1 pt2 '((0 . "TEXT") (8 . "shuju"))))  ;选择填挖高文字
  49.     (setq i 0)
  50.     (repeat (sslength sstwg)
  51.       (setq name1 (ssname sstwg i))
  52.       (setq text (cdr (assoc 1 (entget name1))))
  53.       (if (vl-string-position (ascii "Wz=") text);如果字符串中含有Wz字样,锁定为填挖高字符。
  54.         (setq tw text)
  55.       )
  56.       (setq i (1+ i))
  57.     )
  58.     (if        (/= nil (vl-string-search "Ht" tw))
  59.       (setq WT -1)
  60.       (setq wt 1)
  61.     )                                        ;判断是填还是挖
  62.     (setq zcd (strlen tw))                ;求字串长度
  63.     (setq cd (vl-string-search " Wz=" tw)) ;求Wz字样的起始长度位置
  64.     (setq tw (substr tw 4 (- cd 3)))
  65.           (setq zbb (vlax-get (vlax-ename->vla-object (ssname ss1 0)) "coordinates" ));获取多线顶点坐标表
  66.            (setq ddgs (length zbb)) ;输出文件
  67.     (setq file_id (open "e:/设计图纸原地面数据.txt" "a"))
  68.     (setq xrz (list zh tw ddgs))
  69.     (print xrz file_id)
  70.   );----------------------------------------------------------------------------------------
  71.   (princ)
  72. )
 楼主| 发表于 2013-12-30 22:53:37 | 显示全部楼层
edata 发表于 2013-12-30 21:42

弱弱的问句,这种回复表示这个代码已帮我改好了吗?怎么我复制到自带编辑器,代码变成一行了呢?都不换行?并且好像还是不能执行呢。。。。。
命令: QAZ
未知命令“QAZ”。按 F1 查看帮助。
发表于 2013-12-30 23:04:23 | 显示全部楼层
wangzezhige 发表于 2013-12-30 22:53
弱弱的问句,这种回复表示这个代码已帮我改好了吗?怎么我复制到自带编辑器,代码变成一行了呢?都不换行 ...

你不要直接点复制代码那个按钮,不然就变成一行。你可以点普通浏览再点普通浏览的复制代码,
或者直接拖动我回帖的代码Ctrl+C复制。
发表于 2013-12-30 23:05:36 | 显示全部楼层
因为没有测试文件,只是代码通过验证,其他错误暂时没看。。。
 楼主| 发表于 2013-12-30 23:11:54 | 显示全部楼层
十分感谢edata老师,我再弄一下,我是新手哈,十分感谢 !!!
 楼主| 发表于 2013-12-30 23:32:08 | 显示全部楼层
还是弄不好呀,复制进去,不是空的地方变成问号,就是只有一行呢
 楼主| 发表于 2013-12-30 23:34:33 | 显示全部楼层
我上传一下工作的文件

本帖子中包含更多资源

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

x
发表于 2013-12-31 18:32:54 | 显示全部楼层
初步使用了下,你的程序算法上有些问题,待修改。。。
发表于 2015-7-29 16:47:31 | 显示全部楼层
《设计图纸原地面数据》是从横断面图上来的么?
原地面数据不是从地形图上读取?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 18:45 , Processed in 0.169539 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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