明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1532|回复: 12

[源码] [求助]如何将在圆心的三维坐标处添加点?

[复制链接]
发表于 2015-7-22 16:31:31 | 显示全部楼层 |阅读模式
本帖最后由 hlkyer 于 2015-7-23 12:27 编辑

拿到一个dwg的地形文件,5个平方公里的,结果里面cass生成的高程块全被打断,几千个高程块插入的位置变成了一个个小圆圈。现在想将里面的高程点数据重新进行展点,苦于lisp实在是新手,无法自己编写这个在圆心三维坐标处插入点的批量LISP,特在这里求助各位大神帮忙写下这个小程序,或者给一定的思路提示,多谢了!!!!

本帖子中包含更多资源

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

x
发表于 2023-12-10 12:33:23 | 显示全部楼层
hlkyer 发表于 2015-7-23 20:42
没得事,能帮我写就已经很感激了,刚好测试的时候学习了一下entmake的语法,一举两得!

有最终组合在一起的 完整程序吗
发表于 2015-7-23 09:18:15 | 显示全部楼层
发一个例图上来。不知道你的那些个小圆点是“圆”还是“点”的形式存在。
发表于 2015-7-23 09:46:37 | 显示全部楼层
  1. (defun c:kk ( / ss n name elist p)
  2.   (setvar 'pdmode 35)
  3.   (setq ss (ssget "x" '((0 . "CIRCLE"))))
  4.   (setq n 0)
  5.   (repeat (sslength ss)
  6.     (setq name (ssname ss n))
  7.     (setq elist (entget name))
  8.     (if        (= "CIRCLE" (cdr (assoc 0 elist)))
  9.       (progn
  10.         (setq p (assoc 10 elist))
  11.         (entmake (list '(0 . "POINT") (cons 8 "新展点图层") p (cons 62 1)))
  12.       )
  13.     )
  14.     (setq n (+ n 1))
  15.   )
  16.   (princ)
  17. )
发表于 2015-7-23 09:48:31 | 显示全部楼层
  1. (defun c:xx-tt(/)
  2. (prompt "***圆心写点****")
  3. (setq ss (ssget '((0 . "circle") (8 . "GCD"))))
  4. (setq i -1)
  5. (while(setq s1(ssname ss(setq i(1+ i))))
  6.          (setq PT (cdr (assoc 10 (entget S1))))
  7.    (entmake list (0 . "point") (8 . "GCD-PT")(cons 10 n))
  8.    )
  9. (princ)
  10. );end defun
 楼主| 发表于 2015-7-23 14:38:59 | 显示全部楼层
newbuser 发表于 2015-7-23 09:46

多谢大神帮助!解读代码的时候又学到了新东西!
 楼主| 发表于 2015-7-23 14:41:24 | 显示全部楼层
77077 发表于 2015-7-23 09:48

多谢大神帮助!解读代码的时候又学到了新东西!根据你给的代码测试了一下,因为lisp水平实在是很初级,调试了两个小时才调试完,下面把对你的代码调试完毕的代码贴出以便有需要的朋友使用和修改。
 楼主| 发表于 2015-7-23 14:48:46 | 显示全部楼层
根据4楼77077大神给的代码测试了一下,重新进行了调试,下面把调试完毕的代码贴出以便有需要的朋友使用和修改。

(defun c:xx-tt(/)
(prompt "***圆心写点****")
(setq ss (ssget '((0 . "CIRCLE")  (8 . "GCD"))))
(setq i -1)
(while(setq s1 (ssname ss(setq i(1+ i))))
         (setq pt (cdr (assoc 10 (entget s1))))
   (entmake (list'(0 . "POINT")  '(8 . "0") (cons 10 pt)))
   )
(princ)
);end defun
发表于 2015-7-23 16:05:46 | 显示全部楼层
hlkyer 发表于 2015-7-23 14:48
根据4楼77077大神给的代码测试了一下,重新进行了调试,下面把调试完毕的代码贴出以便有需要的朋友使用和修 ...

我看你发上来的图圆圈是用椭圆写的,这个实体的(0 . "CIRCLE")应该改成(0 . "ELLIPSE")就没问题了。顺便问下阁下是在哪个测绘单位实习呢?
发表于 2015-7-23 17:23:00 | 显示全部楼层
hlkyer 发表于 2015-7-23 14:48
根据4楼77077大神给的代码测试了一下,重新进行了调试,下面把调试完毕的代码贴出以便有需要的朋友使用和修 ...

不好意思啊,纯属笔误,原来是(entmake list (0 . "point") (8 . "GCD-PT")(cons 10 n))这一行少了一对括号·~~
改成这样就没事了~~~
(entmake (list '(0 . "point") '(8 . "GCD-PT")(cons 10 n)))

我写了没测试,真不好意思啊~~~
 楼主| 发表于 2015-7-23 20:41:39 | 显示全部楼层
newbuser 发表于 2015-7-23 16:05
我看你发上来的图圆圈是用椭圆写的,这个实体的(0 . "CIRCLE")应该改成(0 . "ELLIPSE")就没问题了。顺便问 ...

不是在测绘单位,是在水利设计公司上班,业主单位给的是国土部门处理过的航测地形图,是用cass生成的,只是里面图层和高程点什么的都弄的乱七八糟的,为了后期设计好用,就想着把高程点重新提取出来展点进去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-27 15:27 , Processed in 0.180803 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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