明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1203|回复: 5

[讨论] grread的正交,功力不够,求大佬加持!!!

[复制链接]
发表于 2023-5-19 20:41:01 | 显示全部楼层 |阅读模式
本帖最后由 yaojing38 于 2023-5-19 20:46 编辑

事情是,,想获得选取文字后面会拉出一条跟随的正交直线,,,但是不太熟悉grread的高深,,感觉获得了PT点,,线也画出来了但是,文字却移动了十万八千里,,,有点蒙,,请有空大家帮看看!谢谢!代码实现了画不是正交的斜线。。。。感觉就差一步。。。。但又感觉还好远。。。。无奈!

  1. ;;-------------------------------------------------
  2. (defun c:tt ()
  3.   ;(setq pt0 (getpoint))
  4.   (setvar 'orthomode 1)
  5.   (setq a  (entsel))
  6.   (setq pt0 (cadr a))
  7.   (setq pt1 (cadr a))
  8.   (setq ty (car a) )
  9.   (setq enx (entget ty)
  10.       txtpp (textbox enx)
  11.     zg (cadr(cadr txtpp))
  12.    
  13.   )
  14.   (command "line" pt0)
  15.   (setq e(vlax-ename->vla-object ty))
  16.   (setq loop t)
  17.   (while loop
  18.     (setq gr (grread t 15 0))
  19.     (setq pt (trans (cadr gr) 1 0))
  20.    
  21.     (cond
  22.       
  23.       ;((equal gr '(2 15))    ;F8切换正交开关
  24.       ;      (if (= f8 0)
  25.       ;        (progn (setq f8 1) (princ "\n <正交 开>"))
  26.       ;        (progn (setq f8 0) (princ "\n <正交 关>"))
  27.       ;      )
  28.       ;      (setvar 'orthomode f8)
  29.       ;      (redraw)
  30.       ;    )
  31.       ((= 5 (car gr))
  32.         ;(vla-move e (vlax-3d-point pt0)(vlax-3d-point pt))
  33.         (vla-move e (vlax-3d-point pt0)(vlax-3d-point pt))
  34.         
  35.         (redraw)
  36.        (grdraw pt1 pt 255)
  37.         (setq pt0 pt)
  38.       )
  39.       ((or (= 3 (car gr)) (= 32 (cadr gr)))
  40.         (setq loop nil)
  41.         (setq pt (polar pt1  (angle pt1 pt) (- (distance pt1 pt) (/ zg 3))))
  42.         (command pt "")
  43.         (redraw)
  44.       )
  45.     )
  46.   )

  47.   
  48.   
  49.   
  50. )
  51. ;;-------------------------------------------------



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-5-19 23:23:07 | 显示全部楼层
第37行修改:(grdraw (list (car pt) (cadr pt1)) pt 1 8)
我测试文字没有飞,看你是否可能处在ucs下面,不是wcs需要坐标转换,不然文字会飞。
发表于 2023-5-19 23:57:15 | 显示全部楼层
grread 没有捕捉功能
发表于 2023-5-20 04:50:40 | 显示全部楼层
本帖最后由 linzenghuo 于 2023-5-20 22:10 编辑

过来看看
发表于 2023-5-20 08:27:38 来自手机 | 显示全部楼层
 楼主| 发表于 2023-5-20 13:00:47 | 显示全部楼层
谢谢1楼的帮助,写的有点乱总归实现了,,在前辈的代码基础上,给有需要的人。。。。

  1. ;;-------------------------------------------------
  2. (defun c:tt ( / a ang ang1 ang3 e enx gr loop pt pt0 pt1 pt11 txtpp ty zg)
  3.         (setvar 'orthomode 0)
  4.         (setq a  (entsel))
  5.         (setq pt0 (cadr a))
  6.         (setq pt1 (cadr a))
  7.         (setq ty (car a) )
  8.         (setq enx (entget ty)
  9.                   txtpp (textbox enx)
  10.                 zg (cadr(cadr txtpp))
  11.         )
  12.   (command "line" pt0)
  13.         (setq e(vlax-ename->vla-object ty))
  14.         (setq loop t)
  15.   (while loop
  16.     (setq gr (grread t 15 0))
  17.     (setq pt (trans (cadr gr) 1 0))
  18.         (cond
  19.                        
  20.                         ;((equal gr '(2 15))    ;F8切换正交开关
  21.                         ;                        (if (= f8 0)
  22.                         ;                                (progn (setq f8 1) (princ "\n <正交 开>"))
  23.                         ;                                (progn (setq f8 0) (princ "\n <正交 关>"))
  24.                         ;                        )
  25.                         ;                        (setvar 'orthomode f8)
  26.                         ;                        (redraw)
  27.                         ;                )
  28.       ((= 5 (car gr))
  29.                         (setq ang (atoi (angtos (angle pt1 pt))))
  30.                         (if(> ang 315)(setq ang (- 360 ang)))
  31.                         (cond ((and (< ang 45) (> ang -45))
  32.                   (setq pt (list (car pt) (cadr pt1)))
  33.                   )
  34.                   ((and (< ang 135) (> ang 45))
  35.                    (setq pt (list (car pt1) (cadr pt)))
  36.                   )
  37.                   ((and (< ang 225) (> ang 135))
  38.                    (setq pt (list (car pt) (cadr pt1)))
  39.                   )
  40.                   ((and (< ang 315) (> ang 225))
  41.                    (setq pt (list (car pt1) (cadr pt)))
  42.                   )
  43.             )
  44.                                 (vla-move e (vlax-3d-point pt0)(vlax-3d-point pt))
  45.                                 (redraw)
  46.                                 (grdraw pt1 pt 255)
  47.                                 (setq pt0 pt)
  48.       )
  49.       ((or (= 3 (car gr)) (= 32 (cadr gr)))
  50.         (setq loop nil)
  51.                                 (setq ang3 (rem (angle pt0 pt) (* 1 pi )))
  52.                                 (setq ang1 (rem (angle pt0 pt) (* 1 pi )))
  53.                        
  54.                                 (cond
  55.                                 ((and (< (car pt0) (car pt1)) )
  56.                
  57.                                 (setq ang1 (+ ang1 (* 0.5 pi)))
  58.                                 )
  59.                                 ((and (> (car pt0) (car pt1)) )
  60.                
  61.                                 (setq ang1 (- ang1 (* 0.5 pi)))
  62.                                 )
  63.                                 ((and  (> (cadr pt0) (cadr pt1)))
  64.                                
  65.                                 (setq ang1 (+ ang1 (* 0.5 pi)))
  66.                                 )
  67.                                 ((and  (< (cadr pt0) (cadr pt1)))
  68.                
  69.                                 (setq ang1 (- ang1 (* 0.5 pi)))
  70.                                 )

  71.                         )
  72.                                 (setq pt11 (polar pt1  ang1 (- (distance pt1 pt) (/ zg 2))))
  73.               (command pt11 "")
  74.                                 (redraw)
  75.       )
  76.     )
  77.   )
  78. )
  79. ;;-------------------------------------------------

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

本版积分规则

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

GMT+8, 2024-11-16 18:56 , Processed in 0.188345 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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