这正是我所做的,除了删除重复点,还使用以下代码修剪坐标:
(defun c:DrawPoints()
(mytrim)
(setq ptlist pl
lst1 ptlist
fuzz 0.003)
(remduppts ptlist fuzz)
(sortbyx)
(setq p1 (car ptlist)
p2 (car (reverse ptlist)))
(sortbyy)
(setq p3 (car ptlist)
p4 (car (reverse ptlist))
wx2 (list (car p2) (+ (cadr p4) 10.0))
wx1 (list (-(car p1) 10.0) (-(cadr p3) 10.0)))
(command "limits" wx1 wx2)
(command "Zoom" "E")
(setq list1 ptlist
pt1 (car list1))
(while (/= pt1 nil)
(setq pt1 (car list1))
(command "point" pt1)
(setq list1 (cdr list1))
)
(setq pl ptlist)
(princ)
)
(defun sortbyx()
(setq ptlist
(vl-sort ptlist
(function (lambda (e1 e2)
(< (car e1) (car e2))
)
)
) ;list points by x value (smaller value first)
)
)
(defun sortbyy ()
(setq ptlist
(vl-sort ptlist
(function (lambda (e1 e2)
(< (cadr e1) (cadr e2))
)
)
)
) ;list points by y value (smaller value first)
)
(defun mytrim()
(setq pl(mapcar '(lambda (x) (list (- (car x) 160000.000) (- (cadr x) 90000.00) (caddr x))) pl))
)
(defun remduppts (pl fuzz / res p)
(repeat (1- (length pl))
(setq p (car pl))
(if (> (distance (list (car p) (cadr p)) (cadr pl)) fuzz)
(setq res (cons p res))
)
(setq pl (cdr pl))
)
(reverse (cons (car pl) res))
)
但是,我使用了最大化显示。我相信这对坐标系做了一些改变,所以当我使用我开发的程序时会出错。当我在另一个没有缩放范围的图形上使用相同的程序时,我可以正常工作。我附上了这些图纸的剪断部分,我在这些图纸上绘制了道路路线的中心线。我正在努力找出问题所在。
函数mytrim正在更改坐标。如果不想更改坐标系,为什么要使用它?
也许这有助于:
(foreach pt pl
(command "_.point" "_non" pt)
)
(command "_.zoom" "_extents")
(setvar 'limmin (getvar 'extmin))
(setvar 'limmax (getvar 'extmax)) Roy_043,
没有变化;我仍然把中心线标记为第一张图片中的中心线。
至于mytrim函数,其背后有一个很长的故事。几年前,这个论坛的一位成员提供了一个程序(大约3000行代码),使用该程序可以在我的点列表(本例中为点列表)所涵盖的点的绘图中获得z坐标。因此,为了修剪坐标,从而使数字变小,我使用了mytrim。这是一种使用autolisp的数字地形建模。如果我成功地解决了这个问题,我会用“Delaunay”三角剖分再次把它放在这个论坛上。
当做
芦荟 我想我帮不了你。你的问题仍然太神秘了。
但我确信最大化不会改变坐标系。 有没有办法在LIMITES命令后用新坐标显示griddisplay(数字为0,1,2),而不进行缩放、范围?。 Roy_043,
你是对的。缩放和范围不会影响我的坐标系。我的第一张图中的错误是由于两条线没有在一个点相交而不是相交。这样,问题就解决了。非常感谢你,1958年的Commandobill和Bigal的建议。
芦荟
页:
1
[2]