明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8378|回复: 20

[源码] 两个高程点或两条等高线内插高程

[复制链接]
发表于 2013-6-21 16:14:34 | 显示全部楼层 |阅读模式
本帖最后由 Gu_xl 于 2013-6-21 16:30 编辑

  1. ;;内插高程
  2. (defun c:zgx()
  3. (bl_c)
  4. (co_lt)
  5. (setq osvar (getvar "osmode"))
  6. (cond ((= pz nil) (setvar "osmode" 512))
  7.       ((= pz 1) (setvar "osmode" 8))
  8.       ((= pz 2) (setvar "osmode" 4))
  9. );cond
  10. (initget 128)
  11. (setq p1 (getpoint "\nN 捕捉模式/<选择一条等高线>: "))(PRINT)
  12. (while (and (/= p1 nil) (/= (type (list 0 0)) (type p1)))
  13. (if (or (= p1 "n") (= p1 "N")) (setq pz (getint "1 节点/2 圆心/<最近点>:")))
  14. (cond ((= pz 1) (setvar "osmode" 8))
  15.       ((= pz 2) (setvar "osmode" 4))
  16.       ((= pz nil) (setvar "osmode" 512))
  17. );cod
  18. (initget 128)
  19. (setq p1 (getpoint "\nN 捕捉模式/<选择一条等高线>: "))(PRINT)
  20. );while
  21. (setq p2 (getpoint "\n选择另一条等高线: "))(PRINT)
  22. (setvar "osmode" 0)
  23. (setq p3 (getpoint "\n选择选择高程注记点: "))(PRINT)
  24. (setq h1 (caddr p1))
  25. (setq h2 (caddr p2))
  26. (setq d (distance (list (car p1) (cadr p1)) (list (car p2) (cadr p2))))
  27. (setq d1 (distance (list (car p1) (cadr p1)) (list (car p3) (cadr p3))))
  28. (setq h (- h2 h1))
  29. (setq h (* h d1))
  30. (setq h (/ h d))
  31. (setq h (+ h1 h))
  32. (setq p3 (list (car p3) (cadr p3) h))
  33. (setq h (rtos h 2 1))
  34. (if (tblsearch "layer" "gcd")
  35. (setvar "clayer" "GCD")
  36. (command "layer" "m" "GCD" "c" 1 "" "")
  37. );if
  38. (command "insert" "gc200" p3 "xyz" (/ blc 1000.0) (/ blc 1000.0) (/ blc 1000.0) 0)
  39. (setq ent1 (entlast))
  40. (setq ent (entget ent1))
  41. (b_m "202101")
  42. (command "text" (list (+ (car p3) 2.2) (- (cadr p3) 2) (caddr p3)) (* 2 (/ blc 1000.0)) "0"  h)
  43. (setq ent2 (entlast))
  44. (setq ent (entget ent2))
  45. (b_m "202111")
  46. (command "RESUMEGCD" ent1 ent2 "")
  47. (setvar "clayer" "0")
  48. (setvar "osmode" osvar)
  49. (princ)
  50. );defun
  51. ;;------------------------------------------------------------------------------------
  52. ;;比例尺函数
  53. (defun bl_c()
  54. (if (<= (setq blc (getvar "userr1")) 0)
  55. (progn
  56. (setq blc (getint"\n图形比例尺1:<500>:"))
  57. (if (= blc nil) (setq blc 500.0) (setq blc (* 1.0 blc)))
  58. (setvar "userr1" blc )
  59. (setvar "ltscale" (/ blc 1000.0))
  60. );progn
  61. );if
  62. );defun
  63. ;;;-------------------------------------------------------------------
  64. ;颜色线型设置函数
  65. (defun co_lt()
  66. ;;关闭编组选择
  67. (if (/= (getvar "PICKSTYLE") 0) (setvar "PICKSTYLE" 0))
  68. ;;设定新对象的颜色为缺省颜色
  69. (if (/= (getvar "cecolor") "BYLAYER") (setvar "cecolor" "BYLAYER"))
  70. ;;设定新对象的线型为连续
  71. (if (/= (getvar "celtype") "CONTINUOUS") (setvar "celtype" "CONTINUOUS"))
  72. );defun
  73. ;;-----------------------------------------------------------------------------
  74. ;;设置编码函数
  75. (defun b_m(bm)
  76. (setq app_x
  77.             (list
  78.                  (list -3
  79.                        (list "SOUTH"
  80.                              (cons 1000 bm)
  81.                         );list
  82.                   );list
  83.              );list
  84. );setq
  85. (setq ent (append ent app_x))
  86. (entmod ent)
  87. );defun

点评

支持!  发表于 2013-6-21 18:20

评分

参与人数 2明经币 +3 收起 理由
004 + 1
Gu_xl + 2 赞一个!

查看全部评分

 楼主| 发表于 2017-11-7 10:29:15 | 显示全部楼层
lioun4105 发表于 2017-9-4 20:46
这个最好用,还有更好的吗,点出高程不用按空格就好了

你可以修改一下就能实现了
发表于 2017-9-4 20:46:22 | 显示全部楼层
这个最好用,还有更好的吗,点出高程不用按空格就好了
发表于 2017-9-4 20:21:27 | 显示全部楼层
这个好用,谢谢
发表于 2013-6-21 17:26:21 | 显示全部楼层
(command "insert" "gc200" 什么意思?
发表于 2013-6-21 17:58:49 | 显示全部楼层
q3_2006 发表于 2013-6-21 17:26
(command "insert" "gc200" 什么意思?

插入名为gc200的块
发表于 2013-6-21 23:03:31 | 显示全部楼层
发表于 2013-6-21 23:58:21 来自手机 | 显示全部楼层
g版这么快就给源码了,,,
发表于 2013-6-22 07:14:55 | 显示全部楼层
谢谢楼主的分享!
 楼主| 发表于 2013-6-22 08:27:58 | 显示全部楼层
004 发表于 2013-6-21 17:58
插入名为gc200的块

gc200块是在南方CASS里高程相对位置的一个点位块
 楼主| 发表于 2013-6-22 08:28:29 | 显示全部楼层
q3_2006 发表于 2013-6-21 17:26
(command "insert" "gc200" 什么意思?

gc200块是在南方CASS里高程相对位置的一个点位块
发表于 2013-6-22 08:37:07 | 显示全部楼层
思路清晰,功能实用,感谢楼主分享!
发表于 2013-6-22 10:23:04 | 显示全部楼层
谢谢楼主的分享!收藏备用。就是没有gc200.dwg块文件,所以无法测试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 01:47 , Processed in 0.254727 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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