无论如何,如果无法从勘测员处获得DTM,我建议您使用以下两个简单例程和上述链接来创建DTM-三角测量:
- (vl-load-com)
- (defun c:segcurves ( / msp ss seg ch n ent stpar enpar k pt ptlst )
- (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
- (prompt "\nSelect curves to apply segmentation with point entities")
- (while (not ss)
- (setq ss (ssget ":L" '((0 . "*LINE,ELLIPSE,ARC,CIRCLE"))))
- )
- (initget 7)
- (setq seg (getint "\nType number of segments inbetween points for segmentation per single curve : "))
- (initget "Yes No")
- (setq ch (getkword "\nDo you want to keep curves (Yes) or do you want to remove them after segmentation (No) <Yes> : "))
- (repeat (setq n (sslength ss))
- (setq ent (ssname ss (setq n (1- n))))
- (setq stpar (vlax-curve-getstartparam ent))
- (setq enpar (vlax-curve-getendparam ent))
- (setq k -1)
- (repeat seg
- (setq pt (vlax-curve-getpointatparam ent (+ stpar (* (- enpar stpar) (/ (setq k (1+ k)) seg 1.0)))))
- (setq ptlst (cons pt ptlst))
- )
- (setq ptlst (cons (vlax-curve-getendpoint ent) ptlst))
- (foreach pt ptlst
- (vla-addpoint msp (vlax-3d-point pt))
- )
- (setq ptlst nil)
- (if (eq ch "No")
- (entdel ent)
- )
- )
- (princ)
- )
并在使用ee三角化创建DTM之后。lsp或DTM。vlx witch在某些情况下可能会失败,您会使3dfaces变平:
然后创建区域(命令“REGION”)选择所有三维面(在我的代码中的过滤器中查找以使用(ssget)获取)-或转到quickselect并过滤三维面对象…=>创建的区域=>并集,再次过滤区域对象,并=>创建的单个区域=>分解=>pedit(上一个选择-分解的内容)-创建表示边界的连接和LWPOLYLINE。。。
希望这有帮助。。。
M、 R。 |