明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1863|回复: 4

请教LISP高手(关于高程点的自动检查)

[复制链接]
发表于 2008-4-21 12:13:00 | 显示全部楼层 |阅读模式

前几天在网上找的这样一段关于高程点注记的检查程序,好像不能用,请高手指教,现急用,不甚感激!

(defun c:gcdjc ()
  (setvar "cmdecho" 0)
  (write-line "欢迎使用高程点自动检查与修改程序!")
  (setq ent (ssget "x" ((8, "gcd") (0, "text"))))
  (if ent
    (progn
      (command "zoom" "e")
      (command "layer" "m" "gcd" "")
      (setq ent_length (sslength ent))
      (setq ent_number 0)
      (repeat ent_length
 (setq ent_name (ssname ent ent_number))
 (clgcd)
 (setq ent_number (1+ent_number))
      )
      (command "layer" "In" "0" "")
      (command "zoom" "e")
      (write-line "高程点检查修改完毕!")
    )
  )
)
(defun clgcd ()
  (setq data (entget ent_name))
  (setq rex (cdr (assoc 1 data)))
  (setq P (cdr (assoc 10 data)))
  (setq pl (polar P (* 1.25 pi) 7,0)
 pr (polar P (* 0.25 pi) 10,0)
  )
  (setq ent-P (ssget "w" pl pr ((0, "point") (8, "gcd"))))
  (if ent-P
    (progn
      (setq p_length (sslength ent-P))
      (setq p_number 0)
      (setq p_data (entget (ssname ent-P p_number)))
      (setq gcdz (rtos (cadddr (assoc 10 p_data)) 2 2))
      (setq wc (- (atof gcdz) (atof tex)))
      (while (and
        (>= (abs wc) 0.01)
        (<p_number (1-P_length))
      )
 (setq p_number (1+p_number))
 (setq p_data (entget (ssname ent-P p_number)))
 (setq gcdz (rtos (cadddr (assoc 10 p_data)) 2 2))
 (setq wc (- (atof gcdz) (atof rex)))
      )
      (if (>= (abs wc) 0.O1)
 (progn
   (command "zoom" pl pr)
   (write-line "无匹配高程点,请选择需要修改的高程点,不选择则自动加点.")
   (redraw ent_name 3)
   (setq p_sel (ssget))
   (redraw ent_name 4)
   (if p_sel
     (progn
       (setq sel (entget (ssname P_sel 0)))
       (setq X (cadr (assoc 10 sel))
      Y (caddr (assoc 10 sel))
       )
       (setq zb_new (1ist 10 X Y (atof tex)))
       (setq sel (subst
     zb_new
     (assoc 10 sel)
     sel
   )
       )
       (entmod sel)
     )
     (jiagcd)
   )
   (command "zoom" "e")
 )
      )
    )
  )
  (jiagcd)
)
(defun jiagcd ()
  (setq P-xy (polar (polar P (*0.5 pi) 0.5) pi 0.8))
  (command "point" P-xy)
  (command "change" "l" "" "P" "e" (atof tex) "")
)

发表于 2008-4-22 09:55:00 | 显示全部楼层
不知道什么叫高程点,,,就程序本身的格式改下:
(setq ent (ssget "x" ((8, "gcd") (0, "text"))))
(setq ent (ssget "x" '((8, "gcd") (0, "text"))));加一个'号
 (setq ent_number (1+ent_number))
 (setq ent_number (1+ ent_number));空格
(setq ent-P (ssget "w" pl pr ((0, "point") (8, "gcd"))))
(setq ent-P (ssget "w" pl pr '((0, "point") (8, "gcd"))));加一个'号
(<p_number (1-P_length))
(< p_number (1- P_length));空格
(setq p_number (1+p_number))
(setq p_number (1+ p_number));空格
(setq P-xy (polar (polar P (*0.5 pi) 0.5) pi 0.8))
(setq P-xy (polar (polar P (* 0.5 pi) 0.5) pi 0.8));空格


发表于 2008-4-22 20:45:00 | 显示全部楼层
 楼主| 发表于 2008-4-26 18:09:00 | 显示全部楼层

问题已解决,非常感谢楼上两位。

发表于 2016-5-8 10:19:35 | 显示全部楼层
sydney2000 发表于 2008-4-26 18:09
问题已解决,非常感谢楼上两位。

请问楼主怎么解决的?能否发一下程序?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 10:51 , Processed in 0.181503 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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