明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1954|回复: 5

求助 怎样用lisp实现复制多义线的属性

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

我想用等高线在gis里面做地形分析,但是现有的等高线的高程值有大量错误,

想通过lisp程序根据正确的等高线刷新,就是类似格式刷那样的功能,将正确等高线的

高程复制给错误的等高线的高程,达到修正的目的。但不知如何实现,谢谢各位指教。

另外,朋友帮忙写的一个lisp程序都是乱码,不知道怎么回事如何解决,企盼指教。

email:trueman250@126.com

发表于 2006-4-4 22:12:00 | 显示全部楼层

我也想知道呢。

发表于 2006-4-5 00:10:00 | 显示全部楼层
不过你那个高程值就是线上点的Z坐标是吧?
那编程起来应该是蛮简单的啊。你会LISP吧?估计你不会^_^
我刚开始看到属性还以为是扩展属性呢。呵呵,最近在搞这个呢。
你说的那个高程就是一个点的Z坐标。
  1. (defun c:shuagc ()
  2.   (setq ent1  (car (entsel "\n选择高程正确的等高线:"))
  3. info1 (entget ent1)
  4.   )
  5.   (setq leixing (cdr (assoc 0 info1)))
  6.   (if (= leixing "LWPOLYLINE")
  7.     (setq gc1 (cdr (assoc 38 info1)))
  8.   )
  9.   (if (= leixing "POLYLINE")
  10.     (setq gc1 (last (assoc 10 info1)))
  11.   )
  12.   (while
  13.     (setq ent2 (car (entsel "\n选择要修改高程的等高线:"))
  14.    info2 (entget ent2)
  15.     )
  16.      (setq leixing2 (cdr (assoc 0 info2)))
  17.      (if (= leixing2 "LWPOLYLINE")
  18.        (setq info2 (subst (cons 38 gc1) (assoc 38 info2) info2))
  19.      )
  20.      (if (= leixing2 "POLYLINE")
  21.        (setq info2 (subst (list 10 0.0 0.0 gc1) (assoc 10 info2) info2))
  22.      )
  23.      (entmod info2)
  24.      (entupd ent2)
  25.   )
  26. )
发表于 2006-4-5 12:33:00 | 显示全部楼层

另外的一个想法

1. (entsel "\n选择要修改高程的等高线/输入高程值:"))

2. (getdist "\n高程递增值:")

3.(princ "\n 选择要修改的等高线:") (setq ss (ssget '((0 . "LWPOLYLINE")))

4.根据选到的等高线,用面积或其他方式判断,排序后自动付给高程值。

这样可以一次处理多个高程的等高线

 楼主| 发表于 2006-4-6 13:49:00 | 显示全部楼层

谢谢指教

 

发表于 2011-11-29 01:26:16 | 显示全部楼层
超然A 发表于 2006-4-5 00:10
不过你那个高程值就是线上点的Z坐标是吧?
那编程起来应该是蛮简单的啊。你会LISP吧?估计你不会^_^
我刚开 ...

不错,可以实现楼主的意思了,但如何使得图上等高线高程 整体增减一个数呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-6 04:13 , Processed in 0.170285 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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