明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 851|回复: 3

[提问] 求助高手老师给看看程序的错误在那里

[复制链接]
发表于 2015-7-30 21:52:00 | 显示全部楼层 |阅读模式
;;检查高程匹配
(defun c:jcgc()
(command "osnap" "off")
(command "layer" "th" "*" "unlock" "*" "")
(command "layer" "m" "gcd" "on" "*" "" )
(command "layer" "S" "0" "")
(setq file1 (getvar "DWGNAME"))
(setq dir1 (getvar "DWGPREFIX"))
(setq XH (strcase (substr file1 1 (- (strlen file1) 4))))
(SETQ FILEN (STRCAT DIR1 XH ".检查高程"))
(setq wj1 (open FILEN "a"))
(setq rks 0)
(write-line " -------------------------------------------------------------" wj1)
(setq zbzf (strcat "检查图幅名:" XH "检查时间" ))
(write-line "" wj1)
(setq zbzf (strca " ----- " "高程匹配检查" "----- " ))
(write-line zbzf wj1)
(write-line "" wj1)
(close wj1)
(setq wj1 (open FILEN "a"))
(setq sss (ssget "x" (LIST (cons 8 "gcd")(cons 0 "INSERT")(cons 2 "gC200"))))
(setq i 0)
(if sss
(while (< i (sslength sss))
;;z
(setq ents (ssname sss i))
(setq en (entget ents))
(setq P1 (cdr (assoc 10 en)) )
(setq cen (cdr (assoc 8 en)) )
(setq px (nth 0 p1))
(setq py (nth 1 p1))
(setq ph (nth 2 p1))
(rk)
(setq i (+ i 1))))
(setq a (itoa rks) )
(If(= cen cen1)
(setq a1 (strcat ",本幅图找到不匹配高程个数:" a "个" ) ))
(If(/= cen cen1)
(setq a1 "高程层次错误。按ESC键盘退出..." ))
(write-line "" wj1)
(print a1)
(close wj1)
(print "检查完事")
(princ))

(defun rk()
(setq pz 0)
(setq p1 (list px py))
(command "zoom" "c" p1 (* 40 1.000))
(setq x (* 11 1.000))
(setq y (* 5 1.000))
(setq pa (list (- px x) (- py y)))
(setq pB (list (+ px x) (+ py y)))
(setq ssa nil)
(setq hha "0")
(setq ssa (ssget "w" PA PB (LIST (cons 0 "TEXT")(cons 8 cen)) )))
(setq j 0)
(SETQ GC 0)
(setq dist 6000)
(SETQ h2 nil)
(SETQ h1 nil)
(if(= ssa nil )
(progn
(command "zoom" "c" p1 (* 40 0.5))
(command "circle" p1 (* 2 0.5))
(setq yy1 (strcat "\n未找到高程注记,请检查高程层次是否为gcd,确认后再选择高程&lt;" hha "&gt;: "))
(setq oBJ (car (entsel yy1)))
(IF(/= OBJ NIL)
(PROGN
(setq en1 (entget oBJ))
;setq
(setq hhA (cdr (assoc 1 en1)) )
(setq hh (atof hhA))
(setq cen1 (cdr (assoc 8 en1)) )
(If(/= cen cen1)
(progn
(command "zoom" "c" p1 (*40 0.5))
(GETSTRING (strcat "高程层次错误。按ESC键盘退出....")) ))
(setq j 1)
(setq DIST 1)
)) ))
(if ssa
(while (&lt; j (sslength ssa))
(setq ents1 (ssname ssa j))
(setq en1 (entget ents1))
(setq km (cdr (assoc 1 en1)) )
(setq P2 (cdr (assoc 10 en1)) )
(setq ax (th 0 p2))
(setq ay (nth 1 p2))
(setq cen1 (cdr (assoc 8 en1)) )
(setq ang0 (/ (* (angle p1 p2) 180) 3.14159))
(setq pp2 p2)
(cond
((and (&gt; ang0 100) (&lt;= ang0 190))
(setq pp2 (list (+ ax 24) ay))
)
((and (&gt; ang0 190) (&lt;= ang0 250))
(setq pp2 (list (+ ax 24) (+ ay 10)))
)
((and (&gt; ang0 250) (&lt;= ang0 350))
(setq pp2 (list ax (+ ay 10))))
)
(SETQ DIST1 (DISTANCE P1 Pp2))
(IF (&gt; DIST DIST1)
(PROGN
(SETQ DIST DIST1)
(SETQ GC (ATOF KM))
(SETQ EN2 EN1)
(setq hha km)
(setq hh (atof km))
(setq ents2 ents1) ))
(setq j (+ j 1)) ))
(setq x1 (* 2 0.5))
(setq y1 (* 2 0.5))
(setq pa1 (list (- px x1) (- py y1)))
(setq pB1 (list (+ px x1) (+ py y1)))
(setq ssb nil)
(setq ssb (ssget "w" PA1 PB1 (LIST (cons 8 "gcd") (cons 0 "INSERT") (cons 2 "gc200"))))
;(command "pline" pa1 pb1 """")
(setq jj 0)
(if ssb
(while (&lt; jj (sslength ssb))
(setq ents2 (ssname ssb jj))
(setq en2 (entget ents2))
(setq km (cdr (assoc 1 en2)) )
;(setq P5 (cdr (assoc 10 en2)) )
;(command "circle" p5 (* 5 0.5))
(setq jj (+ jj 1)) ))
(if (or (= j 1) (&lt; dist 10))
(progn
(setq p3 (list (nth 0 p1) (nth 1 p1) hh))
(setq x1 (rtos px 2 3))
(setq y1 (rtos py 2 3))
(setq h1 (rtos hh 2 3))
(setq h2 (rtos ph 2 3))
(setq i1 (rtos (+ rks 1) 2 0))
(setq a3 (strcat " 标注高程 " h1))
(setq a4 (strcat " 点位高程 " h2))
(setq h8 (abs(- hh ph )))
(if (&gt; h8 0.01)
(progn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(command "circle" p1 (* 2 0.5))
(setq str2 (getstring (strcat a3 a4 " 是否记录(回车记录,No不记录se选择esc中断修改)")))
(command "u")
(if (= str2 "se")
(progn
(setq yy1 (strcat "\n找到多个实体,请选择高程&lt;" hha "&gt;: "))
(setq oBJ (car (entsel yy1)))
(IF(/= OBJ NIL)
(PROGN
(setq en1 (entget oBJ))
;setq
(setq hhA (cdr (assoc 1 en1)) )
(setq hh (atof hhA))
(setq j 1)
(setq DIST 1) ))
(if (or (= j 1) (&lt; dist 10))
;a
(progn
(setq p3 (list (nth 0 p1) (nth 1 p1) hh))
(setq x1 (rtos px 2 3))
(setq y1 (rtos py 2 3))
(setq h1 (rtos hh 2 3))
(setq h2 (rtos ph 2 3))
(setq i1 (rtos (+ rks 1) 2 0))
(setq a3 (strcat " 标注高程 " h1))
(setq a4 (strcat " 点位高程 " h2))
(setq h8 (abs(- hh ph)))
(if (&gt; h8 0.01)
(progn
;;;;;;;;;;;;;;;;
(command "circle" p1 (* 2 0.5))
(setq str2 (getstring (strcat a3 a4 " 是否记录(回车记录,No不记录?)")))
(command "u"))) )) ))
(if (= str2 "")
(progn
;;;;;;;;;;;;;;;;
(command "change" ssb "" "p" "e" h1 "la" "BJ08" "c" "bylayer" "")
(print "已记录")
(setq zbzf (strcat " 图元 "i1": (" x1 " " y1 " "a3 a4 " 高程值不符" ))
(write-line zbzf wj1)
(setq rks (+ rks 1)) )) )) ) ) );;;end

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-7-31 09:43:45 | 显示全部楼层
;错误百出
  1. ;;检查高程匹配
  2. (defun c:jcgc()
  3. (command "osnap" "off")
  4. (command "layer" "th" "*" "unlock" "*" "")
  5. (command "layer" "m" "gcd" "on" "*" "")
  6. (command "layer" "S" "0" "")
  7. (setq file1 (getvar "DWGNAME"))
  8. (setq dir1 (getvar "DWGPREFIX"))
  9. (setq XH (strcase (substr file1 1 (- (strlen file1) 4))))
  10. (setq FILEN (strcat DIR1 XH ".检查高程"))
  11. (setq wj1 (open FILEN "a"))
  12. (setq rks 0)
  13. (write-line " -------------------------------------------------------------" wj1)
  14. (setq zbzf (strcat "检查图幅名:" XH "检查时间"))
  15. (write-line "" wj1)
  16. (setq zbzf (strcat " ----- " "高程匹配检查" "----- "))
  17. (write-line zbzf wj1)
  18. (write-line "" wj1)
  19. (close wj1)
  20. (setq wj1 (open FILEN "a"))
  21. (setq i 0)
  22. (if (setq sss (ssget "x" '((0 . "INSERT")(2 . "gC200")(8 . "gcd"))))
  23.   (while (< i (sslength sss))
  24.    (setq en (entget (ssname sss i)))
  25.    (setq P1 (cdr (assoc 10 en)) )
  26.    (setq cen (cdr (assoc 8 en)) )
  27.    (setq px (car p1))
  28.    (setq py (cadr p1))
  29.    (setq ph (last p1))
  30.    (rk)
  31.    (setq i (1+ i))
  32.   )
  33. )
  34. (setq a (itoa rks) )
  35. (if (equal cen cen1 1e-6)
  36.   (setq a1 (strcat ",本幅图找到不匹配高程个数:" a "个"))
  37.   (setq a1 "高程层次错误。按ESC键盘退出...")
  38. )
  39. (write-line "" wj1)
  40. (print a1)
  41. (close wj1)
  42. (print "检查完事")
  43. (princ)
  44. )
  45. (defun rk()
  46. (setq pz 0)
  47. (setq p1 (list px py))
  48. (command "zoom" "c" p1 40)
  49. (setq x 11.0)
  50. (setq y 5.0)
  51. (setq pa (list (- px x) (- py y)))
  52. (setq pB (list (+ px x) (+ py y)))
  53. (setq ssa nil)
  54. (setq hha "0")
  55. (setq ssa (ssget "w" PA PB (list '(0 . "TEXT")(cons 8 cen))))
  56. (setq j 0)
  57. (setq GC 0)
  58. (setq dist 6000)
  59. (setq h2 nil)
  60. (setq h1 nil)
  61. (if(= ssa nil ) (progn
  62.   (command "zoom" "c" p1 20)
  63.   (command "circle" p1 1)
  64.   (setq yy1 (strcat "\n未找到高程注记,请检查高程层次是否为gcd,确认后再选择高程<" hha ">: "))
  65.   (setq oBJ (car (entsel yy1)))
  66.   (if(/= OBJ nil) (progn
  67.    (setq en1 (entget oBJ))
  68. ;setq
  69.    (setq hhA (cdr (assoc 1 en1)) )
  70.    (setq hh (atof hhA))
  71.    (setq cen1 (cdr (assoc 8 en1)) )
  72.    (if(/= cen cen1) (progn
  73.     (command "zoom" "c" p1 20)
  74.     (getstring (strcat "高程层次错误。按ESC键盘退出...."))
  75.    ))
  76.    (setq j 1)
  77.    (setq DIST 1)
  78.   ))
  79. )
  80.   (while (< j (sslength ssa))
  81.    (setq ents1 (ssname ssa j))
  82.    (setq en1 (entget ents1))
  83.    (setq km (cdr (assoc 1 en1)) )
  84.    (setq P2 (cdr (assoc 10 en1)) )
  85.    (setq ax (car p2))
  86.    (setq ay (cadr p2))
  87.    (setq cen1 (cdr (assoc 8 en1)) )
  88.    (setq ang0 (/ (* (angle p1 p2) 180) pi))
  89.    (setq pp2 p2)
  90.    (cond
  91.     ((and (> ang0 100) (<= ang0 190)) (setq pp2 (list (+ ax 24) ay)))
  92.     ((and (> ang0 190) (<= ang0 250)) (setq pp2 (list (+ ax 24) (+ ay 10))))
  93.     ((and (> ang0 250) (<= ang0 350)) (setq pp2 (list ax (+ ay 10))))
  94.    )
  95.    (setq DIST1 (distance P1 Pp2))
  96.    (if (> DIST DIST1) (progn
  97.     (setq DIST DIST1)
  98.     (setq GC (atof KM))
  99.     (setq EN2 EN1)
  100.     (setq hha km)
  101.     (setq hh (atof km))
  102.     (setq ents2 ents1)
  103.    ))
  104.    (setq j (1+ j))
  105.   )
  106. )
  107. (setq x1 1.0)
  108. (setq y1 1.0)
  109. (setq pa1 (list (- px x1) (- py y1)))
  110. (setq pB1 (list (+ px x1) (+ py y1)))
  111. (setq ssb nil)
  112. ;(command "pline" pa1 pb1 """")
  113. (setq jj 0)
  114. (if (setq ssb (ssget "w" PA1 PB1 '((0 . "INSERT")(2 . "gc200")(8 . "gcd"))))
  115.   (while (< jj (sslength ssb))
  116.    (setq ents2 (ssname ssb jj))
  117.    (setq en2 (entget ents2))
  118.    (setq km (cdr (assoc 1 en2)) )
  119. ;(setq P5 (cdr (assoc 10 en2)) )
  120. ;(command "circle" p5 (* 5 0.5))
  121.    (setq jj (1+ jj))
  122.   )
  123. )
  124. (if (or (= j 1) (< dist 10)) (progn
  125.   (setq p3 (list (car p1) (cadr p1) hh))
  126.   (setq x1 (rtos px 2 3))
  127.   (setq y1 (rtos py 2 3))
  128.   (setq h1 (rtos hh 2 3))
  129.   (setq h2 (rtos ph 2 3))
  130.   (setq i1 (rtos (+ rks 1) 2 0))
  131.   (setq a3 (strcat " 标注高程 " h1))
  132.   (setq a4 (strcat " 点位高程 " h2))
  133.   (setq h8 (abs(- hh ph )))
  134.   (if (> h8 0.01) (progn
  135. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  136.    (command "circle" p1 (* 2 0.5))
  137.    (setq str2 (getstring (strcat a3 a4 " 是否记录(回车记录,No不记录se选择esc中断修改)")))
  138.    (command "u")
  139.    (if (= str2 "se") (progn
  140.     (setq yy1 (strcat "\n找到多个实体,请选择高程<" hha ">: "))
  141.     (setq oBJ (car (entsel yy1)))
  142.     (if(/= OBJ nil) (progn
  143.      (setq en1 (entget oBJ))
  144. ;setq
  145.      (setq hhA (cdr (assoc 1 en1)) )
  146.      (setq hh (atof hhA))
  147.      (setq j 1)
  148.      (setq DIST 1)
  149.     ))
  150.     (if (or (= j 1) (< dist 10)) (progn
  151.      (setq p3 (list (nth 0 p1) (nth 1 p1) hh))
  152.      (setq x1 (rtos px 2 3))
  153.      (setq y1 (rtos py 2 3))
  154.      (setq h1 (rtos hh 2 3))
  155.      (setq h2 (rtos ph 2 3))
  156.      (setq i1 (rtos (+ rks 1) 2 0))
  157.      (setq a3 (strcat " 标注高程 " h1))
  158.      (setq a4 (strcat " 点位高程 " h2))
  159.      (setq h8 (abs(- hh ph)))
  160.      (if (> h8 0.01) (progn
  161. ;;;;;;;;;;;;;;;;
  162.       (command "circle" p1 (* 2 0.5))
  163.       (setq str2 (getstring (strcat a3 a4 " 是否记录(回车记录,No不记录?)")))
  164.       (command "u")
  165.      ))
  166.     ))
  167.    ))
  168.    (if (= str2 "") (progn
  169. ;;;;;;;;;;;;;;;;
  170.     (command "change" ssb "" "p" "e" h1 "la" "BJ08" "c" "bylayer" "")
  171.     (print "已记录")
  172.     (setq zbzf (strcat " 图元 " i1 ": (" x1 " " y1 " "a3 a4 " 高程值不符"))
  173.     (write-line zbzf wj1)
  174.     (setq rks (1+ rks))
  175.    ))
  176.   ))
  177. ))
  178. )
 楼主| 发表于 2015-7-31 15:10:37 | 显示全部楼层
ZZXXQQ 发表于 2015-7-31 09:43
;错误百出

谢谢老师的及时回复与修改,程序运行了, 运行后所有的高程点都给画圆圈了  对的也给画了
 楼主| 发表于 2015-7-31 15:12:52 | 显示全部楼层
ZZXXQQ 发表于 2015-7-31 09:43
;错误百出

(setq yy1 (strcat "\n未找到高程注记,请检查高程层次是否为gcd,确认后再选择高程<" hha ">: "))
只执行了这个  如果展点的高程和高程点块的高程不符合时才给画圈就对了 这个 都给画圈了 我在去看看  谢谢老师在百忙之中给予解答和回复  修改  祝福老师
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 17:50 , Processed in 0.185189 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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