嗨,比格尔,
这正是我所做的,除了删除重复点,还使用以下代码修剪坐标:
- (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))
- )
但是,我使用了最大化显示。我相信这对坐标系做了一些改变,所以当我使用我开发的程序时会出错。当我在另一个没有缩放范围的图形上使用相同的程序时,我可以正常工作。我附上了这些图纸的剪断部分,我在这些图纸上绘制了道路路线的中心线。我正在努力找出问题所在。
|