匹配点t的Z高程
所有人,我有一个测量图,其中有很多没有高程的点,我有一个来自另一个源的dwg,其中有Z高程到点,问题是这些点不完全在同一位置。我只是在属性管理器中检查属性并分别编辑每个点的z。
是否有任何lisp将匹配从源到目标的Z高程,红色是带Z的点,绿色是不带Z的点
.
提前感谢 我将从以下内容开始:
(defun C:Red2GrnZ (/ tol ri rs rn rd rp md gs ce gi gn gd gp)
(defun p2d (p)
(list (car p) (cadr p)))
(initget 7)
(setq tol (getdist "\nBase Point Search Tolerance: "))
(and (setq ri -1)
(setq rs (ssget "X" '((0 . "POINT")(62 . 1))))
(setq gs (ssget "X" '((0 . "POINT")(62 . 3))))
(while (setq rn (ssname rs (setq ri (1+ ri))))
(setq rd (entget rn)
rp (cdr (assoc 10 rd))
md (distance (p2d (getvar "EXTMIN"))
(p2d (getvar "EXTMAX"))))
(and
(setq gs (ssget "C" (polar rp (* pi 0.25) tol)
(polar rp (* pi 1.25) tol)
'((0 . "POINT")(62 . 3))))
(setq ce nil
gi -1)
(while (setq gn (ssname gs (setq gi (1+ gi))))
(setq gd (entget gn)
gp (p2d (cdr (assoc 10 gd))))
(if (< (distance (p2d rp) gp) md)
(setq md (distance (p2d rp) gp)
ce gn))
gn)
(and ce
(entmod (subst (list 10 (car gp) (cadr gp) (caddr rp))
(assoc 10 gd) gd))
(redraw ce 3)))))
(prin1))
鉴于:
[列表]
[*]红色和绿色强制在点实体上(不是具有各自图层的BYLAYER)
[*]我猜你的公差是1个单位(可能是米)
[*]PDMODE自上次重新生成后未更改
[*]PDMODE显示几何形状将包含在公差中
[/列表]
举几个例子。。。。
你可以去掉公差,但是一张有数千个点的画要比北极的糖蜜画慢。
玩得开心-大卫
-CPT。图纸 看起来是个有趣的项目。很遗憾,我再过一个星期就不能接近AutoCAD了,更不用说用电脑了,但我会是个骗子。
非常有信心的大卫,我总是想知道如何应对这种情况
谢谢,通过将每个点与其他点进行比较,迭代将呈指数增长。我想您可以尝试计算ssget交叉值,但这仍然是一个猜测-大卫 非常感谢和感谢你,大卫先生,希望我的工作量会减轻。
大卫先生,有没有什么方法可以让我一层一层地工作,或者一个区域一个区域地工作,而不是一次完成所有的功能。这里有许多不同层次的特征,如道路和桥梁等 symoin,
是的,有很多方法可以分解选择集。
你必须有一些一致的参数才能工作。ie层名称、点颜色。
您可以从ssget调用中删除“X”,以允许用户选择-大卫 如果在查找列表中找到点时也将其删除,这意味着随着列表的减少,它将逐渐加快。
另一个技巧10000分需要13分才能找到正确的一个,不是9999。你注意到了吗?
这听起来很刺激,你能做到吗。 很容易,只要想一想,你的列表在10000中寻找一个点排序,列表跳转到中间值=项目5000是否等于是非跳转,然后再跳转到1/2,一半列表或多或少重复,并将剩余项目减少一半。
10000个项目开始
5000项目编号
2500项目编号
1250项目编号等,最多13倍
页:
[1]