缩放需要从0,0开始。没有其他方法可以从地面坐标到栅格坐标。
Dink87522-我同意这不是最佳做法。我要做的就是调整轮廓。阻塞>缩放>分解的方法非常耗时。大约有5000条多段线,大约有300000条线。只是没有足够的内存一次完成这一切,所以我必须在小范围内选择。非常耗时。
RenderMan-我试用了你的最新代码。它仍然会缩放z值。这就是我每次尝试的结果。
marko_ribar-就是这个!!它成功了!!神圣的烟雾可以节省大量时间。
现在我想知道它是否可以修改为同时选择多段线。
代码修改-现在您可以为所有轮廓创建一个单一选择集,整个选择集将从相同(用户指定)基点缩放。所有标高将保持与开始时相同。
HTH公司 这太神奇了。我花了好几年才弄明白那个密码。
它工作得很好!!几秒钟就能完成我一整天的工作。
谢谢你的帮助!
我很乐意帮忙。
你说得太好了;干杯 您可能希望将其限制为LWPolylines,或者对其进行一点调整。
谢谢艾伦;代码已修订。 无聊的
(defun c:SLWP (/ *error* ss point elev)
(defun *error* (msg)
(and *AcadDoc* (vla-endundomark *AcadDoc*))
(if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
(princ (strcat "\nError: " msg))
)
)
(vla-startundomark
(cond (*AcadDoc*)
((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
)
)
(princ "\nSelect LWPolylines to scale: ")
(if (and (setq ss (ssget "_:L" '((0 . "LWPOLYLINE"))))
(setq point (getpoint "\nSpecify base point: "))
(progn (initget 6)
(setq *SLWP:factor*
(cond ((getdist (strcat "\nSpecify scale factor"
(if (numberp *SLWP:factor*)
(strcat " <" (rtos *SLWP:factor*) ">: ")
": "
)
)
)
)
(*SLWP:factor*)
)
)
)
)
(progn
(setq point (vlax-3d-point (trans point 1 0)))
(vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*))
(setq elev (vla-get-elevation x))
(vla-scaleentity x point *SLWP:factor*)
(vla-put-elevation x elev)
)
(vla-delete ss)
)
)
(*error* nil)
(princ)
)
厌烦“真正的”发明之母。
页:
1
[2]