teknomatika 发表于 2022-7-6 07:30:48

按颜色划分的海拔高度-半对称

我发现了一个有趣的程序,可以根据海拔高度进行调查。
碰巧,有人知道一个类似的程序,但其中考虑了轮廓/曲线?
 
(见显示常规结果的图像)

Lee Mac 发表于 2022-7-6 07:35:52

曲线是具有高程的多段线,还是具有不同高程的三维多段线?

teknomatika 发表于 2022-7-6 07:38:35

 
Lee,LW带高程的多段线。

BIGAL 发表于 2022-7-6 07:41:57

Civ 3d可以让你制作表面彩虹,它的显示风格选择之一是颜色而不是线条,你可以选择需要多少“条纹”。

irneb 发表于 2022-7-6 07:45:14

然后,想法是获得每个LWPoly的高程Z值:各种方法,但我认为最简单的方法是使用entget提取PL的DXF代码,然后使用代码为38的assoc。 
然后你需要弄清楚颜色是如何在不同层次上变化的:
 
[列表=1]
[*]最低和最高是什么?
[*]这两种颜色之间会发生怎样的变化?
[*]颜色的新算法是否在一定程度上有效?
[*]您会使用颜色渐变,即RGB颜色而不是ACI吗?
[/列表]
然后修改DXF数据列表(使用entmod),将ACI颜色添加到代码62,或将RGB颜色添加到420。

BIGAL 发表于 2022-7-6 07:47:57

类似的问题以前在这里被问过。取你的最大最小值,然后除以步长,这会增加颜色。如果你使用简单的按颜色方法颜色10-250,那么很容易计算出物体的颜色数。RGB是更好的色调,但有点难解决。

teknomatika 发表于 2022-7-6 07:51:02

 
是的,我认为解决方案是获得每个lwpolylinha的z值,并为该值指定一个颜色渐变,最终将色调保留为最低值​​将暗色调设置为最高值​​.
按照我提到的例程示例,最好能为各种调色板提供选项。
最后,可以选择在最大和最小Z之间设置间隔,其中每个间隔将应用一种颜色。

irneb 发表于 2022-7-6 07:55:21

这是一个非常简单的版本,只使用ACI颜色数从10到199,从最低到最高。
(vl-load-com)
(setq *PLColor:ACI_Range* '(10 . 199)
   *PLColor:Z_Range* '(0.0 . 100.0))
(defun PLColour:CalcColour (elevation / z aci)
(setq z (- (cdr *PLColor:Z_Range*) (car *PLColor:Z_Range*) -1.0)
       z (/ (rem elevation z) z))
(+ (car *PLColor:ACI_Range*) (fix (* (- (cdr *PLColor:ACI_Range*) (car *PLColor:ACI_Range*)) z))))

(defun c:PLColour (/ ss eList minZ maxZ)
(if (and (ssget '((0 . "LWPOLYLINE")))
          (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))))
   (progn (setq minZ 1.7976931348623158e308 maxZ -1.7976931348623158e308)
   (vlax-for eo ss
       (setq eList (cons eo eList)
             minZ (min (vla-get-Elevation eo) minZ)
             maxZ (max (vla-get-Elevation eo) maxZ)))
   (setq *PLColor:Z_Range* (cons minZ maxZ))
   (foreach eo eList (vla-put-Color eo (PLColour:CalcColour (vla-get-Elevation eo))))
   (vla-Delete ss)))
(princ))

teknomatika 发表于 2022-7-6 07:58:34

伊尔内布,坦克求救。
 
不幸的是,它似乎不起作用。报告以下错误:
 
此外,这:
 
我做错什么了吗?

irneb 发表于 2022-7-6 08:00:15

您使用的是哪一版本的ACad?还是垂直/克隆?
页: [1] 2
查看完整版本: 按颜色划分的海拔高度-半对称