乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 16|回复: 16

[编程交流] 通过Elevat为点云着色

[复制链接]

5

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 09:14:16 | 显示全部楼层 |阅读模式
大家好,
 
我正在使用Autocad 2002-2011。
 
我有一个很大的点云,通常大约100000个点,也许更多,不幸的是,程序将这些点发送到autocad的唯一方式是纯白色。
 
在我尝试制作一些lisp之前,我只是想知道是否有人有一个lisp,可以根据点云的高程为其着色。
 
我所说的颜色是指一系列的颜色,所以当我从俯视角度观察这些点时,我可以看到海拔的差异。
 
如果没有,我打算设计一些工作方式,例如将所有点收集到一个数组中,然后根据从最高点Z值到最低点Z值的范围对其进行排序,将颜色分配给点海拔的分割百分比,即红色0-10%蓝色11-20%,依此类推。
 
任何人,如果有人知道Lisp程序已经做了类似的事情给我一个叫!
 
谢谢
 
卡布拉姆特隆
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:21:17 | 显示全部楼层
我没有为您准备的例程,因为我很少使用点云,但您可以尝试开发一些东西,逐步通过过滤的点选择集,并使用cond语句检查点高程,然后使用vla put color函数相应地更改点颜色。
 
编辑:
然而,如果您想通过您概述的百分比括号对点高程进行排序,我相信您可能需要两次遍历选择集。。。
 
第一次在排序列表中构造高程和vla对象的分组对,并获取总计数,第二次通过单步遍历排序列表,拉动vla对象引用(cadr?)并应用颜色。
 
希望这有帮助!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:22:50 | 显示全部楼层
您可以创建一个点对列表(Elev.EName)来按您喜欢的方式分解并进行相应的修改-我只需要使用entmod。
 
例如(创建点对列表)
  1. (defun foo (/ ss)
  2. (if (setq ss (ssget "_X" '((0 . "POINT"))))
  3.    ((lambda (i / e l)
  4.       (while (setq e (ssname ss (setq i (1+ i))))
  5.         (setq l (cons (cons (last (assoc 10 (entget e))) e) l))
  6.       )
  7.       (vl-sort l (function (lambda (a b) (< (car a) (car b)))))
  8.     )
  9.      -1
  10.    )
  11. )
  12. )

 
例如(用确定的颜色修改)
  1. (defun foo (l c)
  2. (entupd (cdr (assoc -1
  3.                      (entmod (if (assoc 62 l)
  4.                                (subst (cons 62 c) (assoc 62 l) l)
  5.                                (append l (list (cons 62 c)))
  6.                              )
  7.                      )
  8.               )
  9.          )
  10. )
  11. )

(foo(entget)3)
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 09:28:09 | 显示全部楼层
我喜欢百分比法
 
颜色1=0-10%
颜色2=10.0001-20%
颜色3=20.0001-30%
 

 
  1. [b][color=BLACK]([/color][/b]defun c:pelcl [b][color=FUCHSIA]([/color][/b]/ ss i en ed ev el minz delta pc nc[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"POINT"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.      [b][color=NAVY]([/color][/b]progn
  4.         [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]sslength ss[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  5.         [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ss [b][color=RED]([/color][/b]setq i [b][color=PURPLE]([/color][/b]1- i[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  6.                [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b]
  7.                      ev [b][color=BLUE]([/color][/b]caddr [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 10 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  8.                      el [b][color=BLUE]([/color][/b]cons ev el[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  9.         [b][color=MAROON]([/color][/b]setq minz [b][color=GREEN]([/color][/b]apply 'min el[b][color=GREEN])[/color][/b]
  10.              delta [b][color=GREEN]([/color][/b]- [b][color=BLUE]([/color][/b]apply 'max el[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]apply 'min el[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  11.                   i -1[b][color=MAROON])[/color][/b]
  12.         [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ss [b][color=RED]([/color][/b]setq i [b][color=PURPLE]([/color][/b]1+ i[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  13.                [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b]
  14.                      ev [b][color=BLUE]([/color][/b]caddr [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 10 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  15.                      pc [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 62 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  16.                      nc [b][color=BLUE]([/color][/b]- 10 [b][color=RED]([/color][/b]abs [b][color=PURPLE]([/color][/b]fix [b][color=TEAL]([/color][/b]/ [b][color=OLIVE]([/color][/b]- delta [b][color=GRAY]([/color][/b]- ev minz[b][color=GRAY])[/color][/b] 1e-4[b][color=OLIVE])[/color][/b] delta 0.1[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  17.                      ed [b][color=BLUE]([/color][/b]if pc [b][color=RED]([/color][/b]subst [b][color=PURPLE]([/color][/b]cons 62 nc[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cons 62 pc[b][color=PURPLE])[/color][/b] ed[b][color=RED])[/color][/b]
  18.                                [b][color=RED]([/color][/b]append ed [b][color=PURPLE]([/color][/b]list [b][color=TEAL]([/color][/b]cons 62 nc[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  19.                [b][color=GREEN]([/color][/b]entmod ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  20. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
颜色1+10在我的设置中相当接近,但我仍然可以区分。祝你好运-大卫
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:32:48 | 显示全部楼层
正如一位智者所说。。。
 
 
 
英雄联盟
 
编辑:顺便说一句,很棒的家伙!
回复

使用道具 举报

5

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 09:33:15 | 显示全部楼层
哇哈哈,
 
嗯,我本来打算写例行笑,但伙计,你们太快了!
 
大卫,我试过了,效果很好。
 
谢谢alan和david,谢谢你们的输入,谢谢你们写出这么好的lisp。
 
再次感谢各位!
 
卡布拉姆特隆
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 09:38:12 | 显示全部楼层
不客气。
 
我会发现这种变化在我的工作中很有用
 
这里有一个更紧凑的例子:
 
  1. [b][color=BLACK]([/color][/b]defun c:pelcl [b][color=FUCHSIA]([/color][/b]/ ss i en ed ev el minz delta pc nc[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq i -1 ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"POINT"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss [b][color=BLUE]([/color][/b]setq i [b][color=RED]([/color][/b]1+ i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  4.              [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
  5.                    el [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]caddr [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 10 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] el[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  6.       [b][color=NAVY]([/color][/b]setq minz [b][color=MAROON]([/color][/b]apply 'min el[b][color=MAROON])[/color][/b]
  7.            delta [b][color=MAROON]([/color][/b]- [b][color=GREEN]([/color][/b]apply 'max el[b][color=GREEN])[/color][/b] minz[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  8.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss [b][color=BLUE]([/color][/b]setq i [b][color=RED]([/color][/b]1- i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  9.              [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
  10.                    ev [b][color=GREEN]([/color][/b]caddr [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 10 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  11.                    pc [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  12.                    nc [b][color=GREEN]([/color][/b]- 10 [b][color=BLUE]([/color][/b]abs [b][color=RED]([/color][/b]fix [b][color=PURPLE]([/color][/b]/ [b][color=TEAL]([/color][/b]- delta [b][color=OLIVE]([/color][/b]- ev minz[b][color=OLIVE])[/color][/b] 1e-4[b][color=TEAL])[/color][/b] delta 0.1[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  13.                    ed [b][color=GREEN]([/color][/b]if pc [b][color=BLUE]([/color][/b]subst [b][color=RED]([/color][/b]cons 62 nc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 62 pc[b][color=RED])[/color][/b] ed[b][color=BLUE])[/color][/b]
  14.                              [b][color=BLUE]([/color][/b]append ed [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]cons 62 nc[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  15.              [b][color=MAROON]([/color][/b]entmod ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  16. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:44:18 | 显示全部楼层
总是乐于助人。
回复

使用道具 举报

5

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 09:47:20 | 显示全部楼层
大家好,
 
我在看输出,它产生的百分比带有点宽
 
0-10%蓝色
10.005-20%红色
 
我想我会尝试将lisp更改为rgb true Color,原理与之前相同,但更像:
 
r 0 g 255 b 0.1%-0.2%
r 1 g 255 b 0 0.2%-0.3%等等,只需穿过整个颜色范围,就能看到更细微的海拔变化。
 
我会张贴它当我完成!
 
像往常一样谢谢你的帮助
 
卡布拉姆特隆
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:48:51 | 显示全部楼层
 
 
... 这篇文章接着说:“呃,看看那边那只死松鼠……”
 
“没有!”
101420zzfbb07993bc1die.jpg
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 06:33 , Processed in 1.263722 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表