hlkyer 发表于 2015-7-22 16:31:31

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

本帖最后由 hlkyer 于 2015-7-23 12:27 编辑

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

依然小小鸟 发表于 2023-12-10 12:33:23

hlkyer 发表于 2015-7-23 20:42
没得事,能帮我写就已经很感激了,刚好测试的时候学习了一下entmake的语法,一举两得!

有最终组合在一起的 完整程序吗

newbuser 发表于 2015-7-23 09:18:15

发一个例图上来。不知道你的那些个小圆点是“圆”还是“点”的形式存在。

newbuser 发表于 2015-7-23 09:46:37

(defun c:kk ( / ss n name elist p)
(setvar 'pdmode 35)
(setq ss (ssget "x" '((0 . "CIRCLE"))))
(setq n 0)
(repeat (sslength ss)
    (setq name (ssname ss n))
    (setq elist (entget name))
    (if        (= "CIRCLE" (cdr (assoc 0 elist)))
      (progn
        (setq p (assoc 10 elist))
        (entmake (list '(0 . "POINT") (cons 8 "新展点图层") p (cons 62 1)))
      )
    )
    (setq n (+ n 1))
)
(princ)
)

77077 发表于 2015-7-23 09:48:31

(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 . "GCD-PT")(cons 10 n))
   )
(princ)
);end defun

hlkyer 发表于 2015-7-23 14:38:59

newbuser 发表于 2015-7-23 09:46 static/image/common/back.gif


多谢大神帮助!解读代码的时候又学到了新东西!

hlkyer 发表于 2015-7-23 14:41:24

77077 发表于 2015-7-23 09:48 static/image/common/back.gif


多谢大神帮助!解读代码的时候又学到了新东西!根据你给的代码测试了一下,因为lisp水平实在是很初级,调试了两个小时才调试完,下面把对你的代码调试完毕的代码贴出以便有需要的朋友使用和修改。

hlkyer 发表于 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

newbuser 发表于 2015-7-23 16:05:46

hlkyer 发表于 2015-7-23 14:48 static/image/common/back.gif
根据4楼77077大神给的代码测试了一下,重新进行了调试,下面把调试完毕的代码贴出以便有需要的朋友使用和修 ...

我看你发上来的图圆圈是用椭圆写的,这个实体的(0 . "CIRCLE")应该改成(0 . "ELLIPSE")就没问题了。顺便问下阁下是在哪个测绘单位实习呢?

77077 发表于 2015-7-23 17:23:00

hlkyer 发表于 2015-7-23 14:48 static/image/common/back.gif
根据4楼77077大神给的代码测试了一下,重新进行了调试,下面把调试完毕的代码贴出以便有需要的朋友使用和修 ...

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

我写了没测试,真不好意思啊~~~

hlkyer 发表于 2015-7-23 20:41:39

newbuser 发表于 2015-7-23 16:05 static/image/common/back.gif
我看你发上来的图圆圈是用椭圆写的,这个实体的(0 . "CIRCLE")应该改成(0 . "ELLIPSE")就没问题了。顺便问 ...

不是在测绘单位,是在水利设计公司上班,业主单位给的是国土部门处理过的航测地形图,是用cass生成的,只是里面图层和高程点什么的都弄的乱七八糟的,为了后期设计好用,就想着把高程点重新提取出来展点进去
页: [1] 2
查看完整版本: [求助]如何将在圆心的三维坐标处添加点?