本帖最后由 lingfne 于 2025-10-23 14:31 编辑
网友答:
这样吗
(defun c:tt (/ A DB X Y)
(setq a (getpoint "\n 请点选两个以上的点") db (list a))
(while (setq a (getpoint a))
(setq db (append db (list a)))
(mapcar '(lambda (x y) (grdraw x y 2 1)nil)
db (cdr db)
)
)
(redraw)
db
)网友答:
不这样的,打开附件就明白!网友答:
最好直接文字表达你的需求 那么长的代码 看起来比写代码还费力网友答: 直接用(ssget "f" pt01 pt02),再去掉重合就可以了网友答:
多谢指点!

问题已经解决!
- 如果用两次拉线取点,连续取点,取x值y值点,得出xy值点表。怎样并合操作?路过的前辈帮忙修改或指点一下!!

- (defun c:tt ()
- ;(setq space (yaling_Non_enclosed_space)) ;;点取四个角点
- (setq mp1 (getpoint "\n请选择第一点:") mp2 (getpoint mp1 "\n指定拉线方向:"))
- (Width_labeling mp1 mp2)
- ;(mapcar '(lambda (x) (+ x 3)) lmt)
- )
- (defun Width_labeling (mp1 mp2)
- (setq lcpmta (Get_Width_calculation mp1 mp2))
- (setq lcpmtb (Get_Heigh_calculation mp1 mp2))
- (setq minh (atoi (rtos (apply '+ lcpmta))))
- (setq ming (atoi (rtos (apply '+ lcpmtb))))
- (setq oo (append lmtbz lmtbz))
- (cond
- ((>= minh 0.1)
- (setq lmtbz (mapcar 'list (reverse (cdr (reverse lcpmta))) (cdr lcpmta)))
- (princ "\n水平求值")
- (princ)
- lmtbz
- )
- ((>= ming 0.1)
- (setq lmtbz (mapcar 'list (reverse (cdr (reverse lcpmtb))) (cdr lcpmtb)))
- (princ "\n垂直求值")
- (princ)
- lmtbz
- )
- )
- )
网友答:
这样吗
(defun c:tt (/ A DB X Y)
(setq a (getpoint "\n 请点选两个以上的点") db (list a))
(while (setq a (getpoint a))
(setq db (append db (list a)))
(mapcar '(lambda (x y) (grdraw x y 2 1)nil)
db (cdr db)
)
)
(redraw)
db
)网友答:
guosheyang 发表于 2025-10-23 14:55
这样吗
(defun c:tt (/ A DB X Y)
(setq a (getpoint "\n 请点选两个以上的点") db (list a))
不这样的,打开附件就明白!网友答:
lingfne 发表于 2025-10-23 15:29
不这样的,打开附件就明白!
最好直接文字表达你的需求 那么长的代码 看起来比写代码还费力网友答: 直接用(ssget "f" pt01 pt02),再去掉重合就可以了网友答:
binzi 发表于 2025-10-23 16:53
直接用(ssget "f" pt01 pt02),再去掉重合就可以了
多谢指点!


问题已经解决!