明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 320|回复: 2

getcorner函数输入模式输入坐标时候,必须区分正负号输入

[复制链接]
发表于 2024-2-4 11:30 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 wxa123wl 于 2024-2-4 11:30 编辑

右下角必须输入@69.2,-45.08

左上角度时:必须@-70.54,58.72


可以根据鼠标指示了的方向,确定正负号,不用再自己判断,直接就是    x,y的绝对值长度




 楼主| 发表于 2024-2-4 11:30 | 显示全部楼层


左下角:@-56.77,-37.92

左上角度时:必须@-70.54,58.72
回复

使用道具 举报

 楼主| 发表于 2024-2-7 17:35 | 显示全部楼层
(defun LS:Getcorner (pt1 msg / ang1 code dyn gr gr1 loop pt0 pt2 x-dist y-dist)
        (if msg
    (princ msg)
  )
        (setq dyn (getvar "DYNMODE"))
        (setvar "DYNMODE" 3)
        (setvar "DYNPROMPT" 1);;;动态输入
        (setvar "DYNPICOORDS" 0);;输入模式为相对坐标               
        (setq loop t );;退出grread标记
        (while loop
                (setq gr (grread t 15 0) code (car gr))                               
                ;(princ "\n当前坐标:" )               
                ;(princ gr )        是一个表list       
                (cond               
                        ((= code 5);鼠标移动
                                (setq pt0 (getcorner pt1 "\n输入坐标或点击终点:"));;;临时计算的的getcorner点
                                (setq loop nil)
                                ;(princ "\n终点坐标DYN:" )
                                (setq gr1 (grread t 15 0))       
                                ;(princ gr1 )                       
                                ;(princ "\n绘制图坐标PT2:" )
                                ;(princ pt0 )
                        )       
                )       
        )
        (setvar "DYNMODE" dyn)
        (setq ang1 (angle pt1 (cadr gr1)));;最后鼠标点和起点的坐标角度
        (setq X-dist (abs (-(car pt0) (car pt1))))
        (setq Y-dist (abs (-(cadr pt0) (cadr pt1))))
        (cond                
                ((AND (>= ang1 0) (<= ang1 (* 0.5 PI)));;0到90度
                        (setq pt2 (list (+(car pt1) X-dist) (+ (cadr pt1) Y-dist)))       
                )
                ((AND (> ang1 (* 0.5 PI)) (<= ang1 PI)) ;;90到180度
                        (setq pt2 (list (- (car pt1) X-dist) (+ (cadr pt1) Y-dist)))
                )
                ((AND (> ang1 pi) (<= ang1 (* 1.5 PI)));;180到270度
                        (setq pt2 (list (- (car pt1) X-dist) (- (cadr pt1) Y-dist)))
                )
                ((AND (> ang1 (* 1.5 PI)) (< ang1 (* 2.0 PI)));;270到360度
                        (setq pt2 (list (+ (car pt1) X-dist) (- (cadr pt1) Y-dist)))       
                )       
        )       
        pt2       
)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-17 21:54 , Processed in 0.229655 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表